org.codehaus.groovy.classgen.asm

## Class InvocationWriter

- java.lang.Object
- - org.codehaus.groovy.classgen.asm.InvocationWriter

Direct Known Subclasses:
  InvokeDynamicWriter, StaticInvocationWriter

    public class InvocationWriter
    extends java.lang.Object

### Field Summary

Fields
`static MethodCaller` `castToVargsArray`
`static MethodCaller` `invokeClosureMethod`
`static MethodCallerMultiAdapter` `invokeMethod`
`static MethodCallerMultiAdapter` `invokeMethodOnCurrent`
`static MethodCallerMultiAdapter` `invokeMethodOnSuper`
`static MethodCallerMultiAdapter` `invokeStaticMethod`

### Constructor Summary

Constructors
Constructor and Description
`InvocationWriter(WriterController wc)`

### Method Summary

All Methods Static Methods Instance Methods Concrete Methods
`void` `castNonPrimitiveToBool(ClassNode last)`
`void` `castToNonPrimitiveIfNecessary(ClassNode sourceType, ClassNode targetType)` This converts sourceType to a non primitive by using Groovy casting.
`void` `coerce(ClassNode from, ClassNode target)`
`protected void` `finnishConstructorCall(ConstructorNode cn, java.lang.String ownerDescriptor, int argsToRemove)`
`protected java.lang.String` `getMethodName(Expression message)`
`protected void` `loadArguments(java.util.List<Expression> argumentList, Parameter[] para)`
`static ArgumentListExpression` `makeArgumentList(Expression arguments)`
`protected boolean` `makeCachedCall(Expression origin, ClassExpression sender, Expression receiver, Expression message, Expression arguments, MethodCallerMultiAdapter adapter, boolean safe, boolean spreadSafe, boolean implicitThis, boolean containsSpreadExpression)`
`protected void` `makeCall(Expression origin, ClassExpression sender, Expression receiver, Expression message, Expression arguments, MethodCallerMultiAdapter adapter, boolean safe, boolean spreadSafe, boolean implicitThis)`
`void` `makeCall(Expression origin, Expression receiver, Expression message, Expression arguments, MethodCallerMultiAdapter adapter, boolean safe, boolean spreadSafe, boolean implicitThis)`
`protected boolean` `makeClassForNameCall(Expression origin, Expression receiver, Expression message, Expression arguments)` if Class.forName(x) is recognized, make a direct method call
`protected boolean` `makeDirectCall(Expression origin, Expression receiver, Expression message, Expression arguments, MethodCallerMultiAdapter adapter, boolean implicitThis, boolean containsSpreadExpression)`
`void` `makeSingleArgumentCall(Expression receiver, java.lang.String message, Expression arguments)`
`protected void` `makeUncachedCall(Expression origin, ClassExpression sender, Expression receiver, Expression message, Expression arguments, MethodCallerMultiAdapter adapter, boolean safe, boolean spreadSafe, boolean implicitThis, boolean containsSpreadExpression)`
`protected java.lang.String` `prepareConstructorCall(ConstructorNode cn)`
`protected boolean` `writeAICCall(ConstructorCallExpression call)`
`protected boolean` `writeDirectMethodCall(MethodNode target, boolean implicitThis, Expression receiver, TupleExpression args)`
`void` `writeInvokeConstructor(ConstructorCallExpression call)`
`void` `writeInvokeMethod(MethodCallExpression call)`
`void` `writeInvokeStaticMethod(StaticMethodCallExpression call)`
`protected void` `writeNormalConstructorCall(ConstructorCallExpression call)`
`void` `writeSpecialConstructorCall(ConstructorCallExpression call)`

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Field Detail

#### invokeMethodOnCurrent

    public static final MethodCallerMultiAdapter invokeMethodOnCurrent

#### invokeMethodOnSuper

    public static final MethodCallerMultiAdapter invokeMethodOnSuper

#### invokeMethod

    public static final MethodCallerMultiAdapter invokeMethod

#### invokeStaticMethod

    public static final MethodCallerMultiAdapter invokeStaticMethod

#### invokeClosureMethod

    public static final MethodCaller invokeClosureMethod

#### castToVargsArray

    public static final MethodCaller castToVargsArray

### Constructor Detail

#### InvocationWriter

    public InvocationWriter(WriterController wc)

### Method Detail

#### makeCall

    public void makeCall(Expression origin,
                         Expression receiver,
                         Expression message,
                         Expression arguments,
                         MethodCallerMultiAdapter adapter,
                         boolean safe,
                         boolean spreadSafe,
                         boolean implicitThis)

#### writeDirectMethodCall

    protected boolean writeDirectMethodCall(MethodNode target,
                                            boolean implicitThis,
                                            Expression receiver,
                                            TupleExpression args)

#### loadArguments

    protected void loadArguments(java.util.List<Expression> argumentList,
                                 Parameter[] para)

#### makeDirectCall

    protected boolean makeDirectCall(Expression origin,
                                     Expression receiver,
                                     Expression message,
                                     Expression arguments,
                                     MethodCallerMultiAdapter adapter,
                                     boolean implicitThis,
                                     boolean containsSpreadExpression)

#### makeCachedCall

    protected boolean makeCachedCall(Expression origin,
                                     ClassExpression sender,
                                     Expression receiver,
                                     Expression message,
                                     Expression arguments,
                                     MethodCallerMultiAdapter adapter,
                                     boolean safe,
                                     boolean spreadSafe,
                                     boolean implicitThis,
                                     boolean containsSpreadExpression)

#### makeUncachedCall

    protected void makeUncachedCall(Expression origin,
                                    ClassExpression sender,
                                    Expression receiver,
                                    Expression message,
                                    Expression arguments,
                                    MethodCallerMultiAdapter adapter,
                                    boolean safe,
                                    boolean spreadSafe,
                                    boolean implicitThis,
                                    boolean containsSpreadExpression)

#### makeCall

    protected void makeCall(Expression origin,
                            ClassExpression sender,
                            Expression receiver,
                            Expression message,
                            Expression arguments,
                            MethodCallerMultiAdapter adapter,
                            boolean safe,
                            boolean spreadSafe,
                            boolean implicitThis)

#### makeClassForNameCall

    protected boolean makeClassForNameCall(Expression origin,
                                           Expression receiver,
                                           Expression message,
                                           Expression arguments)

if Class.forName(x) is recognized, make a direct method call

#### makeArgumentList

    public static ArgumentListExpression makeArgumentList(Expression arguments)

#### getMethodName

    protected java.lang.String getMethodName(Expression message)

#### writeInvokeMethod

    public void writeInvokeMethod(MethodCallExpression call)

#### writeInvokeStaticMethod

    public void writeInvokeStaticMethod(StaticMethodCallExpression call)

#### prepareConstructorCall

    protected java.lang.String prepareConstructorCall(ConstructorNode cn)

#### finnishConstructorCall

    protected void finnishConstructorCall(ConstructorNode cn,
                                          java.lang.String ownerDescriptor,
                                          int argsToRemove)

#### writeNormalConstructorCall

    protected void writeNormalConstructorCall(ConstructorCallExpression call)

#### writeInvokeConstructor

    public void writeInvokeConstructor(ConstructorCallExpression call)

#### writeAICCall

    protected boolean writeAICCall(ConstructorCallExpression call)

#### makeSingleArgumentCall

    public void makeSingleArgumentCall(Expression receiver,
                                       java.lang.String message,
                                       Expression arguments)

#### writeSpecialConstructorCall

    public void writeSpecialConstructorCall(ConstructorCallExpression call)

#### castToNonPrimitiveIfNecessary

    public void castToNonPrimitiveIfNecessary(ClassNode sourceType,
                                              ClassNode targetType)

This converts sourceType to a non primitive by using Groovy casting. sourceType might be a primitive This might be done using SBA#castToType

#### castNonPrimitiveToBool

    public void castNonPrimitiveToBool(ClassNode last)

#### coerce

    public void coerce(ClassNode from,
                       ClassNode target)