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, typeCheckerAALOAD, 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, WIDEABSTRACT, 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, toJvmTypeNameprotected 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 CodeGenprotected java.lang.String getSuperName()
throws CompileError
getSuperName in class CodeGenCompileErrorprotected void insertDefaultSuperCall()
throws CompileError
insertDefaultSuperCall in class CodeGenCompileErrorprotected void atTryStmnt(Stmnt st) throws CompileError
atTryStmnt in class CodeGenCompileErrorprivate void addFinally(java.util.ArrayList returnList,
Stmnt finallyBlock)
throws CompileError
CompileErrorpublic void atNewExpr(NewExpr expr) throws CompileError
atNewExpr in class CodeGenCompileErrorpublic void atNewArrayExpr(NewExpr expr) throws CompileError
CompileErrorprivate void atNewArrayExpr2(int type,
ASTree sizeExpr,
java.lang.String jvmClassname,
ArrayInit init)
throws CompileError
CompileErrorprivate static void badNewExpr()
throws CompileError
CompileErrorprotected void atArrayVariableAssign(ArrayInit init, int varType, int varArray, java.lang.String varClass) throws CompileError
atArrayVariableAssign in class CodeGenCompileErrorpublic void atArrayInit(ArrayInit init) throws CompileError
atArrayInit in class CodeGenCompileErrorprotected void atMultiNewArray(int type,
ASTList classname,
ASTList size)
throws CompileError
CompileErrorpublic void atCallExpr(CallExpr expr) throws CompileError
atCallExpr in class CodeGenCompileErrorprivate static void badMethod()
throws CompileError
CompileErrorpublic void atMethodCallCore(CtClass targetClass, java.lang.String mname, ASTList args, boolean isStatic, boolean isSpecial, int aload0pos, MemberResolver.Method found) throws CompileError
CompileErrorprivate void atMethodCallCore2(CtClass targetClass, java.lang.String mname, boolean isStatic, boolean isSpecial, int aload0pos, int count, MemberResolver.Method found) throws CompileError
CompileErrorprotected java.lang.String getAccessiblePrivate(java.lang.String methodName,
java.lang.String desc,
java.lang.String newDesc,
MethodInfo minfo,
CtClass declClass)
throws CompileError
CompileErrorprotected java.lang.String getAccessibleConstructor(java.lang.String desc,
CtClass declClass,
MethodInfo minfo)
throws CompileError
CompileErrorpublic int getMethodArgsLength(ASTList args)
public void atMethodArgs(ASTList args, int[] types, int[] dims, java.lang.String[] cnames) throws CompileError
CompileErrorvoid setReturnType(java.lang.String desc,
boolean isStatic,
boolean popTarget)
throws CompileError
CompileErrorprotected void atFieldAssign(Expr expr, int op, ASTree left, ASTree right, boolean doDup) throws CompileError
atFieldAssign in class CodeGenCompileErrorprivate void atFieldAssignCore(CtField f, boolean is_static, int fi, boolean is2byte) throws CompileError
CompileErrorpublic void atMember(Member mem) throws CompileError
atMember in class CodeGenCompileErrorprotected void atFieldRead(ASTree expr) throws CompileError
atFieldRead in class CodeGenCompileErrorprivate void atArrayLength(ASTree expr) throws CompileError
CompileErrorprivate int atFieldRead(CtField f, boolean isStatic) throws CompileError
CompileErrorprivate AccessorMaker isAccessibleField(CtField f, FieldInfo finfo) throws CompileError
CompileErrorprivate boolean setFieldType(FieldInfo finfo) throws CompileError
CompileErrorprotected void atClassObject2(java.lang.String cname)
throws CompileError
atClassObject2 in class CodeGenCompileErrorprotected void atFieldPlusPlus(int token,
boolean isPost,
ASTree oprand,
Expr expr,
boolean doDup)
throws CompileError
atFieldPlusPlus in class CodeGenCompileErrorprotected CtField fieldAccess(ASTree expr, boolean acceptLength) throws CompileError
CompileErrorprivate static void badLvalue()
throws CompileError
CompileErrorpublic CtClass[] makeParamList(MethodDecl md) throws CompileError
CompileErrorpublic CtClass[] makeThrowsList(MethodDecl md) throws CompileError
CompileErrorprotected java.lang.String resolveClassName(ASTList name) throws CompileError
resolveClassName in class CodeGenCompileErrorprotected java.lang.String resolveClassName(java.lang.String jvmName)
throws CompileError
resolveClassName in class CodeGenCompileError