|
Groovy 1.7.9 | |||||||
FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectorg.codehaus.groovy.ast.CodeVisitorSupport
org.codehaus.groovy.ast.ClassCodeVisitorSupport
org.codehaus.groovy.classgen.ClassGenerator
org.codehaus.groovy.classgen.AsmClassGenerator
public class AsmClassGenerator extends ClassGenerator
Generates Java class versions of Groovy classes using ASM.
Field Summary | |
---|---|
static boolean |
ASM_DEBUG
|
static boolean |
CREATE_DEBUG_INFO
|
static boolean |
CREATE_LINE_NUMBER_INFO
|
Fields inherited from class ClassGenerator | |
---|---|
asmJDKVersion, classLoader, innerClasses |
Method Summary | |
---|---|
def
|
AsmClassGenerator(SourceUnit source, GeneratorContext context, org.objectweb.asm.ClassVisitor classVisitor, ClassLoader classLoader, String sourceFile)
|
protected boolean
|
addInnerClass(ClassNode innerClass)
|
protected static int
|
argumentSize(Expression arguments)
|
protected boolean
|
argumentsUseStack(Expression arguments)
@return true if the given argument expression requires the stack, in which case the arguments are evaluated first, stored in the variable stack and then reloaded to make a method call |
protected static boolean
|
containsSpreadExpression(Expression arguments)
|
protected ClassNode
|
createClosureClass(ClosureExpression expression)
|
protected void
|
createInterfaceSyntheticStaticFields()
|
protected Expression
|
createReturnLHSExpression(Expression expression)
For assignment expressions, return a safe expression for the LHS we can use to return the value |
protected Expression
|
createReusableExpression(Expression expression)
|
protected void
|
createSyntheticStaticFields()
|
protected void
|
doConvertAndCast(ClassNode type, Expression expression, boolean ignoreAutoboxing, boolean forceCast, boolean coerce)
Casts to the given type unless it can be determined that the cast is unnecessary |
protected void
|
doConvertAndCast(ClassNode type)
|
protected void
|
doConvertAndCast(ClassNode type, boolean coerce)
|
protected boolean
|
emptyArguments(Expression arguments)
|
protected void
|
evaluateBinaryExpression(String method, BinaryExpression expression)
|
protected void
|
evaluateBinaryExpressionWithAssignment(String method, BinaryExpression expression)
|
protected void
|
evaluateCompareTo(BinaryExpression expression)
|
protected void
|
evaluateEqual(BinaryExpression expression, boolean defineVariable)
|
protected void
|
evaluateExpression(Expression expression)
@param expression |
protected void
|
evaluateInstanceof(BinaryExpression expression)
|
protected void
|
evaluateLogicalAndExpression(BinaryExpression expression)
|
protected void
|
evaluateLogicalOrExpression(BinaryExpression expression)
|
protected void
|
evaluatePostfixMethod(String method, Expression expression)
|
protected void
|
evaluatePrefixMethod(String method, Expression expression)
|
protected int
|
getBytecodeVersion()
|
protected Parameter[]
|
getClosureSharedVariables(ClosureExpression ce)
|
protected CompileUnit
|
getCompileUnit()
|
protected ClassNode
|
getExpressionType(Expression expression)
@return if the type of the expression can be determined at compile time then this method returns the type - otherwise null |
protected ClassNode
|
getLHSType(Expression leftExpression)
Deduces the type name required for some casting |
static String
|
getMopMethodName(MethodNode method, boolean useThis)
creates a MOP method name from a method |
protected ClassNode
|
getOutermostClass()
|
protected SourceUnit
|
getSourceUnit()
|
protected boolean
|
isComparisonExpression(Expression expression)
|
protected boolean
|
isFieldOrVariable(String name)
@return true if the given name is a local variable or a field |
protected boolean
|
isGroovyObject(Expression objectExpression)
|
protected boolean
|
isInClosure()
|
protected boolean
|
isInClosureConstructor()
|
protected boolean
|
isInScriptBody()
@return true if we are in a script body, where all variables declared are no longer local variables but are properties |
static boolean
|
isMopMethod(String methodName)
method to determine if a method is a MOP method. |
protected boolean
|
isNotExplicitThisInClosure(boolean implicitThis)
|
protected boolean
|
isPopRequired(Expression expression)
@return true if this expression will have left a value on the stack that must be popped |
protected boolean
|
isStaticMethod()
|
protected boolean
|
isValidTypeForCast(ClassNode type)
|
void
|
loadInstanceField(FieldExpression fldExp)
RHS instance field. should move most of the code in the BytecodeHelper |
void
|
loadStaticField(FieldExpression fldExp)
@param fldExp |
protected void
|
loadThisOrOwner()
Loads either this object or if we're inside a closure then load the top level owner |
protected void
|
onLineNumber(ASTNode statement, String message)
|
protected void
|
processClassVariable(String name)
|
protected void
|
processFieldAccess(String name, FieldNode field, int steps)
|
protected void
|
processStackVariable(Variable variable, boolean useReferenceDirectly)
|
void
|
storeStaticField(FieldExpression expression)
|
void
|
storeThisInstanceField(FieldExpression expression)
|
static boolean
|
usesSuper(MethodCallExpression call)
|
static boolean
|
usesSuper(PropertyExpression pe)
|
protected void
|
visitAndAutoboxBoolean(Expression expression)
|
void
|
visitAnnotations(AnnotatedNode node)
Note: ignore it. |
void
|
visitArgumentlistExpression(ArgumentListExpression ale)
|
void
|
visitArrayExpression(ArrayExpression expression)
|
void
|
visitAssertStatement(AssertStatement statement)
|
void
|
visitAttributeExpression(AttributeExpression expression)
|
void
|
visitBinaryExpression(BinaryExpression expression)
|
void
|
visitBitwiseNegationExpression(BitwiseNegationExpression expression)
|
void
|
visitBlockStatement(BlockStatement block)
|
void
|
visitBooleanExpression(BooleanExpression expression)
return a primitive boolean value of the BooleanExpresion. |
void
|
visitBreakStatement(BreakStatement statement)
|
void
|
visitBytecodeExpression(BytecodeExpression cle)
|
void
|
visitBytecodeSequence(BytecodeSequence bytecodeSequence)
|
void
|
visitCaseStatement(CaseStatement statement)
|
void
|
visitCaseStatement(CaseStatement statement, int switchVariableIndex, org.objectweb.asm.Label thisLabel, org.objectweb.asm.Label nextLabel)
|
void
|
visitCastExpression(CastExpression castExpression)
|
void
|
visitClass(ClassNode classNode)
|
void
|
visitClassExpression(ClassExpression expression)
load class object on stack |
void
|
visitClosureExpression(ClosureExpression expression)
|
void
|
visitClosureListExpression(ClosureListExpression expression)
|
void
|
visitConstantExpression(ConstantExpression expression)
Generate byte code for constants |
void
|
visitConstructor(ConstructorNode node)
|
void
|
visitConstructorCallExpression(ConstructorCallExpression call)
|
protected void
|
visitConstructorOrMethod(MethodNode node, boolean isConstructor)
|
void
|
visitContinueStatement(ContinueStatement statement)
|
void
|
visitDeclarationExpression(DeclarationExpression expression)
|
void
|
visitDoWhileLoop(DoWhileStatement loop)
|
void
|
visitExpressionStatement(ExpressionStatement statement)
|
void
|
visitField(FieldNode fieldNode)
|
void
|
visitFieldExpression(FieldExpression expression)
|
void
|
visitForLoop(ForStatement loop)
|
void
|
visitGStringExpression(GStringExpression expression)
|
void
|
visitGenericType(GenericsType genericsType)
|
void
|
visitIfElse(IfStatement ifElse)
|
void
|
visitListExpression(ListExpression expression)
|
void
|
visitMapEntryExpression(MapEntryExpression expression)
|
void
|
visitMapExpression(MapExpression expression)
|
void
|
visitMethod(MethodNode node)
|
void
|
visitMethodCallExpression(MethodCallExpression call)
|
void
|
visitMethodPointerExpression(MethodPointerExpression expression)
|
void
|
visitNotExpression(NotExpression expression)
|
protected void
|
visitOuterFieldExpression(FieldExpression expression, ClassNode outerClassNode, int steps, boolean first)
|
void
|
visitPostfixExpression(PostfixExpression expression)
|
void
|
visitPrefixExpression(PrefixExpression expression)
|
void
|
visitProperty(PropertyNode statement)
|
void
|
visitPropertyExpression(PropertyExpression expression)
|
void
|
visitRangeExpression(RangeExpression expression)
|
void
|
visitRegexExpression(RegexExpression expression)
|
void
|
visitReturnStatement(ReturnStatement statement)
|
void
|
visitSpreadExpression(SpreadExpression expression)
|
void
|
visitSpreadMapExpression(SpreadMapExpression expression)
|
protected void
|
visitStatement(Statement statement)
|
void
|
visitStaticMethodCallExpression(StaticMethodCallExpression call)
|
void
|
visitSwitch(SwitchStatement statement)
|
void
|
visitSynchronizedStatement(SynchronizedStatement statement)
|
void
|
visitTernaryExpression(TernaryExpression expression)
|
void
|
visitThrowStatement(ThrowStatement statement)
|
void
|
visitTryCatchFinally(TryCatchStatement statement)
|
void
|
visitTupleExpression(TupleExpression expression)
|
void
|
visitUnaryMinusExpression(UnaryMinusExpression expression)
|
void
|
visitUnaryPlusExpression(UnaryPlusExpression expression)
|
void
|
visitVariableExpression(VariableExpression expression)
Visits a bare (unqualified) variable expression. |
void
|
visitWhileLoop(WhileStatement loop)
|
Methods inherited from class ClassGenerator | |
---|---|
getClassLoader, getInnerClasses, getSourceUnit, visitBytecodeSequence |
Methods inherited from class Object | |
---|---|
wait, wait, wait, equals, toString, hashCode, getClass, notify, notifyAll |
Field Detail |
---|
public static final boolean ASM_DEBUG
public static final boolean CREATE_DEBUG_INFO
public static final boolean CREATE_LINE_NUMBER_INFO
Method Detail |
---|
public def AsmClassGenerator(SourceUnit source, GeneratorContext context, org.objectweb.asm.ClassVisitor classVisitor, ClassLoader classLoader, String sourceFile)
protected boolean addInnerClass(ClassNode innerClass)
protected static int argumentSize(Expression arguments)
protected boolean argumentsUseStack(Expression arguments)
protected static boolean containsSpreadExpression(Expression arguments)
protected ClassNode createClosureClass(ClosureExpression expression)
protected void createInterfaceSyntheticStaticFields()
protected Expression createReturnLHSExpression(Expression expression)
protected Expression createReusableExpression(Expression expression)
protected void createSyntheticStaticFields()
protected void doConvertAndCast(ClassNode type, Expression expression, boolean ignoreAutoboxing, boolean forceCast, boolean coerce)
protected void doConvertAndCast(ClassNode type)
protected void doConvertAndCast(ClassNode type, boolean coerce)
protected boolean emptyArguments(Expression arguments)
protected void evaluateBinaryExpression(String method, BinaryExpression expression)
protected void evaluateBinaryExpressionWithAssignment(String method, BinaryExpression expression)
protected void evaluateCompareTo(BinaryExpression expression)
protected void evaluateEqual(BinaryExpression expression, boolean defineVariable)
protected void evaluateExpression(Expression expression)
protected void evaluateInstanceof(BinaryExpression expression)
protected void evaluateLogicalAndExpression(BinaryExpression expression)
protected void evaluateLogicalOrExpression(BinaryExpression expression)
protected void evaluatePostfixMethod(String method, Expression expression)
protected void evaluatePrefixMethod(String method, Expression expression)
protected int getBytecodeVersion()
protected Parameter[] getClosureSharedVariables(ClosureExpression ce)
protected CompileUnit getCompileUnit()
protected ClassNode getExpressionType(Expression expression)
protected ClassNode getLHSType(Expression leftExpression)
public static String getMopMethodName(MethodNode method, boolean useThis)
method
- the method to be called by the mop methoduseThis
- if true, then it is a call on "this", "super" else
protected ClassNode getOutermostClass()
protected SourceUnit getSourceUnit()
protected boolean isComparisonExpression(Expression expression)
protected boolean isFieldOrVariable(String name)
protected boolean isGroovyObject(Expression objectExpression)
protected boolean isInClosure()
protected boolean isInClosureConstructor()
protected boolean isInScriptBody()
public static boolean isMopMethod(String methodName)
methodName
- name of the method to test
protected boolean isNotExplicitThisInClosure(boolean implicitThis)
protected boolean isPopRequired(Expression expression)
protected boolean isStaticMethod()
protected boolean isValidTypeForCast(ClassNode type)
public void loadInstanceField(FieldExpression fldExp)
public void loadStaticField(FieldExpression fldExp)
protected void loadThisOrOwner()
protected void onLineNumber(ASTNode statement, String message)
protected void processClassVariable(String name)
protected void processFieldAccess(String name, FieldNode field, int steps)
protected void processStackVariable(Variable variable, boolean useReferenceDirectly)
public void storeStaticField(FieldExpression expression)
public void storeThisInstanceField(FieldExpression expression)
public static boolean usesSuper(MethodCallExpression call)
public static boolean usesSuper(PropertyExpression pe)
protected void visitAndAutoboxBoolean(Expression expression)
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 block)
public void visitBooleanExpression(BooleanExpression expression)
public void visitBreakStatement(BreakStatement statement)
public void visitBytecodeExpression(BytecodeExpression cle)
public void visitBytecodeSequence(BytecodeSequence bytecodeSequence)
public void visitCaseStatement(CaseStatement statement)
public void visitCaseStatement(CaseStatement statement, int switchVariableIndex, org.objectweb.asm.Label thisLabel, org.objectweb.asm.Label nextLabel)
public void visitCastExpression(CastExpression castExpression)
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)
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 loop)
public void visitExpressionStatement(ExpressionStatement statement)
public void visitField(FieldNode fieldNode)
public void visitFieldExpression(FieldExpression expression)
public void visitForLoop(ForStatement loop)
public void visitGStringExpression(GStringExpression expression)
public void visitGenericType(GenericsType genericsType)
public void visitIfElse(IfStatement ifElse)
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 visitNotExpression(NotExpression expression)
protected void visitOuterFieldExpression(FieldExpression expression, ClassNode outerClassNode, int steps, boolean first)
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)
@Deprecated public void visitRegexExpression(RegexExpression 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 loop)
Copyright © 2003-2010 The Codehaus. All rights reserved.