Package 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 Object

- ## Field Summary

  Fields
  Modifier and Type | Field | Description
  --- | --- | ---
  `static MethodCaller` | `castToVargsArray` |
  `protected WriterController` | `controller` |
  `static MethodCaller` | `invokeClosureMethod` |
  `static MethodCallerMultiAdapter` | `invokeMethod` |
  `static MethodCallerMultiAdapter` | `invokeMethodOnCurrent` |
  `static MethodCallerMultiAdapter` | `invokeMethodOnSuper` |
  `static MethodCallerMultiAdapter` | `invokeStaticMethod` |

- ## Constructor Summary

  Constructors
  Constructor | Description
  --- | ---
  `InvocationWriter​(WriterController controller)` |

- ## Method Summary

  Modifier and Type | Method | Description
  --- | --- | ---
  `void` | `castNonPrimitiveToBool​(ClassNode last)` |
  `void` | `castToNonPrimitiveIfNecessary​(ClassNode sourceType, ClassNode targetType)` | Converts sourceType to a non primitive by using Groovy casting.
  `void` | `coerce​(ClassNode from, ClassNode target)` |
  `protected void` | `finnishConstructorCall​(ConstructorNode cn, String ownerDescriptor, int argsToRemove)` |
  `protected String` | `getMethodName​(Expression message)` |
  `protected void` | `loadArguments​(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, String message, Expression arguments)` |
  `void` | `makeSingleArgumentCall​(Expression receiver, String message, Expression arguments, boolean safe)` |
  `protected void` | `makeUncachedCall​(Expression origin, ClassExpression sender, Expression receiver, Expression message, Expression arguments, MethodCallerMultiAdapter adapter, boolean safe, boolean spreadSafe, boolean implicitThis, boolean containsSpreadExpression)` |
  `protected 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 Details

  - ### 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

  - ### controller

    protected final WriterController controller

- ## Constructor Details

  - ### InvocationWriter

    public InvocationWriter​(WriterController controller)

- ## Method Details

  - ### 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​(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 String getMethodName​(Expression message)

  - ### writeInvokeMethod

    public void writeInvokeMethod​(MethodCallExpression call)

  - ### writeInvokeStaticMethod

    public void writeInvokeStaticMethod​(StaticMethodCallExpression call)

  - ### prepareConstructorCall

    protected String prepareConstructorCall​(ConstructorNode cn)

  - ### finnishConstructorCall

    protected void finnishConstructorCall​(ConstructorNode cn, String ownerDescriptor, int argsToRemove)

  - ### writeNormalConstructorCall

    protected void writeNormalConstructorCall​(ConstructorCallExpression call)

  - ### writeInvokeConstructor

    public void writeInvokeConstructor​(ConstructorCallExpression call)

  - ### writeAICCall

    protected boolean writeAICCall​(ConstructorCallExpression call)

  - ### makeSingleArgumentCall

    public final void makeSingleArgumentCall​(Expression receiver, String message, Expression arguments)

  - ### makeSingleArgumentCall

    public void makeSingleArgumentCall​(Expression receiver, String message, Expression arguments, boolean safe)

  - ### writeSpecialConstructorCall

    public void writeSpecialConstructorCall​(ConstructorCallExpression call)

  - ### castToNonPrimitiveIfNecessary

    public void castToNonPrimitiveIfNecessary​(ClassNode sourceType, ClassNode targetType)
    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)