Top Description Fields Constructors Methods
org.codehaus.groovy.classgen.asm.indy

public Class InvokeDynamicWriter

extends InvocationWriter
Class Inheritance
Imports
org.codehaus.groovy.ast.ClassHelper, .ClassNode, org.codehaus.groovy.ast.expr.ArgumentListExpression, .CastExpression, .ClassExpression, .ConstantExpression, .ConstructorCallExpression, .EmptyExpression, .Expression, org.codehaus.groovy.ast.tools.WideningCategories, org.codehaus.groovy.classgen.AsmClassGenerator, org.codehaus.groovy.classgen.asm.BytecodeHelper, .CompileStack, .InvocationWriter, .MethodCallerMultiAdapter, .OperandStack, .WriterController, org.codehaus.groovy.runtime.wrappers.Wrapper, org.codehaus.groovy.vmplugin.v8.IndyInterface, org.objectweb.asm.Handle, java.lang.invoke.CallSite, .MethodHandles.Lookup, .MethodType

This Writer is used to generate the call invocation byte codes for usage by invokedynamic.

Field Summary

Modifier and TypeField and Description
private static final Handle
private static final String
private final WriterController
private static final String
Inherited from org.codehaus.groovy.classgen.asm.InvocationWriter:
castToVargsArrayinvokeClosureMethodinvokeMethodinvokeMethodOnCurrentinvokeMethodOnSuperinvokeStaticMethod

Constructor Summary

AccessConstructor and Description
public

Method Summary

Modifier and TypeMethod and Description
public void
public void
castToNonPrimitiveIfNecessary(ClassNode sourceType, ClassNode targetType)

Overrides org.codehaus.groovy.classgen.asm.InvocationWriter.castToNonPrimitiveIfNecessary.

Converts sourceType to a non primitive by using Groovy casting.
public void
private void
finishIndyCall(Handle bsmHandle, String methodName, String sig, int numberOfArguments, Object... bsmArgs)

private static int
getMethodCallFlags(MethodCallerMultiAdapter adapter, boolean safe, boolean spread)

private static int
getPropertyFlags(boolean safe, boolean implicitThis, boolean groovyObject)

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

Overrides org.codehaus.groovy.classgen.asm.InvocationWriter.makeCachedCall.

private void
makeIndyCall(MethodCallerMultiAdapter adapter, Expression receiver, boolean implicitThis, boolean safe, String methodName, Expression arguments)

public void
private String
prepareIndyCall(Expression receiver, boolean implicitThis)

protected void
writeGetProperty(Expression receiver, String propertyName, boolean safe, boolean implicitThis, boolean groovyObject)

private void
writeIndyCast(ClassNode sourceType, ClassNode targetType)

protected void
Inherited from org.codehaus.groovy.classgen.asm.InvocationWriter:
finnishConstructorCallgetMethodNameloadArgumentsmakeArgumentListmakeCallmakeCallmakeClassForNameCallmakeDirectCallmakeSingleArgumentCallmakeUncachedCallprepareConstructorCallwriteAICCallwriteDirectMethodCallwriteInvokeConstructorwriteInvokeMethodwriteInvokeStaticMethodwriteSpecialConstructorCall

Field Detail

BSMback to summary
private static final Handle BSM
BSM_METHOD_TYPE_DESCRIPTORback to summary
private static final String BSM_METHOD_TYPE_DESCRIPTOR
controllerback to summary
private final WriterController controller

Hides org.codehaus.groovy.classgen.asm.InvocationWriter.controller.

INDY_INTERFACE_NAMEback to summary
private static final String INDY_INTERFACE_NAME

Constructor Detail

InvokeDynamicWriterback to summary
public InvokeDynamicWriter(WriterController wc)

Method Detail

castNonPrimitiveToBoolback to summary
public void castNonPrimitiveToBool(ClassNode sourceType)

Overrides org.codehaus.groovy.classgen.asm.InvocationWriter.castNonPrimitiveToBool.

Annotations
@Override
castToNonPrimitiveIfNecessaryback to summary
public void castToNonPrimitiveIfNecessary(ClassNode sourceType, ClassNode targetType)

Overrides org.codehaus.groovy.classgen.asm.InvocationWriter.castToNonPrimitiveIfNecessary.

Doc from org.codehaus.groovy.classgen.asm.InvocationWriter.castToNonPrimitiveIfNecessary.

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

Annotations
@Override
coerceback to summary
public void coerce(ClassNode from, ClassNode target)

Overrides org.codehaus.groovy.classgen.asm.InvocationWriter.coerce.

Annotations
@Override
finishIndyCallback to summary
private void finishIndyCall(Handle bsmHandle, String methodName, String sig, int numberOfArguments, Object... bsmArgs)
getMethodCallFlagsback to summary
private static int getMethodCallFlags(MethodCallerMultiAdapter adapter, boolean safe, boolean spread)
getPropertyFlagsback to summary
private static int getPropertyFlags(boolean safe, boolean implicitThis, boolean groovyObject)
makeCachedCallback to summary
protected boolean makeCachedCall(Expression origin, ClassExpression sender, Expression receiver, Expression message, Expression arguments, MethodCallerMultiAdapter adapter, boolean safe, boolean spreadSafe, boolean implicitThis, boolean containsSpreadExpression)

Overrides org.codehaus.groovy.classgen.asm.InvocationWriter.makeCachedCall.

Annotations
@Override
makeIndyCallback to summary
private void makeIndyCall(MethodCallerMultiAdapter adapter, Expression receiver, boolean implicitThis, boolean safe, String methodName, Expression arguments)
makeSingleArgumentCallback to summary
public void makeSingleArgumentCall(Expression receiver, String message, Expression arguments, boolean safe)

Overrides org.codehaus.groovy.classgen.asm.InvocationWriter.makeSingleArgumentCall.

Annotations
@Override
prepareIndyCallback to summary
private String prepareIndyCall(Expression receiver, boolean implicitThis)
writeGetPropertyback to summary
protected void writeGetProperty(Expression receiver, String propertyName, boolean safe, boolean implicitThis, boolean groovyObject)
writeIndyCastback to summary
private void writeIndyCast(ClassNode sourceType, ClassNode targetType)
writeNormalConstructorCallback to summary
protected void writeNormalConstructorCall(ConstructorCallExpression call)

Overrides org.codehaus.groovy.classgen.asm.InvocationWriter.writeNormalConstructorCall.

Annotations
@Override