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 final MethodCaller`
  `castToVargsArray`
  `protected final WriterController`
  `controller`
  `protected Expression`
  `currentCall`
  `static final MethodCaller`
  `invokeClosureMethod`
  Deprecated.
  `static final MethodCallerMultiAdapter`
  `invokeMethod`
  `static final MethodCallerMultiAdapter`
  `invokeMethodOnCurrent`
  `static final MethodCallerMultiAdapter`
  `invokeMethodOnSuper`
  `static final 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> arguments, Parameter[] parameters)`
  `static ArgumentListExpression`
  `makeArgumentList(Expression arguments)`
  Converts an expression to an argument list.
  `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)`
  `final 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

    @Deprecated(since="5.0.0") public static final MethodCaller invokeClosureMethod
    Deprecated.

  - ### castToVargsArray

    public static final MethodCaller castToVargsArray

  - ### controller

    protected final WriterController controller

  - ### currentCall

    protected Expression currentCall

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

  - ### makeCall

    protected void makeCall(Expression origin, ClassExpression sender, 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> arguments, Parameter[] parameters)

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

  - ### 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)
    Converts an expression to an argument list.
    Returns:
      `arguments` if already an argument list or an argument list of the expression or expressions (in case of a tuple expression).
    Since:
      2.0.0

  - ### getMethodName

    protected String getMethodName(Expression message)

  - ### writeInvokeMethod

    public void writeInvokeMethod(MethodCallExpression call)

  - ### writeInvokeStaticMethod

    public void writeInvokeStaticMethod(StaticMethodCallExpression call)

  - ### writeInvokeConstructor

    public void writeInvokeConstructor(ConstructorCallExpression call)

  - ### prepareConstructorCall

    protected String prepareConstructorCall(ConstructorNode cn)

  - ### finnishConstructorCall

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

  - ### writeNormalConstructorCall

    protected void writeNormalConstructorCall(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)