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 java.lang.Object
-
Field Summary
Fields Modifier and Type Field Description static MethodCallercastToVargsArrayprotected WriterControllercontrollerstatic MethodCallerinvokeClosureMethodstatic MethodCallerMultiAdapterinvokeMethodstatic MethodCallerMultiAdapterinvokeMethodOnCurrentstatic MethodCallerMultiAdapterinvokeMethodOnSuperstatic MethodCallerMultiAdapterinvokeStaticMethod -
Constructor Summary
Constructors Constructor Description InvocationWriter(WriterController controller) -
Method Summary
Modifier and Type Method Description voidcastNonPrimitiveToBool(ClassNode last)voidcastToNonPrimitiveIfNecessary(ClassNode sourceType, ClassNode targetType)Converts sourceType to a non primitive by using Groovy casting.voidcoerce(ClassNode from, ClassNode target)protected voidfinnishConstructorCall(ConstructorNode cn, java.lang.String ownerDescriptor, int argsToRemove)protected java.lang.StringgetMethodName(Expression message)protected voidloadArguments(java.util.List<Expression> argumentList, Parameter[] para)static ArgumentListExpressionmakeArgumentList(Expression arguments)protected booleanmakeCachedCall(Expression origin, ClassExpression sender, Expression receiver, Expression message, Expression arguments, MethodCallerMultiAdapter adapter, boolean safe, boolean spreadSafe, boolean implicitThis, boolean containsSpreadExpression)protected voidmakeCall(Expression origin, ClassExpression sender, Expression receiver, Expression message, Expression arguments, MethodCallerMultiAdapter adapter, boolean safe, boolean spreadSafe, boolean implicitThis)voidmakeCall(Expression origin, Expression receiver, Expression message, Expression arguments, MethodCallerMultiAdapter adapter, boolean safe, boolean spreadSafe, boolean implicitThis)protected booleanmakeClassForNameCall(Expression origin, Expression receiver, Expression message, Expression arguments)if Class.forName(x) is recognized, make a direct method callprotected booleanmakeDirectCall(Expression origin, Expression receiver, Expression message, Expression arguments, MethodCallerMultiAdapter adapter, boolean implicitThis, boolean containsSpreadExpression)voidmakeSingleArgumentCall(Expression receiver, java.lang.String message, Expression arguments)voidmakeSingleArgumentCall(Expression receiver, java.lang.String message, Expression arguments, boolean safe)protected voidmakeUncachedCall(Expression origin, ClassExpression sender, Expression receiver, Expression message, Expression arguments, MethodCallerMultiAdapter adapter, boolean safe, boolean spreadSafe, boolean implicitThis, boolean containsSpreadExpression)protected java.lang.StringprepareConstructorCall(ConstructorNode cn)protected booleanwriteAICCall(ConstructorCallExpression call)protected booleanwriteDirectMethodCall(MethodNode target, boolean implicitThis, Expression receiver, TupleExpression args)voidwriteInvokeConstructor(ConstructorCallExpression call)voidwriteInvokeMethod(MethodCallExpression call)voidwriteInvokeStaticMethod(StaticMethodCallExpression call)protected voidwriteNormalConstructorCall(ConstructorCallExpression call)voidwriteSpecialConstructorCall(ConstructorCallExpression call)Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Field Details
-
invokeMethodOnCurrent
-
invokeMethodOnSuper
-
invokeMethod
-
invokeStaticMethod
-
invokeClosureMethod
-
castToVargsArray
-
controller
-
-
Constructor Details
-
InvocationWriter
-
-
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
-
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
-
getMethodName
-
writeInvokeMethod
-
writeInvokeStaticMethod
-
prepareConstructorCall
-
finnishConstructorCall
protected void finnishConstructorCall(ConstructorNode cn, java.lang.String ownerDescriptor, int argsToRemove) -
writeNormalConstructorCall
-
writeInvokeConstructor
-
writeAICCall
-
makeSingleArgumentCall
public final void makeSingleArgumentCall(Expression receiver, java.lang.String message, Expression arguments) -
makeSingleArgumentCall
public void makeSingleArgumentCall(Expression receiver, java.lang.String message, Expression arguments, boolean safe) -
writeSpecialConstructorCall
-
castToNonPrimitiveIfNecessary
Converts sourceType to a non primitive by using Groovy casting. sourceType might be a primitive This might be done using SBA#castToType -
castNonPrimitiveToBool
-
coerce
-