|
|||||||||||
| 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
org.codehaus.groovy.classgen.AsmClassGenerator
Generates Java class versions of Groovy classes using ASM.
| Fields inherited from class org.codehaus.groovy.classgen.ClassGenerator |
asmJDKVersion, classLoader, innerClasses |
| Fields inherited from interface org.objectweb.asm.Constants |
AALOAD, AASTORE, ACC_ABSTRACT, ACC_ANNOTATION, 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, V1_1, V1_2, V1_3, V1_4, V1_5 |
| Constructor Summary | |
AsmClassGenerator(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)
|
private void |
addVariableNames(Expression expression,
java.util.List list)
|
protected boolean |
argumentsUseStack(Expression arguments)
|
private static boolean |
asBool(java.lang.Object object)
|
private static java.lang.Character |
asCharacter(java.lang.Number value)
|
private static java.lang.Character |
asCharacter(java.lang.String text)
|
private static java.lang.Object |
asType(java.lang.Object object,
java.lang.Class type)
|
private boolean |
canBeAssignedFrom(java.lang.Class l,
java.lang.Class r)
|
private boolean |
canBeAssignedFrom(Expression l,
Expression r)
|
private boolean |
canBeAssignedFrom(java.lang.String ltype,
java.lang.String rtype)
|
private void |
cast(java.lang.Class aClass)
|
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)
|
private void |
copyTypeClass(Expression leftExpression,
Expression rightExpression)
|
protected ClassNode |
createClosureClass(ClosureExpression expression)
|
private void |
createDummyClass(ClassNode classNode)
|
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)
|
private Variable |
defineVariable(java.lang.String name,
Type type,
boolean define)
|
protected void |
doConvertAndCast(java.lang.String type)
|
protected void |
doConvertAndCast(java.lang.String type,
Expression expression,
boolean ignoreAutoboxing)
Casts to the given type unless it can be determined that the cast is unnecessary |
protected boolean |
emptyArguments(Expression arguments)
|
protected void |
evalBinaryExp_EarlyBinding(MethodCaller compareMethod,
BinaryExpression expression)
note: leave the primitive boolean on staock for comparison expressions. |
protected void |
evalBinaryExp_LateBinding(MethodCaller compareMethod,
BinaryExpression expression)
|
private void |
evaluateBinaryExpression(MethodCaller compareMethod,
BinaryExpression bin)
|
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 |
evaluateExpression(Expression 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 ConstructorNode |
findSuperConstructor(MethodCallExpression call)
Attempts to find the constructor in a super class |
protected MethodNode |
findSuperMethod(MethodCallExpression call)
Attempts to find the method of the given name in a super class |
protected boolean |
firstStatementIsSuperInit(Statement code)
|
protected Parameter[] |
getClosureSharedVariables(ClosureExpression expression)
|
protected CompileUnit |
getCompileUnit()
|
protected java.lang.String |
getExpressionType(Expression expression)
|
protected java.lang.String |
getLHSType(Expression leftExpression)
Deduces the type name required for some casting |
private MetaMethod |
getMethodOfThisAndSuper(java.lang.String methName,
java.lang.Class[] argsArray,
boolean isStaticCall)
search in the current classNode and super class for matching method |
private int |
getNextVariableID()
|
protected ClassNode |
getOutermostClass()
|
protected VariableScope |
getVariableScope()
|
protected java.lang.String |
getVariableType(java.lang.String name)
|
protected boolean |
isComparisonExpression(Expression expression)
|
private boolean |
isDoubleSizeVariable(Type type)
|
protected boolean |
isFieldOrVariable(java.lang.String name)
|
protected boolean |
isGroovyObject(Expression objectExpression)
|
protected boolean |
isHolderVariable(Expression expression)
|
protected boolean |
isInClosureConstructor()
|
private boolean |
isInnerClass()
|
protected boolean |
isInScriptBody()
|
protected boolean |
isNonStaticField(Expression expression)
|
protected boolean |
isNotFieldOfOutermostClass(java.lang.String var)
|
protected boolean |
isPopRequired(Expression expression)
|
protected static boolean |
isPrimitiveFieldType(java.lang.String type)
|
protected boolean |
isStaticMethod()
|
protected boolean |
isThisExpression(Expression expression)
|
protected boolean |
isValidTypeForCast(java.lang.String type)
|
private void |
load(Expression exp)
|
protected void |
loadArguments(Parameter[] parameters,
Expression expression)
Loads and coerces the argument values for the given method call |
protected java.lang.Class |
loadClass(java.lang.String name)
|
void |
loadInstanceField(FieldExpression fldExp)
RHS instance field. |
void |
loadStaticField(FieldExpression 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,
java.lang.String message)
|
protected void |
popScope()
|
protected void |
processFieldAccess(java.lang.String name,
FieldNode field,
int steps)
|
protected void |
processPropertyVariable(Variable variable)
|
protected void |
processStackVariable(Variable variable)
|
protected void |
pushBlockScope()
|
protected void |
pushBlockScope(boolean canContinue,
boolean canBreak)
create a new scope. |
(package private) void |
removeVar(Variable v)
|
protected void |
resetVariableStack(Parameter[] parameters)
|
void |
resolve(AttributeExpression attributeExpression)
|
void |
resolve(ConstructorCallExpression call)
attemtp to identify the exact runtime method call the expression is intended for, for possible early binding. |
void |
resolve(MethodCallExpression call)
attemtp to identify the exact runtime method call the expression is intended for, for possible early binding. |
void |
resolve(PropertyExpression propertyExpression)
|
MetaMethod |
resolve(StaticMethodCallExpression staticCall)
|
void |
resolve(VariableExpression expression)
to find out the real type of a Variable Object |
protected java.lang.String |
resolveClassName(java.lang.String type)
|
private void |
store(Expression expression)
|
private Variable |
storeInTemp(java.lang.String name,
java.lang.String type)
|
void |
storeStaticField(FieldExpression expression)
|
void |
storeThisInstanceField(FieldExpression expression)
|
private void |
throwException(java.lang.String s)
|
protected void |
visitAndAutoboxBoolean(Expression expression)
|
void |
visitArrayExpression(ArrayExpression expression)
|
void |
visitAssertStatement(AssertStatement statement)
|
private Variable |
visitASTOREInTemp(java.lang.String s)
|
void |
visitAttributeExpression(AttributeExpression expression)
|
void |
visitBinaryExpression(BinaryExpression expression)
|
void |
visitBitwiseNegExpression(BitwiseNegExpression expression)
|
void |
visitBooleanExpression(BooleanExpression expression)
return a primitive boolean value of the BooleanExpresion. |
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)
load class object on stack |
void |
visitClosureExpression(ClosureExpression expression)
|
void |
visitConstantExpression(ConstantExpression expression)
Generate byte code for constants |
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,
ClassNode outerClassNode,
int steps,
boolean first)
|
protected void |
visitParameter(ASTNode node,
Parameter parameter)
|
protected void |
visitParameters(ASTNode node,
Parameter[] parameters)
|
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)
|
private void |
visitVariableEndLabel(Variable v)
|
void |
visitVariableExpression(VariableExpression expression)
Visits a bare (unqualified) variable expression. |
private void |
visitVariableStartLabel(Variable variable)
|
void |
visitWhileLoop(WhileStatement loop)
|
| Methods inherited from class org.codehaus.groovy.classgen.ClassGenerator |
getClassLoader, getInnerClasses |
| 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 |
| Field Detail |
private java.util.logging.Logger log
private org.objectweb.asm.ClassVisitor cw
private org.objectweb.asm.CodeVisitor cv
private GeneratorContext context
private java.lang.String sourceFile
private ClassNode classNode
private ClassNode outermostClass
private java.lang.String internalClassName
private java.lang.String internalBaseClassName
private java.util.Map variableStack
private boolean outputReturn
private boolean leftHandExpression
MethodCaller invokeMethodMethod
MethodCaller invokeMethodSafeMethod
MethodCaller invokeStaticMethodMethod
MethodCaller invokeConstructorMethod
MethodCaller invokeConstructorOfMethod
MethodCaller invokeNoArgumentsConstructorOf
MethodCaller invokeClosureMethod
MethodCaller invokeSuperMethodMethod
MethodCaller invokeNoArgumentsMethod
MethodCaller invokeStaticNoArgumentsMethod
MethodCaller asIntMethod
MethodCaller asTypeMethod
MethodCaller getAttributeMethod
MethodCaller getAttributeSafeMethod
MethodCaller setAttributeMethod2
MethodCaller setAttributeSafeMethod2
MethodCaller getPropertyMethod
MethodCaller getPropertySafeMethod
MethodCaller setPropertyMethod
MethodCaller setPropertyMethod2
MethodCaller setPropertySafeMethod2
MethodCaller getGroovyObjectPropertyMethod
MethodCaller setGroovyObjectPropertyMethod
MethodCaller asIteratorMethod
MethodCaller asBool
MethodCaller notBoolean
MethodCaller notObject
MethodCaller regexPattern
MethodCaller negation
MethodCaller bitNegation
MethodCaller convertPrimitiveArray
MethodCaller convertToPrimitiveArray
MethodCaller compareIdenticalMethod
MethodCaller compareEqualMethod
MethodCaller compareNotEqualMethod
MethodCaller compareToMethod
MethodCaller findRegexMethod
MethodCaller matchRegexMethod
MethodCaller compareLessThanMethod
MethodCaller compareLessThanEqualMethod
MethodCaller compareGreaterThanMethod
MethodCaller compareGreaterThanEqualMethod
MethodCaller isCaseMethod
MethodCaller createListMethod
MethodCaller createTupleMethod
MethodCaller createMapMethod
MethodCaller createRangeMethod
MethodCaller assertFailedMethod
MethodCaller iteratorNextMethod
MethodCaller iteratorHasNextMethod
private int lastVariableIndex
private static int tempVariableNameCounter
private java.util.List exceptionBlocks
private boolean definingParameters
private java.util.Set syntheticStaticFields
private java.util.Set mutableVars
private boolean passingClosureParams
private ConstructorNode constructorNode
private MethodNode methodNode
private BlockScope scope
private BytecodeHelper helper
private VariableScope variableScope
public static final boolean CREATE_DEBUG_INFO
public static final boolean CREATE_LINE_NUMBER_INFO
private static final boolean MARK_START
public static final java.lang.String EB_SWITCH_NAME
public boolean ENABLE_EARLY_BINDING
public static final boolean ASM_DEBUG
private int lineNumber
private int columnNumber
private ASTNode currentASTNode
private DummyClassGenerator dummyGen
private org.objectweb.asm.ClassWriter dummyClassWriter
java.util.Map classCache
| Constructor Detail |
public AsmClassGenerator(GeneratorContext context,
org.objectweb.asm.ClassVisitor classVisitor,
java.lang.ClassLoader classLoader,
java.lang.String sourceFile)
| Method Detail |
public void visitClass(ClassNode classNode)
private void createDummyClass(ClassNode classNode)
public void visitConstructor(ConstructorNode node)
public void visitMethod(MethodNode node)
protected void visitParameters(ASTNode node,
Parameter[] parameters)
protected void visitParameter(ASTNode node,
Parameter parameter)
public void visitField(FieldNode fieldNode)
public void visitProperty(PropertyNode statement)
public void visitForLoop(ForStatement loop)
visitForLoop in interface GroovyCodeVisitorvisitForLoop in class CodeVisitorSupportpublic void visitWhileLoop(WhileStatement loop)
visitWhileLoop in interface GroovyCodeVisitorvisitWhileLoop in class CodeVisitorSupportpublic void visitDoWhileLoop(DoWhileStatement loop)
visitDoWhileLoop in interface GroovyCodeVisitorvisitDoWhileLoop in class CodeVisitorSupportpublic void visitIfElse(IfStatement ifElse)
visitIfElse in interface GroovyCodeVisitorvisitIfElse in class CodeVisitorSupportpublic void visitTernaryExpression(TernaryExpression expression)
visitTernaryExpression in interface GroovyCodeVisitorvisitTernaryExpression in class CodeVisitorSupportpublic void visitAssertStatement(AssertStatement statement)
visitAssertStatement in interface GroovyCodeVisitorvisitAssertStatement in class CodeVisitorSupport
private void addVariableNames(Expression expression,
java.util.List list)
public void visitTryCatchFinally(TryCatchStatement statement)
visitTryCatchFinally in interface GroovyCodeVisitorvisitTryCatchFinally in class CodeVisitorSupport
private Variable storeInTemp(java.lang.String name,
java.lang.String type)
public void visitSwitch(SwitchStatement statement)
visitSwitch in interface GroovyCodeVisitorvisitSwitch in class CodeVisitorSupportpublic void visitCaseStatement(CaseStatement statement)
visitCaseStatement in interface GroovyCodeVisitorvisitCaseStatement 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 GroovyCodeVisitorvisitBreakStatement in class CodeVisitorSupportpublic void visitContinueStatement(ContinueStatement statement)
visitContinueStatement in interface GroovyCodeVisitorvisitContinueStatement in class CodeVisitorSupportpublic void visitSynchronizedStatement(SynchronizedStatement statement)
visitSynchronizedStatement in interface GroovyCodeVisitorvisitSynchronizedStatement in class CodeVisitorSupportpublic void visitThrowStatement(ThrowStatement statement)
visitThrowStatement in interface GroovyCodeVisitorvisitThrowStatement in class CodeVisitorSupportpublic void visitReturnStatement(ReturnStatement statement)
visitReturnStatement in interface GroovyCodeVisitorvisitReturnStatement in class CodeVisitorSupport
protected void doConvertAndCast(java.lang.String type,
Expression expression,
boolean ignoreAutoboxing)
protected void evaluateExpression(Expression expression)
expression - public void visitExpressionStatement(ExpressionStatement statement)
visitExpressionStatement in interface GroovyCodeVisitorvisitExpressionStatement in class CodeVisitorSupportpublic void visitBinaryExpression(BinaryExpression expression)
visitBinaryExpression in interface GroovyCodeVisitorvisitBinaryExpression in class CodeVisitorSupportprivate void load(Expression exp)
public void visitPostfixExpression(PostfixExpression expression)
visitPostfixExpression in interface GroovyCodeVisitorvisitPostfixExpression in class CodeVisitorSupportprivate void store(Expression expression)
private void throwException(java.lang.String s)
public void visitPrefixExpression(PrefixExpression expression)
visitPrefixExpression in interface GroovyCodeVisitorvisitPrefixExpression in class CodeVisitorSupportpublic void visitClosureExpression(ClosureExpression expression)
visitClosureExpression in interface GroovyCodeVisitorvisitClosureExpression in class CodeVisitorSupportprotected void loadThisOrOwner()
public void visitRegexExpression(RegexExpression expression)
visitRegexExpression in interface GroovyCodeVisitorvisitRegexExpression in class CodeVisitorSupportpublic void visitConstantExpression(ConstantExpression expression)
visitConstantExpression in interface GroovyCodeVisitorvisitConstantExpression in class CodeVisitorSupportpublic void visitNegationExpression(NegationExpression expression)
visitNegationExpression in interface GroovyCodeVisitorvisitNegationExpression in class CodeVisitorSupportpublic void visitBitwiseNegExpression(BitwiseNegExpression expression)
visitBitwiseNegExpression in interface GroovyCodeVisitorvisitBitwiseNegExpression in class CodeVisitorSupportpublic void visitCastExpression(CastExpression expression)
visitCastExpression in interface GroovyCodeVisitorvisitCastExpression in class CodeVisitorSupportpublic void visitNotExpression(NotExpression expression)
visitNotExpression in interface GroovyCodeVisitorvisitNotExpression in class CodeVisitorSupportpublic void visitBooleanExpression(BooleanExpression expression)
visitBooleanExpression in interface GroovyCodeVisitorvisitBooleanExpression in class CodeVisitorSupportexpression - public void visitMethodCallExpression(MethodCallExpression call)
visitMethodCallExpression in interface GroovyCodeVisitorvisitMethodCallExpression in class CodeVisitorSupport
protected void loadArguments(Parameter[] parameters,
Expression expression)
protected MethodNode findSuperMethod(MethodCallExpression call)
protected ConstructorNode findSuperConstructor(MethodCallExpression call)
protected boolean emptyArguments(Expression arguments)
public void visitStaticMethodCallExpression(StaticMethodCallExpression call)
visitStaticMethodCallExpression in interface GroovyCodeVisitorvisitStaticMethodCallExpression in class CodeVisitorSupportpublic void visitConstructorCallExpression(ConstructorCallExpression call)
visitConstructorCallExpression in interface GroovyCodeVisitorvisitConstructorCallExpression in class CodeVisitorSupportpublic void visitPropertyExpression(PropertyExpression expression)
visitPropertyExpression in interface GroovyCodeVisitorvisitPropertyExpression in class CodeVisitorSupportpublic void visitAttributeExpression(AttributeExpression expression)
visitAttributeExpression in interface GroovyCodeVisitorvisitAttributeExpression in class CodeVisitorSupportprotected boolean isGroovyObject(Expression objectExpression)
protected java.lang.String checkForQualifiedClass(PropertyExpression expression)
public void visitFieldExpression(FieldExpression expression)
visitFieldExpression in interface GroovyCodeVisitorvisitFieldExpression in class CodeVisitorSupportpublic void loadStaticField(FieldExpression fldExp)
fldExp - public void loadInstanceField(FieldExpression fldExp)
fldExp - public void storeThisInstanceField(FieldExpression expression)
public void storeStaticField(FieldExpression expression)
protected void visitOuterFieldExpression(FieldExpression expression,
ClassNode outerClassNode,
int steps,
boolean first)
public void visitVariableExpression(VariableExpression expression)
visitVariableExpression in interface GroovyCodeVisitorvisitVariableExpression in class CodeVisitorSupportprotected void processStackVariable(Variable variable)
private void visitVariableStartLabel(Variable variable)
protected void processPropertyVariable(Variable variable)
protected void processFieldAccess(java.lang.String name,
FieldNode field,
int steps)
protected boolean isInScriptBody()
protected boolean isPopRequired(Expression expression)
protected boolean firstStatementIsSuperInit(Statement code)
protected void createSyntheticStaticFields()
public void visitClassExpression(ClassExpression expression)
visitClassExpression in interface GroovyCodeVisitorvisitClassExpression in class CodeVisitorSupportpublic void visitRangeExpression(RangeExpression expression)
visitRangeExpression in interface GroovyCodeVisitorvisitRangeExpression in class CodeVisitorSupportpublic void visitMapEntryExpression(MapEntryExpression expression)
visitMapEntryExpression in interface GroovyCodeVisitorvisitMapEntryExpression in class CodeVisitorSupportpublic void visitMapExpression(MapExpression expression)
visitMapExpression in interface GroovyCodeVisitorvisitMapExpression in class CodeVisitorSupportpublic void visitTupleExpression(TupleExpression expression)
visitTupleExpression in interface GroovyCodeVisitorvisitTupleExpression in class CodeVisitorSupportpublic void visitArrayExpression(ArrayExpression expression)
visitArrayExpression in interface GroovyCodeVisitorvisitArrayExpression in class CodeVisitorSupportpublic void visitListExpression(ListExpression expression)
visitListExpression in interface GroovyCodeVisitorvisitListExpression in class CodeVisitorSupportpublic void visitGStringExpression(GStringExpression expression)
visitGStringExpression in interface GroovyCodeVisitorvisitGStringExpression in class CodeVisitorSupportprivate Variable visitASTOREInTemp(java.lang.String s)
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)
private void evaluateBinaryExpression(MethodCaller compareMethod,
BinaryExpression bin)
protected void evalBinaryExp_LateBinding(MethodCaller compareMethod,
BinaryExpression expression)
protected void evalBinaryExp_EarlyBinding(MethodCaller compareMethod,
BinaryExpression expression)
compareMethod - expression - private void cast(java.lang.Class aClass)
protected void evaluateEqual(BinaryExpression expression)
private void copyTypeClass(Expression leftExpression,
Expression rightExpression)
private boolean canBeAssignedFrom(java.lang.String ltype,
java.lang.String rtype)
private boolean canBeAssignedFrom(Expression l,
Expression r)
private boolean canBeAssignedFrom(java.lang.Class l,
java.lang.Class r)
protected java.lang.String getLHSType(Expression leftExpression)
protected boolean isValidTypeForCast(java.lang.String type)
protected void visitAndAutoboxBoolean(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 isComparisonExpression(Expression expression)
protected void onLineNumber(ASTNode statement,
java.lang.String message)
protected VariableScope getVariableScope()
protected Parameter[] getClosureSharedVariables(ClosureExpression expression)
protected boolean isNotFieldOfOutermostClass(java.lang.String var)
protected void findMutableVariables()
protected void addFieldsToVisitor(VariableScope scope)
private boolean isInnerClass()
protected java.lang.String getVariableType(java.lang.String name)
protected void resetVariableStack(Parameter[] parameters)
protected void popScope()
void removeVar(Variable v)
private void visitVariableEndLabel(Variable v)
protected void pushBlockScope()
protected void pushBlockScope(boolean canContinue,
boolean canBreak)
canContinue - true if the start of the scope can take continue labelcanBreak - true if the end of the scope can take break label
protected Variable defineVariable(java.lang.String name,
java.lang.String type)
protected Variable defineVariable(java.lang.String name,
java.lang.String type,
boolean define)
private Variable defineVariable(java.lang.String name,
Type type,
boolean define)
private boolean isDoubleSizeVariable(Type type)
private int getNextVariableID()
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.String getExpressionType(Expression expression)
protected static boolean isPrimitiveFieldType(java.lang.String type)
protected boolean isInClosureConstructor()
protected boolean isStaticMethod()
protected java.lang.Class loadClass(java.lang.String name)
protected CompileUnit getCompileUnit()
public void resolve(MethodCallExpression call)
call - public void resolve(ConstructorCallExpression call)
call - public void resolve(PropertyExpression propertyExpression)
public void resolve(AttributeExpression attributeExpression)
private MetaMethod getMethodOfThisAndSuper(java.lang.String methName,
java.lang.Class[] argsArray,
boolean isStaticCall)
public void resolve(VariableExpression expression)
public MetaMethod resolve(StaticMethodCallExpression staticCall)
private static java.lang.Object asType(java.lang.Object object,
java.lang.Class type)
private static boolean asBool(java.lang.Object object)
private static java.lang.Character asCharacter(java.lang.Number value)
private static java.lang.Character asCharacter(java.lang.String text)
|
|||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||||