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

public Class InvocationWriter

extends Object
Class Inheritance
Known Direct Subclasses
org.codehaus.groovy.classgen.asm.indy.InvokeDynamicWriter, org.codehaus.groovy.classgen.asm.sc.StaticInvocationWriter
Imports
org.apache.groovy.ast.tools.ExpressionUtils, org.codehaus.groovy.ast.ClassHelper, .ClassNode, .ConstructorNode, .FieldNode, .GroovyCodeVisitor, .MethodNode, .Parameter, org.codehaus.groovy.ast.expr.ArgumentListExpression, .ArrayExpression, .AttributeExpression, .BinaryExpression, .BitwiseNegationExpression, .BooleanExpression, .CastExpression, .ClassExpression, .ClosureExpression, .ClosureListExpression, .ConstantExpression, .ConstructorCallExpression, .DeclarationExpression, .ElvisOperatorExpression, .EmptyExpression, .Expression, .FieldExpression, .GStringExpression, .LambdaExpression, .ListExpression, .MapEntryExpression, .MapExpression, .MethodCallExpression, .MethodPointerExpression, .MethodReferenceExpression, .NotExpression, .PostfixExpression, .PrefixExpression, .PropertyExpression, .RangeExpression, .SpreadExpression, .SpreadMapExpression, .StaticMethodCallExpression, .TernaryExpression, .TupleExpression, .UnaryMinusExpression, .UnaryPlusExpression, .VariableExpression, org.codehaus.groovy.ast.stmt.AssertStatement, .BlockStatement, .BreakStatement, .CaseStatement, .CatchStatement, .ContinueStatement, .DoWhileStatement, .EmptyStatement, .ExpressionStatement, .ForStatement, .IfStatement, .ReturnStatement, .SwitchStatement, .SynchronizedStatement, .ThrowStatement, .TryCatchStatement, .WhileStatement, org.codehaus.groovy.ast.tools.WideningCategories, org.codehaus.groovy.classgen.AsmClassGenerator, .BytecodeExpression, org.codehaus.groovy.runtime.ScriptBytecodeAdapter, org.codehaus.groovy.runtime.typehandling.DefaultTypeTransformation, .ShortTypeHandling, org.codehaus.groovy.syntax.SyntaxException, org.codehaus.groovy.transform.stc.ExtensionMethodNode, org.objectweb.asm.Label, .MethodVisitor, java.util.ArrayList, .Iterator, .LinkedList, .List, .TreeMap

Field Summary

Modifier and TypeField and Description
private static final MethodCaller
private static final MethodCaller
private static final MethodCaller
private static final MethodCaller
private static final MethodCaller
public static final MethodCaller
private static final MethodNode
protected final WriterController
public static final MethodCaller
public static final MethodCallerMultiAdapter
public static final MethodCallerMultiAdapter
public static final MethodCallerMultiAdapter
public static final MethodCallerMultiAdapter
private static final MethodCaller

Constructor Summary

AccessConstructor and Description
public

Method Summary

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

Converts sourceType to a non primitive by using Groovy casting.

public void
coerce(final ClassNode from, final ClassNode target)

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

private static ConstructorNode
getMatchingConstructor(final List<ConstructorNode> constructors, final List<Expression> argumentList)

protected String
getMethodName(final Expression message)

private void
invokeClosure(final Expression arguments, final String methodName)

private boolean
private static boolean
private boolean
private static boolean
isThis(final Expression expression)

Supplements isThisExpression with the ability to see into CheckcastReceiverExpression.

private boolean
lastIsArray(final List<Expression> argumentList, final int pos)

private static void
loadAndCastElement(final OperandStack operandStack, final MethodVisitor mv, final Parameter[] parameters, final int p)

protected void
loadArguments(final List<Expression> argumentList, final Parameter[] para)

private void
public static ArgumentListExpression
makeArgumentList(final 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)

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

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

protected boolean
makeClassForNameCall(final Expression origin, final Expression receiver, final Expression message, final 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)

private boolean
makeDirectConstructorCall(final List<ConstructorNode> constructors, final ConstructorCallExpression call, final ClassNode callNode)

private void
makeMOPBasedConstructorCall(final List<ConstructorNode> constructors, final ConstructorCallExpression call, final ClassNode callNode)

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

public void
makeSingleArgumentCall(final Expression receiver, final String message, final Expression arguments, final 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
private static List<ConstructorNode>
private static MethodCallExpression
private void
protected boolean
private boolean
protected boolean
writeDirectMethodCall(final MethodNode target, final boolean implicitThis, final Expression receiver, final TupleExpression args)

public void
public void
public void
protected void
public void
Inherited from java.lang.Object:
cloneequalsfinalizegetClasshashCodenotifynotifyAlltoStringwaitwaitwait

Field Detail

asTypeMethodback to summary
private static final MethodCaller asTypeMethod
castToClassMethodback to summary
private static final MethodCaller castToClassMethod
castToEnumMethodback to summary
private static final MethodCaller castToEnumMethod
castToStringMethodback to summary
private static final MethodCaller castToStringMethod
castToTypeMethodback to summary
private static final MethodCaller castToTypeMethod
castToVargsArrayback to summary
public static final MethodCaller castToVargsArray
CLASS_FOR_NAME_STRINGback to summary
private static final MethodNode CLASS_FOR_NAME_STRING
controllerback to summary
protected final WriterController controller
invokeClosureMethodback to summary
public static final MethodCaller invokeClosureMethod
invokeMethodback to summary
public static final MethodCallerMultiAdapter invokeMethod
invokeMethodOnCurrentback to summary
public static final MethodCallerMultiAdapter invokeMethodOnCurrent
invokeMethodOnSuperback to summary
public static final MethodCallerMultiAdapter invokeMethodOnSuper
invokeStaticMethodback to summary
public static final MethodCallerMultiAdapter invokeStaticMethod
selectConstructorAndTransformArgumentsback to summary
private static final MethodCaller selectConstructorAndTransformArguments

Constructor Detail

InvocationWriterback to summary
public InvocationWriter(final WriterController controller)

Method Detail

castNonPrimitiveToBoolback to summary
public void castNonPrimitiveToBool(final ClassNode last)
castToNonPrimitiveIfNecessaryback to summary
public void castToNonPrimitiveIfNecessary(final ClassNode sourceType, final ClassNode targetType)

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

coerceback to summary
public void coerce(final ClassNode from, final ClassNode target)
finnishConstructorCallback to summary
protected void finnishConstructorCall(final ConstructorNode cn, final String ownerDescriptor, final int argsToRemove)
getMatchingConstructorback to summary
private static ConstructorNode getMatchingConstructor(final List<ConstructorNode> constructors, final List<Expression> argumentList)
getMethodNameback to summary
protected String getMethodName(final Expression message)
invokeClosureback to summary
private void invokeClosure(final Expression arguments, final String methodName)
isClosureCallback to summary
private boolean isClosureCall(final MethodCallExpression call)
isFunctionInterfaceCallback to summary
private static boolean isFunctionInterfaceCall(final MethodCallExpression call)
isStaticInvocationback to summary
private boolean isStaticInvocation(final MethodCallExpression call)
isThisback to summary
private static boolean isThis(final Expression expression)

Supplements isThisExpression with the ability to see into CheckcastReceiverExpression.

lastIsArrayback to summary
private boolean lastIsArray(final List<Expression> argumentList, final int pos)
loadAndCastElementback to summary
private static void loadAndCastElement(final OperandStack operandStack, final MethodVisitor mv, final Parameter[] parameters, final int p)
loadArgumentsback to summary
protected void loadArguments(final List<Expression> argumentList, final Parameter[] para)
loadVariableWithReferenceback to summary
private void loadVariableWithReference(final VariableExpression var)
makeArgumentListback to summary
public static ArgumentListExpression makeArgumentList(final Expression arguments)
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)
makeCallback to summary
public void makeCall(final Expression origin, final Expression receiver, final Expression message, final Expression arguments, final MethodCallerMultiAdapter adapter, boolean safe, final boolean spreadSafe, boolean implicitThis)
makeCallback to summary
protected void makeCall(Expression origin, ClassExpression sender, Expression receiver, Expression message, Expression arguments, MethodCallerMultiAdapter adapter, boolean safe, boolean spreadSafe, boolean implicitThis)
makeClassForNameCallback to summary
protected boolean makeClassForNameCall(final Expression origin, final Expression receiver, final Expression message, final Expression arguments)

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

makeDirectCallback to summary
protected boolean makeDirectCall(Expression origin, Expression receiver, Expression message, Expression arguments, MethodCallerMultiAdapter adapter, boolean implicitThis, boolean containsSpreadExpression)
makeDirectConstructorCallback to summary
private boolean makeDirectConstructorCall(final List<ConstructorNode> constructors, final ConstructorCallExpression call, final ClassNode callNode)
makeMOPBasedConstructorCallback to summary
private void makeMOPBasedConstructorCall(final List<ConstructorNode> constructors, final ConstructorCallExpression call, final ClassNode callNode)
makeSingleArgumentCallback to summary
public final void makeSingleArgumentCall(final Expression receiver, final String message, final Expression arguments)
makeSingleArgumentCallback to summary
public void makeSingleArgumentCall(final Expression receiver, final String message, final Expression arguments, final boolean safe)
makeUncachedCallback to summary
protected void makeUncachedCall(Expression origin, ClassExpression sender, Expression receiver, Expression message, Expression arguments, MethodCallerMultiAdapter adapter, boolean safe, boolean spreadSafe, boolean implicitThis, boolean containsSpreadExpression)
prepareConstructorCallback to summary
protected String prepareConstructorCall(final ConstructorNode cn)
sortConstructorsback to summary
private static List<ConstructorNode> sortConstructors(final ConstructorCallExpression call, final ClassNode callNode)
transformToRealMethodCallback to summary
private static MethodCallExpression transformToRealMethodCall(MethodCallExpression call)
visitSpecialConstructorCallback to summary
private void visitSpecialConstructorCall(final ConstructorCallExpression call)
writeAICCallback to summary
protected boolean writeAICCall(final ConstructorCallExpression call)
writeDirectConstructorCallback to summary
private boolean writeDirectConstructorCall(final ConstructorCallExpression call)
writeDirectMethodCallback to summary
protected boolean writeDirectMethodCall(final MethodNode target, final boolean implicitThis, final Expression receiver, final TupleExpression args)
writeInvokeConstructorback to summary
public void writeInvokeConstructor(final ConstructorCallExpression call)
writeInvokeMethodback to summary
public void writeInvokeMethod(MethodCallExpression call)
writeInvokeStaticMethodback to summary
public void writeInvokeStaticMethod(final StaticMethodCallExpression call)
writeNormalConstructorCallback to summary
protected void writeNormalConstructorCall(final ConstructorCallExpression call)
writeSpecialConstructorCallback to summary
public void writeSpecialConstructorCall(final ConstructorCallExpression call)