Package javassist.compiler
Class MemberCodeGen
java.lang.Object
javassist.compiler.ast.Visitor
javassist.compiler.CodeGen
javassist.compiler.MemberCodeGen
- Direct Known Subclasses:
JvstCodeGen
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescription(package private) static class
(package private) static class
Nested classes/interfaces inherited from class javassist.compiler.CodeGen
CodeGen.ReturnHook
-
Field Summary
FieldsModifier and TypeFieldDescriptionprotected MemberResolver
protected boolean
protected CtClass
protected MethodInfo
Fields inherited from class javassist.compiler.CodeGen
arrayDim, binOp, breakList, bytecode, className, continueList, exprType, hasReturned, inStaticMethod, javaLangObject, javaLangString, jvmJavaLangObject, jvmJavaLangString, returnHooks, typeChecker
Fields inherited from interface javassist.bytecode.Opcode
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
Fields inherited from interface javassist.compiler.TokenId
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 Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprivate int
addFieldrefInfo
(CtField f, FieldInfo finfo) private void
addFinally
(List<int[]> 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, String varClass) void
atCallExpr
(CallExpr expr) protected void
atClassObject2
(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
void
atMethodArgs
(ASTList args, int[] types, int[] dims, String[] cnames) void
atMethodCallCore
(CtClass targetClass, String mname, ASTList args, boolean isStatic, boolean isSpecial, int aload0pos, MemberResolver.Method found) private void
atMethodCallCore2
(CtClass targetClass, String mname, boolean isStatic, boolean isSpecial, int aload0pos, MemberResolver.Method found) protected void
atMultiNewArray
(int type, ASTList classname, ASTList size) void
atNewArrayExpr
(NewExpr expr) private void
atNewArrayExpr2
(int type, ASTree sizeExpr, String jvmClassname, ArrayInit init) void
protected void
atTryStmnt
(Stmnt st) private static void
private static void
private static void
protected CtField
fieldAccess
(ASTree expr, boolean acceptLength) protected String
getAccessibleConstructor
(String desc, CtClass declClass, MethodInfo minfo) protected String
getAccessiblePrivate
(String methodName, String desc, String newDesc, MethodInfo minfo, CtClass declClass) int
Returns the major version of the class file targeted by this compilation.int
getMethodArgsLength
(ASTList args) protected String
Returns the JVM-internal representation of this super class name.protected String
Returns the JVM-internal representation of this class name.protected void
private AccessorMaker
isAccessibleField
(CtField f, FieldInfo finfo) Returns null if the field is accessible.private boolean
isEnclosing
(CtClass outer, CtClass inner) private boolean
isFromSameDeclaringClass
(CtClass outer, CtClass inner) CtClass[]
CtClass[]
protected String
resolveClassName
(String jvmName) protected String
resolveClassName
(ASTList name) private boolean
setFieldType
(FieldInfo finfo) Sets exprType, arrayDim, and className.(package private) void
setReturnType
(String desc, boolean isStatic, boolean popTarget) void
Records the currently compiled method.Methods inherited from class javassist.compiler.CodeGen
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
-
Field Details
-
resolver
-
thisClass
-
thisMethod
-
resultStatic
protected boolean resultStatic
-
-
Constructor Details
-
MemberCodeGen
-
-
Method Details
-
getMajorVersion
public int getMajorVersion()Returns the major version of the class file targeted by this compilation. -
setThisMethod
Records the currently compiled method. -
getThisClass
-
getThisName
Returns the JVM-internal representation of this class name.- Specified by:
getThisName
in classCodeGen
-
getSuperName
Returns the JVM-internal representation of this super class name.- Specified by:
getSuperName
in classCodeGen
- Throws:
CompileError
-
insertDefaultSuperCall
- Specified by:
insertDefaultSuperCall
in classCodeGen
- Throws:
CompileError
-
atTryStmnt
- Overrides:
atTryStmnt
in classCodeGen
- Throws:
CompileError
-
addFinally
Adds a finally clause for earch return statement.- Throws:
CompileError
-
atNewExpr
- Specified by:
atNewExpr
in classCodeGen
- Throws:
CompileError
-
atNewArrayExpr
- Throws:
CompileError
-
atNewArrayExpr2
private void atNewArrayExpr2(int type, ASTree sizeExpr, String jvmClassname, ArrayInit init) throws CompileError - Throws:
CompileError
-
badNewExpr
- Throws:
CompileError
-
atArrayVariableAssign
protected void atArrayVariableAssign(ArrayInit init, int varType, int varArray, String varClass) throws CompileError - Specified by:
atArrayVariableAssign
in classCodeGen
- Throws:
CompileError
-
atArrayInit
- Specified by:
atArrayInit
in classCodeGen
- Throws:
CompileError
-
atMultiNewArray
- Throws:
CompileError
-
atCallExpr
- Specified by:
atCallExpr
in classCodeGen
- Throws:
CompileError
-
badMethod
- Throws:
CompileError
-
atMethodCallCore
public void atMethodCallCore(CtClass targetClass, String mname, ASTList args, boolean isStatic, boolean isSpecial, int aload0pos, MemberResolver.Method found) throws CompileError - Throws:
CompileError
-
isFromSameDeclaringClass
-
atMethodCallCore2
private void atMethodCallCore2(CtClass targetClass, String mname, boolean isStatic, boolean isSpecial, int aload0pos, MemberResolver.Method found) throws CompileError - Throws:
CompileError
-
getAccessiblePrivate
protected String getAccessiblePrivate(String methodName, String desc, String newDesc, MethodInfo minfo, CtClass declClass) throws CompileError - Throws:
CompileError
-
getAccessibleConstructor
protected String getAccessibleConstructor(String desc, CtClass declClass, MethodInfo minfo) throws CompileError - Throws:
CompileError
-
isEnclosing
-
getMethodArgsLength
-
atMethodArgs
public void atMethodArgs(ASTList args, int[] types, int[] dims, String[] cnames) throws CompileError - Throws:
CompileError
-
setReturnType
- Throws:
CompileError
-
atFieldAssign
protected void atFieldAssign(Expr expr, int op, ASTree left, ASTree right, boolean doDup) throws CompileError - Specified by:
atFieldAssign
in classCodeGen
- Throws:
CompileError
-
atFieldAssignCore
private void atFieldAssignCore(CtField f, boolean is_static, int fi, boolean is2byte) throws CompileError - Throws:
CompileError
-
atMember
- Specified by:
atMember
in classCodeGen
- Throws:
CompileError
-
atFieldRead
- Specified by:
atFieldRead
in classCodeGen
- Throws:
CompileError
-
atArrayLength
- Throws:
CompileError
-
atFieldRead
Generates bytecode for reading a field value. It returns a fieldref_info index or zero if the field is a private one declared in an enclosing class.- Throws:
CompileError
-
isAccessibleField
Returns null if the field is accessible. Otherwise, it throws an exception or it returns AccessorMaker if the field is a private one declared in an enclosing class.- Throws:
CompileError
-
setFieldType
Sets exprType, arrayDim, and className.- Returns:
- true if the field type is long or double.
- Throws:
CompileError
-
addFieldrefInfo
-
atClassObject2
- Overrides:
atClassObject2
in classCodeGen
- Throws:
CompileError
-
atFieldPlusPlus
protected void atFieldPlusPlus(int token, boolean isPost, ASTree oprand, Expr expr, boolean doDup) throws CompileError - Specified by:
atFieldPlusPlus
in classCodeGen
- Throws:
CompileError
-
fieldAccess
- Throws:
CompileError
-
badLvalue
- Throws:
CompileError
-
makeParamList
- Throws:
CompileError
-
makeThrowsList
- Throws:
CompileError
-
resolveClassName
- Specified by:
resolveClassName
in classCodeGen
- Throws:
CompileError
-
resolveClassName
- Specified by:
resolveClassName
in classCodeGen
- Throws:
CompileError
-