public class MemberCodeGen extends CodeGen
Modifier and Type | Class and Description |
---|---|
(package private) static class |
MemberCodeGen.JsrHook |
(package private) static class |
MemberCodeGen.JsrHook2 |
CodeGen.ReturnHook
Modifier and Type | Field and Description |
---|---|
protected MemberResolver |
resolver |
protected boolean |
resultStatic |
protected CtClass |
thisClass |
protected MethodInfo |
thisMethod |
arrayDim, binOp, breakList, bytecode, className, continueList, exprType, hasReturned, inStaticMethod, javaLangObject, javaLangString, jvmJavaLangObject, jvmJavaLangString, returnHooks, typeChecker
AALOAD, AASTORE, ACONST_NULL, ALOAD, ALOAD_0, ALOAD_1, ALOAD_2, ALOAD_3, ANEWARRAY, ARETURN, ARRAYLENGTH, ASTORE, ASTORE_0, ASTORE_1, ASTORE_2, ASTORE_3, ATHROW, BALOAD, BASTORE, BIPUSH, CALOAD, CASTORE, CHECKCAST, D2F, D2I, D2L, DADD, DALOAD, DASTORE, DCMPG, DCMPL, DCONST_0, DCONST_1, DDIV, DLOAD, DLOAD_0, DLOAD_1, DLOAD_2, DLOAD_3, DMUL, DNEG, DREM, DRETURN, DSTORE, DSTORE_0, DSTORE_1, DSTORE_2, DSTORE_3, 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, FLOAD_0, FLOAD_1, FLOAD_2, FLOAD_3, FMUL, FNEG, FREM, FRETURN, FSTORE, FSTORE_0, FSTORE_1, FSTORE_2, FSTORE_3, FSUB, GETFIELD, GETSTATIC, GOTO, GOTO_W, 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, ILOAD_0, ILOAD_1, ILOAD_2, ILOAD_3, IMUL, INEG, INSTANCEOF, INVOKEDYNAMIC, INVOKEINTERFACE, INVOKESPECIAL, INVOKESTATIC, INVOKEVIRTUAL, IOR, IREM, IRETURN, ISHL, ISHR, ISTORE, ISTORE_0, ISTORE_1, ISTORE_2, ISTORE_3, ISUB, IUSHR, IXOR, JSR, JSR_W, L2D, L2F, L2I, LADD, LALOAD, LAND, LASTORE, LCMP, LCONST_0, LCONST_1, LDC, LDC_W, LDC2_W, LDIV, LLOAD, LLOAD_0, LLOAD_1, LLOAD_2, LLOAD_3, LMUL, LNEG, LOOKUPSWITCH, LOR, LREM, LRETURN, LSHL, LSHR, LSTORE, LSTORE_0, LSTORE_1, LSTORE_2, LSTORE_3, LSUB, LUSHR, LXOR, MONITORENTER, MONITOREXIT, MULTIANEWARRAY, NEW, NEWARRAY, NOP, POP, POP2, PUTFIELD, PUTSTATIC, RET, RETURN, SALOAD, SASTORE, SIPUSH, STACK_GROW, SWAP, T_BOOLEAN, T_BYTE, T_CHAR, T_DOUBLE, T_FLOAT, T_INT, T_LONG, T_SHORT, TABLESWITCH, WIDE
ABSTRACT, AND_E, ANDAND, ARRAY, ARSHIFT, ARSHIFT_E, assignOps, BadToken, BLOCK, BOOLEAN, BREAK, BYTE, CALL, CASE, CATCH, CHAR, CharConstant, CLASS, CONST, CONTINUE, DECL, DEFAULT, DIV_E, DO, DOUBLE, DoubleConstant, ELSE, EQ, EXOR_E, EXPR, EXTENDS, FALSE, FINAL, FINALLY, FLOAT, FloatConstant, FOR, GE, GOTO, Identifier, IF, IMPLEMENTS, IMPORT, INSTANCEOF, INT, IntConstant, INTERFACE, LABEL, LE, LONG, LongConstant, LSHIFT, LSHIFT_E, MEMBER, MINUS_E, MINUSMINUS, MOD_E, MUL_E, NATIVE, NEQ, NEW, NULL, opNames, OR_E, OROR, PACKAGE, PLUS_E, PLUSPLUS, PRIVATE, PROTECTED, PUBLIC, RETURN, RSHIFT, RSHIFT_E, SHORT, STATIC, STRICT, StringL, SUPER, SWITCH, SYNCHRONIZED, THIS, THROW, THROWS, TRANSIENT, TRUE, TRY, VOID, VOLATILE, WHILE
Constructor and Description |
---|
MemberCodeGen(Bytecode b,
CtClass cc,
ClassPool cp) |
Modifier and Type | Method and Description |
---|---|
private int |
addFieldrefInfo(CtField f,
FieldInfo finfo) |
private void |
addFinally(java.util.ArrayList returnList,
Stmnt finallyBlock)
Adds a finally clause for earch return statement.
|
void |
atArrayInit(ArrayInit init) |
private void |
atArrayLength(ASTree expr) |
protected void |
atArrayVariableAssign(ArrayInit init,
int varType,
int varArray,
java.lang.String varClass) |
void |
atCallExpr(CallExpr expr) |
protected void |
atClassObject2(java.lang.String cname) |
protected void |
atFieldAssign(Expr expr,
int op,
ASTree left,
ASTree right,
boolean doDup) |
private void |
atFieldAssignCore(CtField f,
boolean is_static,
int fi,
boolean is2byte) |
protected void |
atFieldPlusPlus(int token,
boolean isPost,
ASTree oprand,
Expr expr,
boolean doDup) |
protected void |
atFieldRead(ASTree expr) |
private int |
atFieldRead(CtField f,
boolean isStatic)
Generates bytecode for reading a field value.
|
void |
atMember(Member mem) |
void |
atMethodArgs(ASTList args,
int[] types,
int[] dims,
java.lang.String[] cnames) |
void |
atMethodCallCore(CtClass targetClass,
java.lang.String mname,
ASTList args,
boolean isStatic,
boolean isSpecial,
int aload0pos,
MemberResolver.Method found) |
private void |
atMethodCallCore2(CtClass targetClass,
java.lang.String mname,
boolean isStatic,
boolean isSpecial,
int aload0pos,
int count,
MemberResolver.Method found) |
protected void |
atMultiNewArray(int type,
ASTList classname,
ASTList size) |
void |
atNewArrayExpr(NewExpr expr) |
private void |
atNewArrayExpr2(int type,
ASTree sizeExpr,
java.lang.String jvmClassname,
ArrayInit init) |
void |
atNewExpr(NewExpr expr) |
protected void |
atTryStmnt(Stmnt st) |
private static void |
badLvalue() |
private static void |
badMethod() |
private static void |
badNewExpr() |
protected CtField |
fieldAccess(ASTree expr,
boolean acceptLength) |
protected java.lang.String |
getAccessibleConstructor(java.lang.String desc,
CtClass declClass,
MethodInfo minfo) |
protected java.lang.String |
getAccessiblePrivate(java.lang.String methodName,
java.lang.String desc,
java.lang.String newDesc,
MethodInfo minfo,
CtClass declClass) |
int |
getMajorVersion()
Returns the major version of the class file
targeted by this compilation.
|
int |
getMethodArgsLength(ASTList args) |
protected java.lang.String |
getSuperName()
Returns the JVM-internal representation of this super class name.
|
CtClass |
getThisClass() |
protected java.lang.String |
getThisName()
Returns the JVM-internal representation of this class name.
|
protected void |
insertDefaultSuperCall() |
private AccessorMaker |
isAccessibleField(CtField f,
FieldInfo finfo)
Returns null if the field is accessible.
|
private boolean |
isEnclosing(CtClass outer,
CtClass inner) |
CtClass[] |
makeParamList(MethodDecl md) |
CtClass[] |
makeThrowsList(MethodDecl md) |
protected java.lang.String |
resolveClassName(ASTList name) |
protected java.lang.String |
resolveClassName(java.lang.String jvmName) |
private boolean |
setFieldType(FieldInfo finfo)
Sets exprType, arrayDim, and className.
|
(package private) void |
setReturnType(java.lang.String desc,
boolean isStatic,
boolean popTarget) |
void |
setThisMethod(CtMethod m)
Records the currently compiled method.
|
arrayAccess, atArrayPlusPlus, atArrayRead, atAssignCore, atAssignExpr, atAssignExpr, atASTList, atBinExpr, atCastExpr, atClassObject, atCondExpr, atDeclarator, atDoubleConst, atExpr, atFieldDecl, atInstanceOfExpr, atIntConst, atKeyword, atMethodBody, atMethodDecl, atNumCastExpr, atPair, atPlusPlusCore, atReturnStmnt, atReturnStmnt2, atStmnt, atStringL, atSymbol, atVariable, badAssign, badType, badTypes, compileBooleanExpr, compileExpr, doTypeCheck, fatal, getArrayReadOp, getArrayWriteOp, getCompOperator, getLocalVar, getMaxLocals, getTempVar, incMaxLocals, is2word, isP_INT, isRefType, lookupBinOp, patchGoto, rightIsStrong, setMaxLocals, setTypeChecker, toJvmArrayName, toJvmTypeName
protected MemberResolver resolver
protected CtClass thisClass
protected MethodInfo thisMethod
protected boolean resultStatic
public int getMajorVersion()
public void setThisMethod(CtMethod m)
public CtClass getThisClass()
protected java.lang.String getThisName()
getThisName
in class CodeGen
protected java.lang.String getSuperName() throws CompileError
getSuperName
in class CodeGen
CompileError
protected void insertDefaultSuperCall() throws CompileError
insertDefaultSuperCall
in class CodeGen
CompileError
protected void atTryStmnt(Stmnt st) throws CompileError
atTryStmnt
in class CodeGen
CompileError
private void addFinally(java.util.ArrayList returnList, Stmnt finallyBlock) throws CompileError
CompileError
public void atNewExpr(NewExpr expr) throws CompileError
atNewExpr
in class CodeGen
CompileError
public void atNewArrayExpr(NewExpr expr) throws CompileError
CompileError
private void atNewArrayExpr2(int type, ASTree sizeExpr, java.lang.String jvmClassname, ArrayInit init) throws CompileError
CompileError
private static void badNewExpr() throws CompileError
CompileError
protected void atArrayVariableAssign(ArrayInit init, int varType, int varArray, java.lang.String varClass) throws CompileError
atArrayVariableAssign
in class CodeGen
CompileError
public void atArrayInit(ArrayInit init) throws CompileError
atArrayInit
in class CodeGen
CompileError
protected void atMultiNewArray(int type, ASTList classname, ASTList size) throws CompileError
CompileError
public void atCallExpr(CallExpr expr) throws CompileError
atCallExpr
in class CodeGen
CompileError
private static void badMethod() throws CompileError
CompileError
public void atMethodCallCore(CtClass targetClass, java.lang.String mname, ASTList args, boolean isStatic, boolean isSpecial, int aload0pos, MemberResolver.Method found) throws CompileError
CompileError
private void atMethodCallCore2(CtClass targetClass, java.lang.String mname, boolean isStatic, boolean isSpecial, int aload0pos, int count, MemberResolver.Method found) throws CompileError
CompileError
protected java.lang.String getAccessiblePrivate(java.lang.String methodName, java.lang.String desc, java.lang.String newDesc, MethodInfo minfo, CtClass declClass) throws CompileError
CompileError
protected java.lang.String getAccessibleConstructor(java.lang.String desc, CtClass declClass, MethodInfo minfo) throws CompileError
CompileError
public int getMethodArgsLength(ASTList args)
public void atMethodArgs(ASTList args, int[] types, int[] dims, java.lang.String[] cnames) throws CompileError
CompileError
void setReturnType(java.lang.String desc, boolean isStatic, boolean popTarget) throws CompileError
CompileError
protected void atFieldAssign(Expr expr, int op, ASTree left, ASTree right, boolean doDup) throws CompileError
atFieldAssign
in class CodeGen
CompileError
private void atFieldAssignCore(CtField f, boolean is_static, int fi, boolean is2byte) throws CompileError
CompileError
public void atMember(Member mem) throws CompileError
atMember
in class CodeGen
CompileError
protected void atFieldRead(ASTree expr) throws CompileError
atFieldRead
in class CodeGen
CompileError
private void atArrayLength(ASTree expr) throws CompileError
CompileError
private int atFieldRead(CtField f, boolean isStatic) throws CompileError
CompileError
private AccessorMaker isAccessibleField(CtField f, FieldInfo finfo) throws CompileError
CompileError
private boolean setFieldType(FieldInfo finfo) throws CompileError
CompileError
protected void atClassObject2(java.lang.String cname) throws CompileError
atClassObject2
in class CodeGen
CompileError
protected void atFieldPlusPlus(int token, boolean isPost, ASTree oprand, Expr expr, boolean doDup) throws CompileError
atFieldPlusPlus
in class CodeGen
CompileError
protected CtField fieldAccess(ASTree expr, boolean acceptLength) throws CompileError
CompileError
private static void badLvalue() throws CompileError
CompileError
public CtClass[] makeParamList(MethodDecl md) throws CompileError
CompileError
public CtClass[] makeThrowsList(MethodDecl md) throws CompileError
CompileError
protected java.lang.String resolveClassName(ASTList name) throws CompileError
resolveClassName
in class CodeGen
CompileError
protected java.lang.String resolveClassName(java.lang.String jvmName) throws CompileError
resolveClassName
in class CodeGen
CompileError