[Java] Class AsmClassGenerator

  • org.codehaus.groovy.classgen.AsmClassGenerator
public class AsmClassGenerator
extends ClassGenerator

Generates Java class versions of Groovy classes using ASM.

Field Summary

Fields
Modifiers Name Description
static boolean ASM_DEBUG
static boolean CREATE_DEBUG_INFO
static boolean CREATE_LINE_NUMBER_INFO
static String MINIMUM_BYTECODE_VERSION
static MethodCallerMultiAdapter getField
static MethodCallerMultiAdapter getGroovyObjectField
static MethodCallerMultiAdapter setField
static MethodCallerMultiAdapter setGroovyObjectField
static MethodCallerMultiAdapter setProperty
Inherited fields
Fields inherited from class Fields
class ClassGenerator innerClasses

Constructor Summary

Constructors
Constructor and description
AsmClassGenerator (SourceUnit source, GeneratorContext context, org.objectweb.asm.ClassVisitor classVisitor, String sourceFile)

Methods Summary

Methods
Type Params Return Type Name and description
public boolean addInnerClass(ClassNode innerClass)
public static int argumentSize(Expression arguments)
public static boolean containsSpreadExpression(Expression arguments)
protected void createInterfaceSyntheticStaticFields()
protected void createSyntheticStaticFields()
public void despreadList(List<Expression> expressions, boolean wrap)
public WriterController getController()
public static FieldNode getDeclaredFieldOfCurrentClassOrAccessibleFieldOfSuper(ClassNode accessingNode, ClassNode current, String name, boolean skipCurrent)
public SourceUnit getSourceUnit()
public static boolean isNullConstant(Expression expression)
public static boolean isSuperExpression(Expression expression)
public static boolean isThisExpression(Expression expression)
public static boolean isValidFieldNodeForByteCodeAccess(FieldNode field, ClassNode accessingClass)
Determines if the given class can directly access the given field (via GETFIELD, GETSTATIC, etc. bytecode instructions).
public void loadInstanceField(FieldExpression expression)
RHS instance field. should move most of the code in the BytecodeHelper
public void loadStaticField(FieldExpression expression)
protected void loadThisOrOwner()
Loads either this object or if we're inside a closure then load the top level owner
public void loadWrapper(Expression argument)
public void onLineNumber(ASTNode statement, String message)
public void throwException(String message)
public void visit(org.objectweb.asm.MethodVisitor mv)
public void visit(org.objectweb.asm.MethodVisitor mv)
public void visit(org.objectweb.asm.MethodVisitor mv)
public void visit(org.objectweb.asm.MethodVisitor mv)
public void visit(org.objectweb.asm.MethodVisitor mv)
public void visitAnnotations(AnnotatedNode node)
public void visitArgumentlistExpression(ArgumentListExpression ale)
public void visitArrayExpression(ArrayExpression expression)
public void visitAssertStatement(AssertStatement statement)
public void visitAttributeExpression(AttributeExpression expression)
public void visitBinaryExpression(BinaryExpression expression)
public void visitBitwiseNegationExpression(BitwiseNegationExpression expression)
public void visitBlockStatement(BlockStatement statement)
public void visitBooleanExpression(BooleanExpression expression)
public void visitBreakStatement(BreakStatement statement)
public void visitBytecodeExpression(BytecodeExpression expression)
public void visitBytecodeSequence(BytecodeSequence bytecodeSequence)
public void visitCaseStatement(CaseStatement statement)
public void visitCastExpression(CastExpression castExpression)
public void visitCatchStatement(CatchStatement statement)
public void visitClass(ClassNode classNode)
public void visitClassExpression(ClassExpression expression)
public void visitClosureExpression(ClosureExpression expression)
public void visitClosureListExpression(ClosureListExpression expression)
public void visitConstantExpression(ConstantExpression expression)
Generates byte code for constants.
public void visitConstructor(ConstructorNode node)
public void visitConstructorCallExpression(ConstructorCallExpression call)
protected void visitConstructorOrMethod(MethodNode node, boolean isConstructor)
public void visitContinueStatement(ContinueStatement statement)
public void visitDeclarationExpression(DeclarationExpression expression)
public void visitDoWhileLoop(DoWhileStatement statement)
public void visitExpressionStatement(ExpressionStatement statement)
public void visitField(FieldNode fieldNode)
public void visitFieldExpression(FieldExpression expression)
public void visitForLoop(ForStatement statement)
public void visitGStringExpression(GStringExpression expression)
public void visitIfElse(IfStatement statement)
public void visitLambdaExpression(LambdaExpression expression)
public void visitListExpression(ListExpression expression)
public void visitMapEntryExpression(MapEntryExpression expression)
public void visitMapExpression(MapExpression expression)
public void visitMethod(MethodNode node)
public void visitMethodCallExpression(MethodCallExpression call)
public void visitMethodPointerExpression(MethodPointerExpression expression)
public void visitMethodReferenceExpression(MethodReferenceExpression expression)
public void visitNotExpression(NotExpression expression)
public void visitPostfixExpression(PostfixExpression expression)
public void visitPrefixExpression(PrefixExpression expression)
public void visitProperty(PropertyNode statement)
public void visitPropertyExpression(PropertyExpression expression)
public void visitRangeExpression(RangeExpression expression)
public void visitReturnStatement(ReturnStatement statement)
public void visitSpreadExpression(SpreadExpression expression)
public void visitSpreadMapExpression(SpreadMapExpression expression)
protected void visitStatement(Statement statement)
public void visitStaticMethodCallExpression(StaticMethodCallExpression call)
public void visitSwitch(SwitchStatement statement)
public void visitSynchronizedStatement(SynchronizedStatement statement)
public void visitTernaryExpression(TernaryExpression expression)
public void visitThrowStatement(ThrowStatement statement)
public void visitTryCatchFinally(TryCatchStatement statement)
public void visitTupleExpression(TupleExpression expression)
public void visitUnaryMinusExpression(UnaryMinusExpression expression)
public void visitUnaryPlusExpression(UnaryPlusExpression expression)
public void visitVariableExpression(VariableExpression expression)
public void visitWhileLoop(WhileStatement statement)

Inherited Methods Summary

Inherited Methods
Methods inherited from class Name
class ClassGenerator getInnerClasses, getSourceUnit, visitBytecodeSequence
class ClassCodeVisitorSupport addError, getSourceUnit, visitAnnotation, visitAnnotations, visitAssertStatement, visitBlockStatement, visitBreakStatement, visitCaseStatement, visitCatchStatement, visitClass, visitClassCodeContainer, visitConstructor, visitConstructorOrMethod, visitContinueStatement, visitDeclarationExpression, visitDoWhileLoop, visitExpressionStatement, visitField, visitForLoop, visitIfElse, visitImports, visitMethod, visitObjectInitializerStatements, visitPackage, visitProperty, visitReturnStatement, visitStatement, visitSwitch, visitSynchronizedStatement, visitThrowStatement, visitTryCatchFinally, visitWhileLoop
class CodeVisitorSupport afterSwitchConditionExpressionVisited, visitArgumentlistExpression, visitArrayExpression, visitAssertStatement, visitAttributeExpression, visitBinaryExpression, visitBitwiseNegationExpression, visitBlockStatement, visitBooleanExpression, visitBreakStatement, visitBytecodeExpression, visitCaseStatement, visitCastExpression, visitCatchStatement, visitClassExpression, visitClosureExpression, visitClosureListExpression, visitConstantExpression, visitConstructorCallExpression, visitContinueStatement, visitDeclarationExpression, visitDoWhileLoop, visitEmptyStatement, visitExpressionStatement, visitFieldExpression, visitForLoop, visitGStringExpression, visitIfElse, visitLambdaExpression, visitListExpression, visitMapEntryExpression, visitMapExpression, visitMethodCallExpression, visitMethodPointerExpression, visitMethodReferenceExpression, visitNotExpression, visitPostfixExpression, visitPrefixExpression, visitPropertyExpression, visitRangeExpression, visitReturnStatement, visitShortTernaryExpression, visitSpreadExpression, visitSpreadMapExpression, visitStaticMethodCallExpression, visitSwitch, visitSynchronizedStatement, visitTernaryExpression, visitThrowStatement, visitTryCatchFinally, visitTupleExpression, visitUnaryMinusExpression, visitUnaryPlusExpression, visitVariableExpression, visitWhileLoop

Field Detail

public static final boolean ASM_DEBUG

public static final boolean CREATE_DEBUG_INFO

public static final boolean CREATE_LINE_NUMBER_INFO

public static final String MINIMUM_BYTECODE_VERSION

public static final MethodCallerMultiAdapter getField

public static final MethodCallerMultiAdapter getGroovyObjectField

public static final MethodCallerMultiAdapter setField

public static final MethodCallerMultiAdapter setGroovyObjectField

public static final MethodCallerMultiAdapter setProperty

Constructor Detail

public AsmClassGenerator(SourceUnit source, GeneratorContext context, org.objectweb.asm.ClassVisitor classVisitor, String sourceFile)

Method Detail

public boolean addInnerClass(ClassNode innerClass)

public static int argumentSize(Expression arguments)

public static boolean containsSpreadExpression(Expression arguments)

protected void createInterfaceSyntheticStaticFields()

protected void createSyntheticStaticFields()

public void despreadList(List<Expression> expressions, boolean wrap)

public WriterController getController()

public static FieldNode getDeclaredFieldOfCurrentClassOrAccessibleFieldOfSuper(ClassNode accessingNode, ClassNode current, String name, boolean skipCurrent)

@Override public SourceUnit getSourceUnit()

@Deprecated public static boolean isNullConstant(Expression expression)

@Deprecated public static boolean isSuperExpression(Expression expression)

@Deprecated public static boolean isThisExpression(Expression expression)

public static boolean isValidFieldNodeForByteCodeAccess(FieldNode field, ClassNode accessingClass)

Determines if the given class can directly access the given field (via GETFIELD, GETSTATIC, etc. bytecode instructions).

public void loadInstanceField(FieldExpression expression)

RHS instance field. should move most of the code in the BytecodeHelper

public void loadStaticField(FieldExpression expression)

protected void loadThisOrOwner()

Loads either this object or if we're inside a closure then load the top level owner

public void loadWrapper(Expression argument)

public void onLineNumber(ASTNode statement, String message)

public void throwException(String message)

public void visit(org.objectweb.asm.MethodVisitor mv)

public void visit(org.objectweb.asm.MethodVisitor mv)

public void visit(org.objectweb.asm.MethodVisitor mv)

public void visit(org.objectweb.asm.MethodVisitor mv)

public void visit(org.objectweb.asm.MethodVisitor mv)

@Override public void visitAnnotations(AnnotatedNode node)

@Override public void visitArgumentlistExpression(ArgumentListExpression ale)

@Override public void visitArrayExpression(ArrayExpression expression)

@Override public void visitAssertStatement(AssertStatement statement)

@Override public void visitAttributeExpression(AttributeExpression expression)

@Override public void visitBinaryExpression(BinaryExpression expression)

@Override public void visitBitwiseNegationExpression(BitwiseNegationExpression expression)

@Override public void visitBlockStatement(BlockStatement statement)

@Override public void visitBooleanExpression(BooleanExpression expression)

@Override public void visitBreakStatement(BreakStatement statement)

@Override public void visitBytecodeExpression(BytecodeExpression expression)

@Override public void visitBytecodeSequence(BytecodeSequence bytecodeSequence)

@Override public void visitCaseStatement(CaseStatement statement)

@Override public void visitCastExpression(CastExpression castExpression)

@Override public void visitCatchStatement(CatchStatement statement)

@Override public void visitClass(ClassNode classNode)

@Override public void visitClassExpression(ClassExpression expression)

@Override public void visitClosureExpression(ClosureExpression expression)

@Override public void visitClosureListExpression(ClosureListExpression expression)

@Override public void visitConstantExpression(ConstantExpression expression)

Generates byte code for constants.

See Also:
Class field types

@Override public void visitConstructor(ConstructorNode node)

@Override public void visitConstructorCallExpression(ConstructorCallExpression call)

@Override protected void visitConstructorOrMethod(MethodNode node, boolean isConstructor)

@Override public void visitContinueStatement(ContinueStatement statement)

@Override public void visitDeclarationExpression(DeclarationExpression expression)

@Override public void visitDoWhileLoop(DoWhileStatement statement)

@Override public void visitExpressionStatement(ExpressionStatement statement)

@Override public void visitField(FieldNode fieldNode)

@Override public void visitFieldExpression(FieldExpression expression)

@Override public void visitForLoop(ForStatement statement)

@Override public void visitGStringExpression(GStringExpression expression)

@Override public void visitIfElse(IfStatement statement)

@Override public void visitLambdaExpression(LambdaExpression expression)

@Override public void visitListExpression(ListExpression expression)

@Override public void visitMapEntryExpression(MapEntryExpression expression)

@Override public void visitMapExpression(MapExpression expression)

@Override public void visitMethod(MethodNode node)

@Override public void visitMethodCallExpression(MethodCallExpression call)

@Override public void visitMethodPointerExpression(MethodPointerExpression expression)

@Override public void visitMethodReferenceExpression(MethodReferenceExpression expression)

@Override public void visitNotExpression(NotExpression expression)

@Override public void visitPostfixExpression(PostfixExpression expression)

@Override public void visitPrefixExpression(PrefixExpression expression)

@Override public void visitProperty(PropertyNode statement)

@Override public void visitPropertyExpression(PropertyExpression expression)

@Override public void visitRangeExpression(RangeExpression expression)

@Override public void visitReturnStatement(ReturnStatement statement)

@Override public void visitSpreadExpression(SpreadExpression expression)

@Override public void visitSpreadMapExpression(SpreadMapExpression expression)

@Override protected void visitStatement(Statement statement)

@Override public void visitStaticMethodCallExpression(StaticMethodCallExpression call)

@Override public void visitSwitch(SwitchStatement statement)

@Override public void visitSynchronizedStatement(SynchronizedStatement statement)

@Override public void visitTernaryExpression(TernaryExpression expression)

@Override public void visitThrowStatement(ThrowStatement statement)

@Override public void visitTryCatchFinally(TryCatchStatement statement)

@Override public void visitTupleExpression(TupleExpression expression)

@Override public void visitUnaryMinusExpression(UnaryMinusExpression expression)

@Override public void visitUnaryPlusExpression(UnaryPlusExpression expression)

@Override public void visitVariableExpression(VariableExpression expression)

@Override public void visitWhileLoop(WhileStatement statement)

© 2003-2020 The Apache Software Foundation
Licensed under the Apache license.
https://docs.groovy-lang.org/3.0.7/html/gapi/org/codehaus/groovy/classgen/AsmClassGenerator.html