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 classNested classes/interfaces inherited from class javassist.compiler.CodeGen
CodeGen.ReturnHook -
Field Summary
FieldsModifier and TypeFieldDescriptionprotected MemberResolverprotected booleanprotected CtClassprotected MethodInfoFields inherited from class javassist.compiler.CodeGen
arrayDim, binOp, breakList, bytecode, className, continueList, exprType, hasReturned, inStaticMethod, javaLangObject, javaLangString, jvmJavaLangObject, jvmJavaLangString, returnHooks, typeCheckerFields 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, WIDEFields 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 intaddFieldrefInfo(CtField f, FieldInfo finfo) private voidaddFinally(List<int[]> returnList, Stmnt finallyBlock) Adds a finally clause for earch return statement.voidatArrayInit(ArrayInit init) private voidatArrayLength(ASTree expr) protected voidatArrayVariableAssign(ArrayInit init, int varType, int varArray, String varClass) voidatCallExpr(CallExpr expr) protected voidatClassObject2(String cname) protected voidatFieldAssign(Expr expr, int op, ASTree left, ASTree right, boolean doDup) private voidatFieldAssignCore(CtField f, boolean is_static, int fi, boolean is2byte) protected voidatFieldPlusPlus(int token, boolean isPost, ASTree oprand, Expr expr, boolean doDup) protected voidatFieldRead(ASTree expr) private intatFieldRead(CtField f, boolean isStatic) Generates bytecode for reading a field value.voidvoidatMethodArgs(ASTList args, int[] types, int[] dims, String[] cnames) voidatMethodCallCore(CtClass targetClass, String mname, ASTList args, boolean isStatic, boolean isSpecial, int aload0pos, MemberResolver.Method found) private voidatMethodCallCore2(CtClass targetClass, String mname, boolean isStatic, boolean isSpecial, int aload0pos, MemberResolver.Method found) protected voidatMultiNewArray(int type, ASTList classname, ASTList size) voidatNewArrayExpr(NewExpr expr) private voidatNewArrayExpr2(int type, ASTree sizeExpr, String jvmClassname, ArrayInit init) voidprotected voidatTryStmnt(Stmnt st) private static voidprivate static voidprivate static voidprotected CtFieldfieldAccess(ASTree expr, boolean acceptLength) protected StringgetAccessibleConstructor(String desc, CtClass declClass, MethodInfo minfo) protected StringgetAccessiblePrivate(String methodName, String desc, String newDesc, MethodInfo minfo, CtClass declClass) intReturns the major version of the class file targeted by this compilation.intgetMethodArgsLength(ASTList args) protected StringReturns the JVM-internal representation of this super class name.protected StringReturns the JVM-internal representation of this class name.protected voidprivate AccessorMakerisAccessibleField(CtField f, FieldInfo finfo) Returns null if the field is accessible.private booleanisEnclosing(CtClass outer, CtClass inner) private booleanisFromSameDeclaringClass(CtClass outer, CtClass inner) CtClass[]CtClass[]protected StringresolveClassName(String jvmName) protected StringresolveClassName(ASTList name) private booleansetFieldType(FieldInfo finfo) Sets exprType, arrayDim, and className.(package private) voidsetReturnType(String desc, boolean isStatic, boolean popTarget) voidRecords 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:
getThisNamein classCodeGen
-
getSuperName
Returns the JVM-internal representation of this super class name.- Specified by:
getSuperNamein classCodeGen- Throws:
CompileError
-
insertDefaultSuperCall
- Specified by:
insertDefaultSuperCallin classCodeGen- Throws:
CompileError
-
atTryStmnt
- Overrides:
atTryStmntin classCodeGen- Throws:
CompileError
-
addFinally
Adds a finally clause for earch return statement.- Throws:
CompileError
-
atNewExpr
- Specified by:
atNewExprin 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:
atArrayVariableAssignin classCodeGen- Throws:
CompileError
-
atArrayInit
- Specified by:
atArrayInitin classCodeGen- Throws:
CompileError
-
atMultiNewArray
- Throws:
CompileError
-
atCallExpr
- Specified by:
atCallExprin 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:
atFieldAssignin classCodeGen- Throws:
CompileError
-
atFieldAssignCore
private void atFieldAssignCore(CtField f, boolean is_static, int fi, boolean is2byte) throws CompileError - Throws:
CompileError
-
atMember
- Specified by:
atMemberin classCodeGen- Throws:
CompileError
-
atFieldRead
- Specified by:
atFieldReadin 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:
atClassObject2in classCodeGen- Throws:
CompileError
-
atFieldPlusPlus
protected void atFieldPlusPlus(int token, boolean isPost, ASTree oprand, Expr expr, boolean doDup) throws CompileError - Specified by:
atFieldPlusPlusin classCodeGen- Throws:
CompileError
-
fieldAccess
- Throws:
CompileError
-
badLvalue
- Throws:
CompileError
-
makeParamList
- Throws:
CompileError
-
makeThrowsList
- Throws:
CompileError
-
resolveClassName
- Specified by:
resolveClassNamein classCodeGen- Throws:
CompileError
-
resolveClassName
- Specified by:
resolveClassNamein classCodeGen- Throws:
CompileError
-