|
|||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectorg.codehaus.groovy.ast.CodeVisitorSupport
org.codehaus.groovy.classgen.ClassGenerator
Generates Java class versions of Groovy classes
Field Summary |
Fields inherited from interface org.objectweb.asm.Constants |
AALOAD, AASTORE, ACC_ABSTRACT, ACC_BRIDGE, ACC_DEPRECATED, ACC_ENUM, ACC_FINAL, ACC_INTERFACE, ACC_NATIVE, ACC_PRIVATE, ACC_PROTECTED, ACC_PUBLIC, ACC_STATIC, ACC_STRICT, ACC_SUPER, ACC_SYNCHRONIZED, ACC_SYNTHETIC, ACC_TRANSIENT, ACC_VARARGS, ACC_VOLATILE, ACONST_NULL, ALOAD, ANEWARRAY, ARETURN, ARRAYLENGTH, ASTORE, ATHROW, BALOAD, BASTORE, BIPUSH, CALOAD, CASTORE, CHECKCAST, D2F, D2I, D2L, DADD, DALOAD, DASTORE, DCMPG, DCMPL, DCONST_0, DCONST_1, DDIV, DLOAD, DMUL, DNEG, DREM, DRETURN, DSTORE, DSUB, DUP, DUP_X1, DUP_X2, DUP2, DUP2_X1, DUP2_X2, F2D, F2I, F2L, FADD, FALOAD, FASTORE, FCMPG, FCMPL, FCONST_0, FCONST_1, FCONST_2, FDIV, FLOAD, FMUL, FNEG, FREM, FRETURN, FSTORE, FSUB, GETFIELD, GETSTATIC, GOTO, 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, 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, LOOKUPSWITCH, LOR, LREM, LRETURN, LSHL, LSHR, LSTORE, LSUB, LUSHR, LXOR, MONITORENTER, MONITOREXIT, MULTIANEWARRAY, NEW, NEWARRAY, NOP, POP, POP2, PUTFIELD, PUTSTATIC, RET, RETURN, SALOAD, SASTORE, SIPUSH, SWAP, T_BOOLEAN, T_BYTE, T_CHAR, T_DOUBLE, T_FLOAT, T_INT, T_LONG, T_SHORT, TABLESWITCH |
Constructor Summary | |
ClassGenerator(GeneratorContext context,
org.objectweb.asm.ClassVisitor classVisitor,
java.lang.ClassLoader classLoader,
java.lang.String sourceFile)
|
Method Summary | |
protected void |
addFieldsToVisitor(VariableScope scope)
|
protected boolean |
addInnerClass(ClassNode innerClass)
|
protected boolean |
argumentsUseStack(Expression arguments)
|
protected java.lang.String |
checkForQualifiedClass(PropertyExpression expression)
Checks if the given property expression represents a fully qualified class name |
protected java.lang.String |
checkValidType(java.lang.String type,
ASTNode node,
java.lang.String message)
|
protected Type |
checkValidType(Type type,
ASTNode node,
java.lang.String message)
|
protected boolean |
comparisonExpression(Expression expression)
|
protected ClassNode |
createClosureClass(ClosureExpression expression)
|
protected ClassNode |
createGStringClass(GStringExpression expression)
|
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 java.lang.String |
createVariableName(java.lang.String type)
|
protected Variable |
defineVariable(java.lang.String name,
java.lang.String type)
Defines the given variable in scope and assigns it to the stack |
protected Variable |
defineVariable(java.lang.String name,
java.lang.String type,
boolean define)
|
protected void |
doConvertAndCast(java.lang.String type)
|
protected boolean |
emptyArguments(Expression arguments)
|
protected void |
evaluateBinaryExpression(MethodCaller compareMethod,
BinaryExpression expression)
|
protected void |
evaluateBinaryExpression(java.lang.String method,
BinaryExpression expression)
|
protected void |
evaluateBinaryExpressionWithAsignment(java.lang.String method,
BinaryExpression expression)
|
protected void |
evaluateCompareTo(BinaryExpression expression)
|
protected void |
evaluateEqual(BinaryExpression expression)
|
protected void |
evaluateInstanceof(BinaryExpression expression)
|
protected void |
evaluateLogicalAndExpression(BinaryExpression expression)
|
protected void |
evaluateLogicalOrExpression(BinaryExpression expression)
|
protected void |
evaluatePostfixMethod(java.lang.String method,
Expression expression)
|
protected void |
evaluatePrefixMethod(java.lang.String method,
Expression expression)
|
protected void |
findMutableVariables()
|
protected boolean |
firstStatementIsSuperMethodCall(Statement code)
|
java.lang.ClassLoader |
getClassLoader()
|
protected Parameter[] |
getClosureSharedVariables(ClosureExpression expression)
|
protected CompileUnit |
getCompileUnit()
|
protected java.lang.Class |
getExpressionType(Expression expression)
|
java.util.LinkedList |
getInnerClasses()
|
protected java.lang.String |
getLHSType(Expression leftExpression)
Deduces the type name required for some casting |
protected ClassNode |
getOutermostClass()
|
protected VariableScope |
getVariableScope()
|
protected java.lang.String |
getVariableType(java.lang.String name)
|
protected boolean |
isFieldOrVariable(java.lang.String name)
|
protected boolean |
isHolderVariable(Expression expression)
|
protected boolean |
isInClosureConstructor()
|
protected boolean |
isInScriptBody()
|
protected boolean |
isNonStaticField(Expression expression)
|
protected boolean |
isNotFieldOfOutermostClass(java.lang.String var)
|
protected boolean |
isPopRequired(Expression expression)
|
protected boolean |
isPrimitiveFieldType(java.lang.String type)
|
protected boolean |
isStaticMethod()
|
protected boolean |
isThisExpression(Expression expression)
|
protected boolean |
isValidTypeForCast(java.lang.String type)
|
protected java.lang.Class |
loadClass(java.lang.String name)
|
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)
|
protected void |
popScope()
|
protected void |
pushBlockScope()
|
protected void |
resetVariableStack(Parameter[] parameters)
|
protected java.lang.String |
resolveClassName(java.lang.String type)
|
protected void |
visitAndAutobox(Expression expression)
|
void |
visitArrayExpression(ArrayExpression expression)
|
void |
visitAssertStatement(AssertStatement statement)
|
void |
visitBinaryExpression(BinaryExpression expression)
|
void |
visitBooleanExpression(BooleanExpression expression)
|
void |
visitBreakStatement(BreakStatement statement)
|
void |
visitCaseStatement(CaseStatement statement)
|
void |
visitCaseStatement(CaseStatement statement,
int switchVariableIndex,
org.objectweb.asm.Label thisLabel,
org.objectweb.asm.Label nextLabel)
|
void |
visitCastExpression(CastExpression expression)
|
void |
visitClass(ClassNode classNode)
|
void |
visitClassExpression(ClassExpression expression)
|
void |
visitClosureExpression(ClosureExpression expression)
|
void |
visitConstantExpression(ConstantExpression expression)
|
void |
visitConstructor(ConstructorNode node)
|
void |
visitConstructorCallExpression(ConstructorCallExpression call)
|
void |
visitContinueStatement(ContinueStatement statement)
|
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 |
visitIfElse(IfStatement ifElse)
|
void |
visitListExpression(ListExpression expression)
|
void |
visitMapEntryExpression(MapEntryExpression expression)
|
void |
visitMapExpression(MapExpression expression)
|
void |
visitMethod(MethodNode node)
|
void |
visitMethodCallExpression(MethodCallExpression call)
|
void |
visitNegationExpression(NegationExpression expression)
|
void |
visitNotExpression(NotExpression expression)
|
protected void |
visitOuterFieldExpression(FieldExpression expression)
|
void |
visitPostfixExpression(PostfixExpression expression)
|
void |
visitPrefixExpression(PrefixExpression expression)
|
void |
visitProperty(PropertyNode statement)
Creates a getter, setter and field |
void |
visitPropertyExpression(PropertyExpression expression)
|
void |
visitRangeExpression(RangeExpression expression)
|
void |
visitRegexExpression(RegexExpression expression)
|
void |
visitReturnStatement(ReturnStatement 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 |
visitVariableExpression(VariableExpression expression)
|
void |
visitWhileLoop(WhileStatement loop)
|
Methods inherited from class org.codehaus.groovy.ast.CodeVisitorSupport |
visitBlockStatement, visitListOfExpressions |
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Constructor Detail |
public ClassGenerator(GeneratorContext context, org.objectweb.asm.ClassVisitor classVisitor, java.lang.ClassLoader classLoader, java.lang.String sourceFile)
Method Detail |
public java.util.LinkedList getInnerClasses()
public java.lang.ClassLoader getClassLoader()
public void visitClass(ClassNode classNode)
visitClass
in interface GroovyClassVisitor
public void visitConstructor(ConstructorNode node)
visitConstructor
in interface GroovyClassVisitor
public void visitMethod(MethodNode node)
visitMethod
in interface GroovyClassVisitor
public void visitField(FieldNode fieldNode)
visitField
in interface GroovyClassVisitor
public void visitProperty(PropertyNode statement)
visitProperty
in interface GroovyClassVisitor
public void visitForLoop(ForStatement loop)
visitForLoop
in interface GroovyCodeVisitor
visitForLoop
in class CodeVisitorSupport
public void visitWhileLoop(WhileStatement loop)
visitWhileLoop
in interface GroovyCodeVisitor
visitWhileLoop
in class CodeVisitorSupport
public void visitDoWhileLoop(DoWhileStatement loop)
visitDoWhileLoop
in interface GroovyCodeVisitor
visitDoWhileLoop
in class CodeVisitorSupport
public void visitIfElse(IfStatement ifElse)
visitIfElse
in interface GroovyCodeVisitor
visitIfElse
in class CodeVisitorSupport
public void visitTernaryExpression(TernaryExpression expression)
visitTernaryExpression
in interface GroovyCodeVisitor
visitTernaryExpression
in class CodeVisitorSupport
public void visitAssertStatement(AssertStatement statement)
visitAssertStatement
in interface GroovyCodeVisitor
visitAssertStatement
in class CodeVisitorSupport
public void visitTryCatchFinally(TryCatchStatement statement)
visitTryCatchFinally
in interface GroovyCodeVisitor
visitTryCatchFinally
in class CodeVisitorSupport
public void visitSwitch(SwitchStatement statement)
visitSwitch
in interface GroovyCodeVisitor
visitSwitch
in class CodeVisitorSupport
public void visitCaseStatement(CaseStatement statement)
visitCaseStatement
in interface GroovyCodeVisitor
visitCaseStatement
in class CodeVisitorSupport
public void visitCaseStatement(CaseStatement statement, int switchVariableIndex, org.objectweb.asm.Label thisLabel, org.objectweb.asm.Label nextLabel)
public void visitBreakStatement(BreakStatement statement)
visitBreakStatement
in interface GroovyCodeVisitor
visitBreakStatement
in class CodeVisitorSupport
public void visitContinueStatement(ContinueStatement statement)
visitContinueStatement
in interface GroovyCodeVisitor
visitContinueStatement
in class CodeVisitorSupport
public void visitSynchronizedStatement(SynchronizedStatement statement)
visitSynchronizedStatement
in interface GroovyCodeVisitor
visitSynchronizedStatement
in class CodeVisitorSupport
public void visitThrowStatement(ThrowStatement statement)
visitThrowStatement
in interface GroovyCodeVisitor
visitThrowStatement
in class CodeVisitorSupport
public void visitReturnStatement(ReturnStatement statement)
visitReturnStatement
in interface GroovyCodeVisitor
visitReturnStatement
in class CodeVisitorSupport
public void visitExpressionStatement(ExpressionStatement statement)
visitExpressionStatement
in interface GroovyCodeVisitor
visitExpressionStatement
in class CodeVisitorSupport
public void visitBinaryExpression(BinaryExpression expression)
visitBinaryExpression
in interface GroovyCodeVisitor
visitBinaryExpression
in class CodeVisitorSupport
public void visitPostfixExpression(PostfixExpression expression)
visitPostfixExpression
in interface GroovyCodeVisitor
visitPostfixExpression
in class CodeVisitorSupport
public void visitPrefixExpression(PrefixExpression expression)
visitPrefixExpression
in interface GroovyCodeVisitor
visitPrefixExpression
in class CodeVisitorSupport
public void visitClosureExpression(ClosureExpression expression)
visitClosureExpression
in interface GroovyCodeVisitor
visitClosureExpression
in class CodeVisitorSupport
protected void loadThisOrOwner()
public void visitRegexExpression(RegexExpression expression)
visitRegexExpression
in interface GroovyCodeVisitor
visitRegexExpression
in class CodeVisitorSupport
public void visitConstantExpression(ConstantExpression expression)
visitConstantExpression
in interface GroovyCodeVisitor
visitConstantExpression
in class CodeVisitorSupport
public void visitNegationExpression(NegationExpression expression)
visitNegationExpression
in interface GroovyCodeVisitor
visitNegationExpression
in class CodeVisitorSupport
public void visitCastExpression(CastExpression expression)
visitCastExpression
in interface GroovyCodeVisitor
visitCastExpression
in class CodeVisitorSupport
public void visitNotExpression(NotExpression expression)
visitNotExpression
in interface GroovyCodeVisitor
visitNotExpression
in class CodeVisitorSupport
public void visitBooleanExpression(BooleanExpression expression)
visitBooleanExpression
in interface GroovyCodeVisitor
visitBooleanExpression
in class CodeVisitorSupport
public void visitMethodCallExpression(MethodCallExpression call)
visitMethodCallExpression
in interface GroovyCodeVisitor
visitMethodCallExpression
in class CodeVisitorSupport
protected boolean emptyArguments(Expression arguments)
public void visitStaticMethodCallExpression(StaticMethodCallExpression call)
visitStaticMethodCallExpression
in interface GroovyCodeVisitor
visitStaticMethodCallExpression
in class CodeVisitorSupport
public void visitConstructorCallExpression(ConstructorCallExpression call)
visitConstructorCallExpression
in interface GroovyCodeVisitor
visitConstructorCallExpression
in class CodeVisitorSupport
public void visitPropertyExpression(PropertyExpression expression)
visitPropertyExpression
in interface GroovyCodeVisitor
visitPropertyExpression
in class CodeVisitorSupport
protected java.lang.String checkForQualifiedClass(PropertyExpression expression)
public void visitFieldExpression(FieldExpression expression)
visitFieldExpression
in interface GroovyCodeVisitor
visitFieldExpression
in class CodeVisitorSupport
protected void visitOuterFieldExpression(FieldExpression expression)
public void visitVariableExpression(VariableExpression expression)
visitVariableExpression
in interface GroovyCodeVisitor
visitVariableExpression
in class CodeVisitorSupport
protected boolean isInScriptBody()
protected boolean isPopRequired(Expression expression)
protected boolean firstStatementIsSuperMethodCall(Statement code)
protected void createSyntheticStaticFields()
public void visitClassExpression(ClassExpression expression)
visitClassExpression
in interface GroovyCodeVisitor
visitClassExpression
in class CodeVisitorSupport
public void visitRangeExpression(RangeExpression expression)
visitRangeExpression
in interface GroovyCodeVisitor
visitRangeExpression
in class CodeVisitorSupport
public void visitMapEntryExpression(MapEntryExpression expression)
visitMapEntryExpression
in interface GroovyCodeVisitor
visitMapEntryExpression
in class CodeVisitorSupport
public void visitMapExpression(MapExpression expression)
visitMapExpression
in interface GroovyCodeVisitor
visitMapExpression
in class CodeVisitorSupport
public void visitTupleExpression(TupleExpression expression)
visitTupleExpression
in interface GroovyCodeVisitor
visitTupleExpression
in class CodeVisitorSupport
public void visitArrayExpression(ArrayExpression expression)
visitArrayExpression
in interface GroovyCodeVisitor
visitArrayExpression
in class CodeVisitorSupport
public void visitListExpression(ListExpression expression)
visitListExpression
in interface GroovyCodeVisitor
visitListExpression
in class CodeVisitorSupport
public void visitGStringExpression(GStringExpression expression)
visitGStringExpression
in interface GroovyCodeVisitor
visitGStringExpression
in class CodeVisitorSupport
protected boolean addInnerClass(ClassNode innerClass)
protected ClassNode createClosureClass(ClosureExpression expression)
protected ClassNode getOutermostClass()
protected ClassNode createGStringClass(GStringExpression expression)
protected void doConvertAndCast(java.lang.String type)
protected void evaluateLogicalOrExpression(BinaryExpression expression)
protected void evaluateLogicalAndExpression(BinaryExpression expression)
protected void evaluateBinaryExpression(java.lang.String method, BinaryExpression expression)
protected void evaluateCompareTo(BinaryExpression expression)
protected void evaluateBinaryExpressionWithAsignment(java.lang.String method, BinaryExpression expression)
protected void evaluateBinaryExpression(MethodCaller compareMethod, BinaryExpression expression)
protected void evaluateEqual(BinaryExpression expression)
protected java.lang.String getLHSType(Expression leftExpression)
protected boolean isValidTypeForCast(java.lang.String type)
protected void visitAndAutobox(Expression expression)
protected void evaluatePrefixMethod(java.lang.String method, Expression expression)
protected void evaluatePostfixMethod(java.lang.String method, Expression expression)
protected boolean isHolderVariable(Expression expression)
protected void evaluateInstanceof(BinaryExpression expression)
protected boolean argumentsUseStack(Expression arguments)
protected boolean isNonStaticField(Expression expression)
protected boolean isThisExpression(Expression expression)
protected Expression createReturnLHSExpression(Expression expression)
protected Expression createReusableExpression(Expression expression)
protected boolean comparisonExpression(Expression expression)
protected void onLineNumber(ASTNode statement)
protected VariableScope getVariableScope()
protected Parameter[] getClosureSharedVariables(ClosureExpression expression)
protected boolean isNotFieldOfOutermostClass(java.lang.String var)
protected void findMutableVariables()
protected void addFieldsToVisitor(VariableScope scope)
protected java.lang.String getVariableType(java.lang.String name)
protected void resetVariableStack(Parameter[] parameters)
protected void popScope()
protected void pushBlockScope()
protected Variable defineVariable(java.lang.String name, java.lang.String type)
protected Variable defineVariable(java.lang.String name, java.lang.String type, boolean define)
protected boolean isFieldOrVariable(java.lang.String name)
protected Type checkValidType(Type type, ASTNode node, java.lang.String message)
protected java.lang.String checkValidType(java.lang.String type, ASTNode node, java.lang.String message)
protected java.lang.String resolveClassName(java.lang.String type)
protected java.lang.String createVariableName(java.lang.String type)
protected java.lang.Class getExpressionType(Expression expression)
protected boolean isPrimitiveFieldType(java.lang.String type)
protected boolean isInClosureConstructor()
protected boolean isStaticMethod()
protected java.lang.Class loadClass(java.lang.String name)
protected CompileUnit getCompileUnit()
|
|||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |