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
Generates Java class versions of Groovy classes using ASM.
-
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final booleanstatic final booleanstatic final booleanstatic final MethodCallerMultiAdapterstatic final MethodCallerMultiAdapterstatic final Stringstatic final MethodCallerMultiAdapterstatic final MethodCallerMultiAdapterstatic final MethodCallerMultiAdapterFields inherited from class org.codehaus.groovy.classgen.ClassGenerator
innerClasses -
Constructor Summary
ConstructorsConstructorDescriptionAsmClassGenerator(SourceUnit source, GeneratorContext context, org.objectweb.asm.ClassVisitor classVisitor, String sourceFile) -
Method Summary
Modifier and TypeMethodDescriptionbooleanaddInnerClass(ClassNode innerClass) static intargumentSize(Expression arguments) static booleancontainsSpreadExpression(Expression arguments) protected voidprotected voidvoiddespreadList(List<Expression> expressions, boolean wrap) static FieldNodegetDeclaredFieldOfCurrentClassOrAccessibleFieldOfSuper(ClassNode accessingNode, ClassNode current, String fieldName, boolean skipCurrent) static booleanisFieldDirectlyAccessible(FieldNode field, ClassNode clazz) Determines if the given class can directly access the given field (viaGETFIELD,GETSTATIC, etc.static booleanisNullConstant(Expression expression) Deprecated.static booleanisSuperExpression(Expression expression) Deprecated.static booleanisThisExpression(Expression expression) Deprecated.static booleanisValidFieldNodeForByteCodeAccess(FieldNode field, ClassNode accessingClass) Deprecated.voidloadInstanceField(FieldExpression expression) RHS instance field.voidloadStaticField(FieldExpression expression) protected voidLoads either this object or if we're inside a closure then load the top level ownervoidloadWrapper(Expression argument) voidonLineNumber(ASTNode node, String message) voidthrowException(String message) voidvoidvoidvisitArrayExpression(ArrayExpression expression) voidvisitAssertStatement(AssertStatement statement) voidvisitAttributeExpression(AttributeExpression expression) voidvisitBinaryExpression(BinaryExpression expression) voidvoidvisitBlockStatement(BlockStatement statement) voidvisitBooleanExpression(BooleanExpression expression) voidvisitBreakStatement(BreakStatement statement) voidvisitBytecodeExpression(BytecodeExpression expression) voidvisitBytecodeSequence(BytecodeSequence bytecodeSequence) voidvisitCaseStatement(CaseStatement statement) voidvisitCastExpression(CastExpression castExpression) voidvisitCatchStatement(CatchStatement statement) voidvisitClass(ClassNode classNode) Visit a ClassNode.voidvisitClassExpression(ClassExpression expression) voidvisitClosureExpression(ClosureExpression expression) voidvisitClosureListExpression(ClosureListExpression expression) voidvisitConstantExpression(ConstantExpression expression) Generates byte code for constants.voidVisit a ConstructorNode.voidprotected voidvisitConstructorOrMethod(MethodNode node, boolean isConstructor) voidvisitContinueStatement(ContinueStatement statement) voidvisitDeclarationExpression(DeclarationExpression expression) voidvisitDoWhileLoop(DoWhileStatement statement) voidvisitExpressionStatement(ExpressionStatement statement) voidvisitField(FieldNode fieldNode) Visit a FieldNode.voidvisitFieldExpression(FieldExpression expression) voidvisitForLoop(ForStatement statement) voidvisitGStringExpression(GStringExpression expression) voidvisitIfElse(IfStatement statement) voidvisitLambdaExpression(LambdaExpression expression) voidvisitListExpression(ListExpression expression) voidvisitMapEntryExpression(MapEntryExpression expression) voidvisitMapExpression(MapExpression expression) voidvisitMethod(MethodNode node) Visit a MethodNode.voidvoidvisitMethodPointerExpression(MethodPointerExpression expression) voidvoidvisitNotExpression(NotExpression expression) voidvisitPostfixExpression(PostfixExpression expression) voidvisitPrefixExpression(PrefixExpression expression) voidvisitProperty(PropertyNode statement) Visit a PropertyNode.voidvisitPropertyExpression(PropertyExpression expression) voidvisitRangeExpression(RangeExpression expression) voidvisitReturnStatement(ReturnStatement statement) voidvisitSpreadExpression(SpreadExpression expression) voidvisitSpreadMapExpression(SpreadMapExpression expression) protected voidvisitStatement(Statement statement) voidvoidvisitSwitch(SwitchStatement statement) voidvisitSynchronizedStatement(SynchronizedStatement statement) voidvisitTernaryExpression(TernaryExpression expression) voidvisitThrowStatement(ThrowStatement statement) voidvisitTryCatchFinally(TryCatchStatement statement) voidvisitTupleExpression(TupleExpression expression) voidvisitUnaryMinusExpression(UnaryMinusExpression expression) voidvisitUnaryPlusExpression(UnaryPlusExpression expression) voidvisitVariableExpression(VariableExpression expression) voidvisitWhileLoop(WhileStatement statement) Methods inherited from class org.codehaus.groovy.classgen.ClassGenerator
getInnerClassesMethods inherited from class org.codehaus.groovy.ast.ClassCodeVisitorSupport
addError, visitAnnotation, visitAnnotations, visitClassCodeContainer, visitImports, visitObjectInitializerStatements, visitPackageMethods inherited from class org.codehaus.groovy.ast.CodeVisitorSupport
afterSwitchConditionExpressionVisited, visitEmptyStatement, visitShortTernaryExpressionMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface org.codehaus.groovy.ast.GroovyCodeVisitor
visit, visit, visitEmptyExpression, visitListOfExpressions
-
Field Details
-
setField
-
getField
-
setGroovyObjectField
-
getGroovyObjectField
-
setProperty
-
CREATE_DEBUG_INFO
public static final boolean CREATE_DEBUG_INFO- See Also:
-
CREATE_LINE_NUMBER_INFO
public static final boolean CREATE_LINE_NUMBER_INFO- See Also:
-
ASM_DEBUG
public static final boolean ASM_DEBUG- See Also:
-
MINIMUM_BYTECODE_VERSION
- See Also:
-
-
Constructor Details
-
AsmClassGenerator
public AsmClassGenerator(SourceUnit source, GeneratorContext context, org.objectweb.asm.ClassVisitor classVisitor, String sourceFile)
-
-
Method Details
-
getSourceUnit
- Overrides:
getSourceUnitin classClassGenerator
-
getController
-
visitClass
Description copied from interface:GroovyClassVisitorVisit a ClassNode.- Specified by:
visitClassin interfaceGroovyClassVisitor- Overrides:
visitClassin classClassCodeVisitorSupport
-
visitConstructorOrMethod
- Overrides:
visitConstructorOrMethodin classClassCodeVisitorSupport
-
visitConstructor
Description copied from interface:GroovyClassVisitorVisit a ConstructorNode.- Specified by:
visitConstructorin interfaceGroovyClassVisitor- Overrides:
visitConstructorin classClassCodeVisitorSupport
-
visitMethod
Description copied from interface:GroovyClassVisitorVisit a MethodNode.- Specified by:
visitMethodin interfaceGroovyClassVisitor- Overrides:
visitMethodin classClassCodeVisitorSupport
-
visitField
Description copied from interface:GroovyClassVisitorVisit a FieldNode.- Specified by:
visitFieldin interfaceGroovyClassVisitor- Overrides:
visitFieldin classClassCodeVisitorSupport
-
visitProperty
Description copied from interface:GroovyClassVisitorVisit a PropertyNode.- Specified by:
visitPropertyin interfaceGroovyClassVisitor- Overrides:
visitPropertyin classClassCodeVisitorSupport
-
visitStatement
- Overrides:
visitStatementin classClassCodeVisitorSupport
-
visitBlockStatement
- Specified by:
visitBlockStatementin interfaceGroovyCodeVisitor- Overrides:
visitBlockStatementin classClassCodeVisitorSupport
-
visitForLoop
- Specified by:
visitForLoopin interfaceGroovyCodeVisitor- Overrides:
visitForLoopin classClassCodeVisitorSupport
-
visitWhileLoop
- Specified by:
visitWhileLoopin interfaceGroovyCodeVisitor- Overrides:
visitWhileLoopin classClassCodeVisitorSupport
-
visitDoWhileLoop
- Specified by:
visitDoWhileLoopin interfaceGroovyCodeVisitor- Overrides:
visitDoWhileLoopin classClassCodeVisitorSupport
-
visitIfElse
- Specified by:
visitIfElsein interfaceGroovyCodeVisitor- Overrides:
visitIfElsein classClassCodeVisitorSupport
-
visitAssertStatement
- Specified by:
visitAssertStatementin interfaceGroovyCodeVisitor- Overrides:
visitAssertStatementin classClassCodeVisitorSupport
-
visitTryCatchFinally
- Specified by:
visitTryCatchFinallyin interfaceGroovyCodeVisitor- Overrides:
visitTryCatchFinallyin classClassCodeVisitorSupport
-
visitCatchStatement
- Specified by:
visitCatchStatementin interfaceGroovyCodeVisitor- Overrides:
visitCatchStatementin classClassCodeVisitorSupport
-
visitSwitch
- Specified by:
visitSwitchin interfaceGroovyCodeVisitor- Overrides:
visitSwitchin classClassCodeVisitorSupport
-
visitCaseStatement
- Specified by:
visitCaseStatementin interfaceGroovyCodeVisitor- Overrides:
visitCaseStatementin classClassCodeVisitorSupport
-
visitBreakStatement
- Specified by:
visitBreakStatementin interfaceGroovyCodeVisitor- Overrides:
visitBreakStatementin classClassCodeVisitorSupport
-
visitContinueStatement
- Specified by:
visitContinueStatementin interfaceGroovyCodeVisitor- Overrides:
visitContinueStatementin classClassCodeVisitorSupport
-
visitSynchronizedStatement
- Specified by:
visitSynchronizedStatementin interfaceGroovyCodeVisitor- Overrides:
visitSynchronizedStatementin classClassCodeVisitorSupport
-
visitThrowStatement
- Specified by:
visitThrowStatementin interfaceGroovyCodeVisitor- Overrides:
visitThrowStatementin classClassCodeVisitorSupport
-
visitReturnStatement
- Specified by:
visitReturnStatementin interfaceGroovyCodeVisitor- Overrides:
visitReturnStatementin classClassCodeVisitorSupport
-
visitExpressionStatement
- Specified by:
visitExpressionStatementin interfaceGroovyCodeVisitor- Overrides:
visitExpressionStatementin classClassCodeVisitorSupport
-
visitTernaryExpression
- Specified by:
visitTernaryExpressionin interfaceGroovyCodeVisitor- Overrides:
visitTernaryExpressionin classCodeVisitorSupport
-
visitDeclarationExpression
- Specified by:
visitDeclarationExpressionin interfaceGroovyCodeVisitor- Overrides:
visitDeclarationExpressionin classClassCodeVisitorSupport
-
visitBinaryExpression
- Specified by:
visitBinaryExpressionin interfaceGroovyCodeVisitor- Overrides:
visitBinaryExpressionin classCodeVisitorSupport
-
visitPostfixExpression
- Specified by:
visitPostfixExpressionin interfaceGroovyCodeVisitor- Overrides:
visitPostfixExpressionin classCodeVisitorSupport
-
visitPrefixExpression
- Specified by:
visitPrefixExpressionin interfaceGroovyCodeVisitor- Overrides:
visitPrefixExpressionin classCodeVisitorSupport
-
visitClosureExpression
- Specified by:
visitClosureExpressionin interfaceGroovyCodeVisitor- Overrides:
visitClosureExpressionin classCodeVisitorSupport
-
visitLambdaExpression
- 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
Generates byte code for constants.- Specified by:
visitConstantExpressionin interfaceGroovyCodeVisitor- Overrides:
visitConstantExpressionin classCodeVisitorSupport- See Also:
-
visitSpreadExpression
- Specified by:
visitSpreadExpressionin interfaceGroovyCodeVisitor- Overrides:
visitSpreadExpressionin classCodeVisitorSupport
-
visitSpreadMapExpression
- Specified by:
visitSpreadMapExpressionin interfaceGroovyCodeVisitor- Overrides:
visitSpreadMapExpressionin classCodeVisitorSupport
-
visitMethodPointerExpression
- Specified by:
visitMethodPointerExpressionin interfaceGroovyCodeVisitor- Overrides:
visitMethodPointerExpressionin classCodeVisitorSupport
-
visitMethodReferenceExpression
- Specified by:
visitMethodReferenceExpressionin interfaceGroovyCodeVisitor- Overrides:
visitMethodReferenceExpressionin classCodeVisitorSupport
-
visitUnaryMinusExpression
- Specified by:
visitUnaryMinusExpressionin interfaceGroovyCodeVisitor- Overrides:
visitUnaryMinusExpressionin classCodeVisitorSupport
-
visitUnaryPlusExpression
- Specified by:
visitUnaryPlusExpressionin interfaceGroovyCodeVisitor- Overrides:
visitUnaryPlusExpressionin classCodeVisitorSupport
-
visitBitwiseNegationExpression
- Specified by:
visitBitwiseNegationExpressionin interfaceGroovyCodeVisitor- Overrides:
visitBitwiseNegationExpressionin classCodeVisitorSupport
-
visitCastExpression
- Specified by:
visitCastExpressionin interfaceGroovyCodeVisitor- Overrides:
visitCastExpressionin classCodeVisitorSupport
-
visitNotExpression
- Specified by:
visitNotExpressionin interfaceGroovyCodeVisitor- Overrides:
visitNotExpressionin classCodeVisitorSupport
-
visitBooleanExpression
- Specified by:
visitBooleanExpressionin interfaceGroovyCodeVisitor- Overrides:
visitBooleanExpressionin classCodeVisitorSupport
-
visitMethodCallExpression
- Specified by:
visitMethodCallExpressionin interfaceGroovyCodeVisitor- Overrides:
visitMethodCallExpressionin classCodeVisitorSupport
-
visitStaticMethodCallExpression
- Specified by:
visitStaticMethodCallExpressionin interfaceGroovyCodeVisitor- Overrides:
visitStaticMethodCallExpressionin classCodeVisitorSupport
-
visitConstructorCallExpression
- Specified by:
visitConstructorCallExpressionin interfaceGroovyCodeVisitor- Overrides:
visitConstructorCallExpressionin classCodeVisitorSupport
-
isValidFieldNodeForByteCodeAccess
@Deprecated public static boolean isValidFieldNodeForByteCodeAccess(FieldNode field, ClassNode accessingClass) Deprecated.useisFieldDirectlyAccessible(FieldNode, ClassNode)instead. -
isFieldDirectlyAccessible
Determines if the given class can directly access the given field (viaGETFIELD,GETSTATIC, etc. bytecode instructions). -
getDeclaredFieldOfCurrentClassOrAccessibleFieldOfSuper
-
visitPropertyExpression
- Specified by:
visitPropertyExpressionin interfaceGroovyCodeVisitor- Overrides:
visitPropertyExpressionin classCodeVisitorSupport
-
visitAttributeExpression
- Specified by:
visitAttributeExpressionin interfaceGroovyCodeVisitor- Overrides:
visitAttributeExpressionin classCodeVisitorSupport
-
visitFieldExpression
- Specified by:
visitFieldExpressionin interfaceGroovyCodeVisitor- Overrides:
visitFieldExpressionin classCodeVisitorSupport
-
loadStaticField
-
loadInstanceField
RHS instance field. should move most of the code in the BytecodeHelper -
visitVariableExpression
- Specified by:
visitVariableExpressionin interfaceGroovyCodeVisitor- Overrides:
visitVariableExpressionin classCodeVisitorSupport
-
createInterfaceSyntheticStaticFields
protected void createInterfaceSyntheticStaticFields() -
createSyntheticStaticFields
protected void createSyntheticStaticFields() -
visitClassExpression
- Specified by:
visitClassExpressionin interfaceGroovyCodeVisitor- Overrides:
visitClassExpressionin classCodeVisitorSupport
-
visitRangeExpression
- Specified by:
visitRangeExpressionin interfaceGroovyCodeVisitor- Overrides:
visitRangeExpressionin classCodeVisitorSupport
-
visitMapEntryExpression
- Specified by:
visitMapEntryExpressionin interfaceGroovyCodeVisitor- Overrides:
visitMapEntryExpressionin classCodeVisitorSupport
-
visitMapExpression
- Specified by:
visitMapExpressionin interfaceGroovyCodeVisitor- Overrides:
visitMapExpressionin classCodeVisitorSupport
-
visitArgumentlistExpression
- Specified by:
visitArgumentlistExpressionin interfaceGroovyCodeVisitor- Overrides:
visitArgumentlistExpressionin classCodeVisitorSupport
-
visitTupleExpression
- Specified by:
visitTupleExpressionin interfaceGroovyCodeVisitor- Overrides:
visitTupleExpressionin classCodeVisitorSupport
-
visitArrayExpression
- Specified by:
visitArrayExpressionin interfaceGroovyCodeVisitor- Overrides:
visitArrayExpressionin classCodeVisitorSupport
-
visitClosureListExpression
- Specified by:
visitClosureListExpressionin interfaceGroovyCodeVisitor- Overrides:
visitClosureListExpressionin classCodeVisitorSupport
-
visitBytecodeExpression
- Specified by:
visitBytecodeExpressionin interfaceGroovyCodeVisitor- Overrides:
visitBytecodeExpressionin classCodeVisitorSupport
-
visitBytecodeSequence
- Overrides:
visitBytecodeSequencein classClassGenerator
-
visitListExpression
- Specified by:
visitListExpressionin interfaceGroovyCodeVisitor- Overrides:
visitListExpressionin classCodeVisitorSupport
-
visitGStringExpression
- Specified by:
visitGStringExpressionin interfaceGroovyCodeVisitor- Overrides:
visitGStringExpressionin classCodeVisitorSupport
-
visitAnnotations
- Overrides:
visitAnnotationsin classClassCodeVisitorSupport
-
addInnerClass
-
argumentSize
-
containsSpreadExpression
-
despreadList
-
isThisExpression
Deprecated. -
isSuperExpression
Deprecated. -
isNullConstant
Deprecated. -
loadWrapper
-
onLineNumber
-
throwException
-
isFieldDirectlyAccessible(FieldNode, ClassNode)instead.