Package org.codehaus.groovy.classgen
Class AsmClassGenerator
- java.lang.Object
 - 
- org.codehaus.groovy.ast.CodeVisitorSupport
 - 
- org.codehaus.groovy.ast.ClassCodeVisitorSupport
 - 
- org.codehaus.groovy.classgen.ClassGenerator
 - 
- org.codehaus.groovy.classgen.AsmClassGenerator
 
 
 
 
 
- 
- All Implemented Interfaces:
 GroovyClassVisitor,GroovyCodeVisitor,ErrorCollecting,org.objectweb.asm.Opcodes
public class AsmClassGenerator extends ClassGenerator
Generates Java class versions of Groovy classes using ASM. 
- 
- 
Field Summary
Fields Modifier and Type Field Description static booleanASM_DEBUGstatic booleanCREATE_DEBUG_INFOstatic booleanCREATE_LINE_NUMBER_INFOstatic MethodCallerMultiAdaptergetFieldstatic MethodCallerMultiAdaptergetGroovyObjectFieldstatic StringMINIMUM_BYTECODE_VERSIONstatic MethodCallerMultiAdaptersetFieldstatic MethodCallerMultiAdaptersetGroovyObjectFieldstatic MethodCallerMultiAdaptersetProperty- 
Fields inherited from class org.codehaus.groovy.classgen.ClassGenerator
innerClasses 
- 
Fields inherited from interface org.objectweb.asm.Opcodes
AALOAD, AASTORE, ACC_ABSTRACT, ACC_ANNOTATION, ACC_BRIDGE, ACC_DEPRECATED, ACC_ENUM, ACC_FINAL, ACC_INTERFACE, ACC_MANDATED, ACC_MODULE, ACC_NATIVE, ACC_OPEN, ACC_PRIVATE, ACC_PROTECTED, ACC_PUBLIC, ACC_RECORD, ACC_STATIC, ACC_STATIC_PHASE, ACC_STRICT, ACC_SUPER, ACC_SYNCHRONIZED, ACC_SYNTHETIC, ACC_TRANSIENT, ACC_TRANSITIVE, ACC_VARARGS, ACC_VOLATILE, ACONST_NULL, ALOAD, ANEWARRAY, ARETURN, ARRAYLENGTH, ASM4, ASM5, ASM6, ASM7, ASM8, ASM9_EXPERIMENTAL, ASTORE, ATHROW, BALOAD, BASTORE, BIPUSH, CALOAD, CASTORE, CHECKCAST, D2F, D2I, D2L, DADD, DALOAD, DASTORE, DCMPG, DCMPL, DCONST_0, DCONST_1, DDIV, DLOAD, DMUL, DNEG, DOUBLE, DREM, DRETURN, DSTORE, DSUB, DUP, DUP_X1, DUP_X2, DUP2, DUP2_X1, DUP2_X2, F_APPEND, F_CHOP, F_FULL, F_NEW, F_SAME, F_SAME1, F2D, F2I, F2L, FADD, FALOAD, FASTORE, FCMPG, FCMPL, FCONST_0, FCONST_1, FCONST_2, FDIV, FLOAD, FLOAT, FMUL, FNEG, FREM, FRETURN, FSTORE, FSUB, GETFIELD, GETSTATIC, GOTO, H_GETFIELD, H_GETSTATIC, H_INVOKEINTERFACE, H_INVOKESPECIAL, H_INVOKESTATIC, H_INVOKEVIRTUAL, H_NEWINVOKESPECIAL, H_PUTFIELD, H_PUTSTATIC, I2B, I2C, I2D, I2F, I2L, I2S, IADD, IALOAD, IAND, IASTORE, ICONST_0, ICONST_1, ICONST_2, ICONST_3, ICONST_4, ICONST_5, ICONST_M1, IDIV, IF_ACMPEQ, IF_ACMPNE, IF_ICMPEQ, IF_ICMPGE, IF_ICMPGT, IF_ICMPLE, IF_ICMPLT, IF_ICMPNE, IFEQ, IFGE, IFGT, IFLE, IFLT, IFNE, IFNONNULL, IFNULL, IINC, ILOAD, IMUL, INEG, INSTANCEOF, INTEGER, INVOKEDYNAMIC, INVOKEINTERFACE, INVOKESPECIAL, INVOKESTATIC, INVOKEVIRTUAL, IOR, IREM, IRETURN, ISHL, ISHR, ISTORE, ISUB, IUSHR, IXOR, JSR, L2D, L2F, L2I, LADD, LALOAD, LAND, LASTORE, LCMP, LCONST_0, LCONST_1, LDC, LDIV, LLOAD, LMUL, LNEG, LONG, LOOKUPSWITCH, LOR, LREM, LRETURN, LSHL, LSHR, LSTORE, LSUB, LUSHR, LXOR, MONITORENTER, MONITOREXIT, MULTIANEWARRAY, NEW, NEWARRAY, NOP, NULL, POP, POP2, PUTFIELD, PUTSTATIC, RET, RETURN, SALOAD, SASTORE, SIPUSH, SOURCE_DEPRECATED, SOURCE_MASK, SWAP, T_BOOLEAN, T_BYTE, T_CHAR, T_DOUBLE, T_FLOAT, T_INT, T_LONG, T_SHORT, TABLESWITCH, TOP, UNINITIALIZED_THIS, V_PREVIEW, V1_1, V1_2, V1_3, V1_4, V1_5, V1_6, V1_7, V1_8, V10, V11, V12, V13, V14, V15, V9 
 - 
 
- 
Constructor Summary
Constructors Constructor Description AsmClassGenerator(SourceUnit source, GeneratorContext context, org.objectweb.asm.ClassVisitor classVisitor, String sourceFile) 
- 
Method Summary
- 
Methods inherited from class org.codehaus.groovy.classgen.ClassGenerator
getInnerClasses 
- 
Methods inherited from class org.codehaus.groovy.ast.ClassCodeVisitorSupport
addError, visitAnnotation, visitClassCodeContainer, visitImports, visitObjectInitializerStatements, visitPackage 
- 
Methods inherited from class org.codehaus.groovy.ast.CodeVisitorSupport
afterSwitchConditionExpressionVisited, visitEmptyStatement, visitShortTernaryExpression 
- 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait 
- 
Methods inherited from interface org.codehaus.groovy.ast.GroovyCodeVisitor
visitEmptyExpression, visitListOfExpressions 
 - 
 
 - 
 
- 
- 
Field Detail
- 
setField
public static final MethodCallerMultiAdapter setField
 
- 
getField
public static final MethodCallerMultiAdapter getField
 
- 
setGroovyObjectField
public static final MethodCallerMultiAdapter setGroovyObjectField
 
- 
getGroovyObjectField
public static final MethodCallerMultiAdapter getGroovyObjectField
 
- 
setProperty
public static final MethodCallerMultiAdapter setProperty
 
- 
CREATE_DEBUG_INFO
public static final boolean CREATE_DEBUG_INFO
- See Also:
 - Constant Field Values
 
 
- 
CREATE_LINE_NUMBER_INFO
public static final boolean CREATE_LINE_NUMBER_INFO
- See Also:
 - Constant Field Values
 
 
- 
ASM_DEBUG
public static final boolean ASM_DEBUG
- See Also:
 - Constant Field Values
 
 
- 
MINIMUM_BYTECODE_VERSION
public static final String MINIMUM_BYTECODE_VERSION
- See Also:
 - Constant Field Values
 
 
 - 
 
- 
Constructor Detail
- 
AsmClassGenerator
public AsmClassGenerator(SourceUnit source, GeneratorContext context, org.objectweb.asm.ClassVisitor classVisitor, String sourceFile)
 
 - 
 
- 
Method Detail
- 
getSourceUnit
public SourceUnit getSourceUnit()
- Overrides:
 getSourceUnitin classClassGenerator
 
- 
getController
public WriterController getController()
 
- 
visitClass
public void visitClass(ClassNode classNode)
Description copied from interface:GroovyClassVisitorVisit a ClassNode.- Specified by:
 visitClassin interfaceGroovyClassVisitor- Overrides:
 visitClassin classClassCodeVisitorSupport
 
- 
visitConstructorOrMethod
protected void visitConstructorOrMethod(MethodNode node, boolean isConstructor)
- Overrides:
 visitConstructorOrMethodin classClassCodeVisitorSupport
 
- 
visitConstructor
public void visitConstructor(ConstructorNode node)
Description copied from interface:GroovyClassVisitorVisit a ConstructorNode.- Specified by:
 visitConstructorin interfaceGroovyClassVisitor- Overrides:
 visitConstructorin classClassCodeVisitorSupport
 
- 
visitMethod
public void visitMethod(MethodNode node)
Description copied from interface:GroovyClassVisitorVisit a MethodNode.- Specified by:
 visitMethodin interfaceGroovyClassVisitor- Overrides:
 visitMethodin classClassCodeVisitorSupport
 
- 
visitField
public void visitField(FieldNode fieldNode)
Description copied from interface:GroovyClassVisitorVisit a FieldNode.- Specified by:
 visitFieldin interfaceGroovyClassVisitor- Overrides:
 visitFieldin classClassCodeVisitorSupport
 
- 
visitProperty
public void visitProperty(PropertyNode statement)
Description copied from interface:GroovyClassVisitorVisit a PropertyNode.- Specified by:
 visitPropertyin interfaceGroovyClassVisitor- Overrides:
 visitPropertyin classClassCodeVisitorSupport
 
- 
visitStatement
protected void visitStatement(Statement statement)
- Overrides:
 visitStatementin classClassCodeVisitorSupport
 
- 
visitCatchStatement
public void visitCatchStatement(CatchStatement statement)
- Specified by:
 visitCatchStatementin interfaceGroovyCodeVisitor- Overrides:
 visitCatchStatementin classClassCodeVisitorSupport
 
- 
visitBlockStatement
public void visitBlockStatement(BlockStatement statement)
- Specified by:
 visitBlockStatementin interfaceGroovyCodeVisitor- Overrides:
 visitBlockStatementin classClassCodeVisitorSupport
 
- 
visitForLoop
public void visitForLoop(ForStatement statement)
- Specified by:
 visitForLoopin interfaceGroovyCodeVisitor- Overrides:
 visitForLoopin classClassCodeVisitorSupport
 
- 
visitWhileLoop
public void visitWhileLoop(WhileStatement statement)
- Specified by:
 visitWhileLoopin interfaceGroovyCodeVisitor- Overrides:
 visitWhileLoopin classClassCodeVisitorSupport
 
- 
visitDoWhileLoop
public void visitDoWhileLoop(DoWhileStatement statement)
- Specified by:
 visitDoWhileLoopin interfaceGroovyCodeVisitor- Overrides:
 visitDoWhileLoopin classClassCodeVisitorSupport
 
- 
visitIfElse
public void visitIfElse(IfStatement statement)
- Specified by:
 visitIfElsein interfaceGroovyCodeVisitor- Overrides:
 visitIfElsein classClassCodeVisitorSupport
 
- 
visitAssertStatement
public void visitAssertStatement(AssertStatement statement)
- Specified by:
 visitAssertStatementin interfaceGroovyCodeVisitor- Overrides:
 visitAssertStatementin classClassCodeVisitorSupport
 
- 
visitTryCatchFinally
public void visitTryCatchFinally(TryCatchStatement statement)
- Specified by:
 visitTryCatchFinallyin interfaceGroovyCodeVisitor- Overrides:
 visitTryCatchFinallyin classClassCodeVisitorSupport
 
- 
visitSwitch
public void visitSwitch(SwitchStatement statement)
- Specified by:
 visitSwitchin interfaceGroovyCodeVisitor- Overrides:
 visitSwitchin classClassCodeVisitorSupport
 
- 
visitCaseStatement
public void visitCaseStatement(CaseStatement statement)
- Specified by:
 visitCaseStatementin interfaceGroovyCodeVisitor- Overrides:
 visitCaseStatementin classClassCodeVisitorSupport
 
- 
visitBreakStatement
public void visitBreakStatement(BreakStatement statement)
- Specified by:
 visitBreakStatementin interfaceGroovyCodeVisitor- Overrides:
 visitBreakStatementin classClassCodeVisitorSupport
 
- 
visitContinueStatement
public void visitContinueStatement(ContinueStatement statement)
- Specified by:
 visitContinueStatementin interfaceGroovyCodeVisitor- Overrides:
 visitContinueStatementin classClassCodeVisitorSupport
 
- 
visitSynchronizedStatement
public void visitSynchronizedStatement(SynchronizedStatement statement)
- Specified by:
 visitSynchronizedStatementin interfaceGroovyCodeVisitor- Overrides:
 visitSynchronizedStatementin classClassCodeVisitorSupport
 
- 
visitThrowStatement
public void visitThrowStatement(ThrowStatement statement)
- Specified by:
 visitThrowStatementin interfaceGroovyCodeVisitor- Overrides:
 visitThrowStatementin classClassCodeVisitorSupport
 
- 
visitReturnStatement
public void visitReturnStatement(ReturnStatement statement)
- Specified by:
 visitReturnStatementin interfaceGroovyCodeVisitor- Overrides:
 visitReturnStatementin classClassCodeVisitorSupport
 
- 
visitExpressionStatement
public void visitExpressionStatement(ExpressionStatement statement)
- Specified by:
 visitExpressionStatementin interfaceGroovyCodeVisitor- Overrides:
 visitExpressionStatementin classClassCodeVisitorSupport
 
- 
visitTernaryExpression
public void visitTernaryExpression(TernaryExpression expression)
- Specified by:
 visitTernaryExpressionin interfaceGroovyCodeVisitor- Overrides:
 visitTernaryExpressionin classCodeVisitorSupport
 
- 
visitDeclarationExpression
public void visitDeclarationExpression(DeclarationExpression expression)
- Specified by:
 visitDeclarationExpressionin interfaceGroovyCodeVisitor- Overrides:
 visitDeclarationExpressionin classClassCodeVisitorSupport
 
- 
visitBinaryExpression
public void visitBinaryExpression(BinaryExpression expression)
- Specified by:
 visitBinaryExpressionin interfaceGroovyCodeVisitor- Overrides:
 visitBinaryExpressionin classCodeVisitorSupport
 
- 
visitPostfixExpression
public void visitPostfixExpression(PostfixExpression expression)
- Specified by:
 visitPostfixExpressionin interfaceGroovyCodeVisitor- Overrides:
 visitPostfixExpressionin classCodeVisitorSupport
 
- 
visitPrefixExpression
public void visitPrefixExpression(PrefixExpression expression)
- Specified by:
 visitPrefixExpressionin interfaceGroovyCodeVisitor- Overrides:
 visitPrefixExpressionin classCodeVisitorSupport
 
- 
visitClosureExpression
public void visitClosureExpression(ClosureExpression expression)
- Specified by:
 visitClosureExpressionin interfaceGroovyCodeVisitor- Overrides:
 visitClosureExpressionin classCodeVisitorSupport
 
- 
visitLambdaExpression
public void visitLambdaExpression(LambdaExpression expression)
- Specified by:
 visitLambdaExpressionin interfaceGroovyCodeVisitor- Overrides:
 visitLambdaExpressionin classCodeVisitorSupport
 
- 
loadThisOrOwner
protected void loadThisOrOwner()
Loads either this object or if we're inside a closure then load the top level owner 
- 
visitConstantExpression
public void visitConstantExpression(ConstantExpression expression)
Generates byte code for constants.- Specified by:
 visitConstantExpressionin interfaceGroovyCodeVisitor- Overrides:
 visitConstantExpressionin classCodeVisitorSupport- See Also:
 - Class field types
 
 
- 
visitSpreadExpression
public void visitSpreadExpression(SpreadExpression expression)
- Specified by:
 visitSpreadExpressionin interfaceGroovyCodeVisitor- Overrides:
 visitSpreadExpressionin classCodeVisitorSupport
 
- 
visitSpreadMapExpression
public void visitSpreadMapExpression(SpreadMapExpression expression)
- Specified by:
 visitSpreadMapExpressionin interfaceGroovyCodeVisitor- Overrides:
 visitSpreadMapExpressionin classCodeVisitorSupport
 
- 
visitMethodPointerExpression
public void visitMethodPointerExpression(MethodPointerExpression expression)
- Specified by:
 visitMethodPointerExpressionin interfaceGroovyCodeVisitor- Overrides:
 visitMethodPointerExpressionin classCodeVisitorSupport
 
- 
visitMethodReferenceExpression
public void visitMethodReferenceExpression(MethodReferenceExpression expression)
- Specified by:
 visitMethodReferenceExpressionin interfaceGroovyCodeVisitor- Overrides:
 visitMethodReferenceExpressionin classCodeVisitorSupport
 
- 
visitUnaryMinusExpression
public void visitUnaryMinusExpression(UnaryMinusExpression expression)
- Specified by:
 visitUnaryMinusExpressionin interfaceGroovyCodeVisitor- Overrides:
 visitUnaryMinusExpressionin classCodeVisitorSupport
 
- 
visitUnaryPlusExpression
public void visitUnaryPlusExpression(UnaryPlusExpression expression)
- Specified by:
 visitUnaryPlusExpressionin interfaceGroovyCodeVisitor- Overrides:
 visitUnaryPlusExpressionin classCodeVisitorSupport
 
- 
visitBitwiseNegationExpression
public void visitBitwiseNegationExpression(BitwiseNegationExpression expression)
- Specified by:
 visitBitwiseNegationExpressionin interfaceGroovyCodeVisitor- Overrides:
 visitBitwiseNegationExpressionin classCodeVisitorSupport
 
- 
visitCastExpression
public void visitCastExpression(CastExpression castExpression)
- Specified by:
 visitCastExpressionin interfaceGroovyCodeVisitor- Overrides:
 visitCastExpressionin classCodeVisitorSupport
 
- 
visitNotExpression
public void visitNotExpression(NotExpression expression)
- Specified by:
 visitNotExpressionin interfaceGroovyCodeVisitor- Overrides:
 visitNotExpressionin classCodeVisitorSupport
 
- 
visitBooleanExpression
public void visitBooleanExpression(BooleanExpression expression)
- Specified by:
 visitBooleanExpressionin interfaceGroovyCodeVisitor- Overrides:
 visitBooleanExpressionin classCodeVisitorSupport
 
- 
visitMethodCallExpression
public void visitMethodCallExpression(MethodCallExpression call)
- Specified by:
 visitMethodCallExpressionin interfaceGroovyCodeVisitor- Overrides:
 visitMethodCallExpressionin classCodeVisitorSupport
 
- 
visitStaticMethodCallExpression
public void visitStaticMethodCallExpression(StaticMethodCallExpression call)
- Specified by:
 visitStaticMethodCallExpressionin interfaceGroovyCodeVisitor- Overrides:
 visitStaticMethodCallExpressionin classCodeVisitorSupport
 
- 
visitConstructorCallExpression
public void visitConstructorCallExpression(ConstructorCallExpression call)
- Specified by:
 visitConstructorCallExpressionin interfaceGroovyCodeVisitor- Overrides:
 visitConstructorCallExpressionin classCodeVisitorSupport
 
- 
getDeclaredFieldOfCurrentClassOrAccessibleFieldOfSuper
public static FieldNode getDeclaredFieldOfCurrentClassOrAccessibleFieldOfSuper(ClassNode accessingNode, ClassNode current, String name, boolean skipCurrent)
 
- 
visitPropertyExpression
public void visitPropertyExpression(PropertyExpression expression)
- Specified by:
 visitPropertyExpressionin interfaceGroovyCodeVisitor- Overrides:
 visitPropertyExpressionin classCodeVisitorSupport
 
- 
visitAttributeExpression
public void visitAttributeExpression(AttributeExpression expression)
- Specified by:
 visitAttributeExpressionin interfaceGroovyCodeVisitor- Overrides:
 visitAttributeExpressionin classCodeVisitorSupport
 
- 
visitFieldExpression
public void visitFieldExpression(FieldExpression expression)
- Specified by:
 visitFieldExpressionin interfaceGroovyCodeVisitor- Overrides:
 visitFieldExpressionin classCodeVisitorSupport
 
- 
loadStaticField
public void loadStaticField(FieldExpression expression)
 
- 
loadInstanceField
public void loadInstanceField(FieldExpression expression)
RHS instance field. should move most of the code in the BytecodeHelper 
- 
visitVariableExpression
public void visitVariableExpression(VariableExpression expression)
- Specified by:
 visitVariableExpressionin interfaceGroovyCodeVisitor- Overrides:
 visitVariableExpressionin classCodeVisitorSupport
 
- 
createInterfaceSyntheticStaticFields
protected void createInterfaceSyntheticStaticFields()
 
- 
createSyntheticStaticFields
protected void createSyntheticStaticFields()
 
- 
visitClassExpression
public void visitClassExpression(ClassExpression expression)
- Specified by:
 visitClassExpressionin interfaceGroovyCodeVisitor- Overrides:
 visitClassExpressionin classCodeVisitorSupport
 
- 
visitRangeExpression
public void visitRangeExpression(RangeExpression expression)
- Specified by:
 visitRangeExpressionin interfaceGroovyCodeVisitor- Overrides:
 visitRangeExpressionin classCodeVisitorSupport
 
- 
visitMapEntryExpression
public void visitMapEntryExpression(MapEntryExpression expression)
- Specified by:
 visitMapEntryExpressionin interfaceGroovyCodeVisitor- Overrides:
 visitMapEntryExpressionin classCodeVisitorSupport
 
- 
visitMapExpression
public void visitMapExpression(MapExpression expression)
- Specified by:
 visitMapExpressionin interfaceGroovyCodeVisitor- Overrides:
 visitMapExpressionin classCodeVisitorSupport
 
- 
visitArgumentlistExpression
public void visitArgumentlistExpression(ArgumentListExpression ale)
- Specified by:
 visitArgumentlistExpressionin interfaceGroovyCodeVisitor- Overrides:
 visitArgumentlistExpressionin classCodeVisitorSupport
 
- 
despreadList
public void despreadList(List<Expression> expressions, boolean wrap)
 
- 
visitTupleExpression
public void visitTupleExpression(TupleExpression expression)
- Specified by:
 visitTupleExpressionin interfaceGroovyCodeVisitor- Overrides:
 visitTupleExpressionin classCodeVisitorSupport
 
- 
loadWrapper
public void loadWrapper(Expression argument)
 
- 
visitArrayExpression
public void visitArrayExpression(ArrayExpression expression)
- Specified by:
 visitArrayExpressionin interfaceGroovyCodeVisitor- Overrides:
 visitArrayExpressionin classCodeVisitorSupport
 
- 
visitClosureListExpression
public void visitClosureListExpression(ClosureListExpression expression)
- Specified by:
 visitClosureListExpressionin interfaceGroovyCodeVisitor- Overrides:
 visitClosureListExpressionin classCodeVisitorSupport
 
- 
visitBytecodeExpression
public void visitBytecodeExpression(BytecodeExpression expression)
- Specified by:
 visitBytecodeExpressionin interfaceGroovyCodeVisitor- Overrides:
 visitBytecodeExpressionin classCodeVisitorSupport
 
- 
visitBytecodeSequence
public void visitBytecodeSequence(BytecodeSequence bytecodeSequence)
- Overrides:
 visitBytecodeSequencein classClassGenerator
 
- 
visitListExpression
public void visitListExpression(ListExpression expression)
- Specified by:
 visitListExpressionin interfaceGroovyCodeVisitor- Overrides:
 visitListExpressionin classCodeVisitorSupport
 
- 
visitGStringExpression
public void visitGStringExpression(GStringExpression expression)
- Specified by:
 visitGStringExpressionin interfaceGroovyCodeVisitor- Overrides:
 visitGStringExpressionin classCodeVisitorSupport
 
- 
visitAnnotations
public void visitAnnotations(AnnotatedNode node)
- Overrides:
 visitAnnotationsin classClassCodeVisitorSupport
 
- 
argumentSize
public static int argumentSize(Expression arguments)
 
- 
containsSpreadExpression
public static boolean containsSpreadExpression(Expression arguments)
 
- 
isThisExpression
@Deprecated public static boolean isThisExpression(Expression expression)
Deprecated. 
- 
isSuperExpression
@Deprecated public static boolean isSuperExpression(Expression expression)
Deprecated. 
- 
isNullConstant
@Deprecated public static boolean isNullConstant(Expression expression)
Deprecated. 
- 
addInnerClass
public boolean addInnerClass(ClassNode innerClass)
 
- 
throwException
public void throwException(String message)
 
 - 
 
 -