Package javassist.compiler
Class MemberCodeGen
- java.lang.Object
-
- javassist.compiler.ast.Visitor
-
- javassist.compiler.CodeGen
-
- javassist.compiler.MemberCodeGen
-
- Direct Known Subclasses:
JvstCodeGen
public class MemberCodeGen extends CodeGen
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description (package private) static classMemberCodeGen.JsrHook(package private) static classMemberCodeGen.JsrHook2-
Nested classes/interfaces inherited from class javassist.compiler.CodeGen
CodeGen.ReturnHook
-
-
Field Summary
Fields Modifier and Type Field Description protected MemberResolverresolverprotected booleanresultStaticprotected CtClassthisClassprotected MethodInfothisMethod-
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 Constructor Description MemberCodeGen(Bytecode b, CtClass cc, ClassPool cp)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description private intaddFieldrefInfo(CtField f, FieldInfo finfo)private voidaddFinally(java.util.ArrayList 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, java.lang.String varClass)voidatCallExpr(CallExpr expr)protected voidatClassObject2(java.lang.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.voidatMember(Member mem)voidatMethodArgs(ASTList args, int[] types, int[] dims, java.lang.String[] cnames)voidatMethodCallCore(CtClass targetClass, java.lang.String mname, ASTList args, boolean isStatic, boolean isSpecial, int aload0pos, MemberResolver.Method found)private voidatMethodCallCore2(CtClass targetClass, java.lang.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, java.lang.String jvmClassname, ArrayInit init)voidatNewExpr(NewExpr expr)protected voidatTryStmnt(Stmnt st)private static voidbadLvalue()private static voidbadMethod()private static voidbadNewExpr()protected CtFieldfieldAccess(ASTree expr, boolean acceptLength)protected java.lang.StringgetAccessibleConstructor(java.lang.String desc, CtClass declClass, MethodInfo minfo)protected java.lang.StringgetAccessiblePrivate(java.lang.String methodName, java.lang.String desc, java.lang.String newDesc, MethodInfo minfo, CtClass declClass)intgetMajorVersion()Returns the major version of the class file targeted by this compilation.intgetMethodArgsLength(ASTList args)protected java.lang.StringgetSuperName()Returns the JVM-internal representation of this super class name.CtClassgetThisClass()protected java.lang.StringgetThisName()Returns the JVM-internal representation of this class name.protected voidinsertDefaultSuperCall()private AccessorMakerisAccessibleField(CtField f, FieldInfo finfo)Returns null if the field is accessible.private booleanisEnclosing(CtClass outer, CtClass inner)CtClass[]makeParamList(MethodDecl md)CtClass[]makeThrowsList(MethodDecl md)protected java.lang.StringresolveClassName(java.lang.String jvmName)protected java.lang.StringresolveClassName(ASTList name)private booleansetFieldType(FieldInfo finfo)Sets exprType, arrayDim, and className.(package private) voidsetReturnType(java.lang.String desc, boolean isStatic, boolean popTarget)voidsetThisMethod(CtMethod m)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 Detail
-
resolver
protected MemberResolver resolver
-
thisClass
protected CtClass thisClass
-
thisMethod
protected MethodInfo thisMethod
-
resultStatic
protected boolean resultStatic
-
-
Method Detail
-
getMajorVersion
public int getMajorVersion()
Returns the major version of the class file targeted by this compilation.
-
setThisMethod
public void setThisMethod(CtMethod m)
Records the currently compiled method.
-
getThisClass
public CtClass getThisClass()
-
getThisName
protected java.lang.String getThisName()
Returns the JVM-internal representation of this class name.- Specified by:
getThisNamein classCodeGen
-
getSuperName
protected java.lang.String getSuperName() throws CompileErrorReturns the JVM-internal representation of this super class name.- Specified by:
getSuperNamein classCodeGen- Throws:
CompileError
-
insertDefaultSuperCall
protected void insertDefaultSuperCall() throws CompileError- Specified by:
insertDefaultSuperCallin classCodeGen- Throws:
CompileError
-
atTryStmnt
protected void atTryStmnt(Stmnt st) throws CompileError
- Overrides:
atTryStmntin classCodeGen- Throws:
CompileError
-
addFinally
private void addFinally(java.util.ArrayList returnList, Stmnt finallyBlock) throws CompileErrorAdds a finally clause for earch return statement.- Throws:
CompileError
-
atNewExpr
public void atNewExpr(NewExpr expr) throws CompileError
- Specified by:
atNewExprin classCodeGen- Throws:
CompileError
-
atNewArrayExpr
public void atNewArrayExpr(NewExpr expr) throws CompileError
- Throws:
CompileError
-
atNewArrayExpr2
private void atNewArrayExpr2(int type, ASTree sizeExpr, java.lang.String jvmClassname, ArrayInit init) throws CompileError- Throws:
CompileError
-
badNewExpr
private static void badNewExpr() throws CompileError- Throws:
CompileError
-
atArrayVariableAssign
protected void atArrayVariableAssign(ArrayInit init, int varType, int varArray, java.lang.String varClass) throws CompileError
- Specified by:
atArrayVariableAssignin classCodeGen- Throws:
CompileError
-
atArrayInit
public void atArrayInit(ArrayInit init) throws CompileError
- Specified by:
atArrayInitin classCodeGen- Throws:
CompileError
-
atMultiNewArray
protected void atMultiNewArray(int type, ASTList classname, ASTList size) throws CompileError- Throws:
CompileError
-
atCallExpr
public void atCallExpr(CallExpr expr) throws CompileError
- Specified by:
atCallExprin classCodeGen- Throws:
CompileError
-
badMethod
private static void badMethod() throws CompileError- Throws:
CompileError
-
atMethodCallCore
public void atMethodCallCore(CtClass targetClass, java.lang.String mname, ASTList args, boolean isStatic, boolean isSpecial, int aload0pos, MemberResolver.Method found) throws CompileError
- Throws:
CompileError
-
atMethodCallCore2
private void atMethodCallCore2(CtClass targetClass, java.lang.String mname, boolean isStatic, boolean isSpecial, int aload0pos, MemberResolver.Method found) throws CompileError
- Throws:
CompileError
-
getAccessiblePrivate
protected java.lang.String getAccessiblePrivate(java.lang.String methodName, java.lang.String desc, java.lang.String newDesc, MethodInfo minfo, CtClass declClass) throws CompileError- Throws:
CompileError
-
getAccessibleConstructor
protected java.lang.String getAccessibleConstructor(java.lang.String desc, CtClass declClass, MethodInfo minfo) throws CompileError- Throws:
CompileError
-
getMethodArgsLength
public int getMethodArgsLength(ASTList args)
-
atMethodArgs
public void atMethodArgs(ASTList args, int[] types, int[] dims, java.lang.String[] cnames) throws CompileError
- Throws:
CompileError
-
setReturnType
void setReturnType(java.lang.String desc, boolean isStatic, boolean popTarget) throws CompileError- 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
public void atMember(Member mem) throws CompileError
- Specified by:
atMemberin classCodeGen- Throws:
CompileError
-
atFieldRead
protected void atFieldRead(ASTree expr) throws CompileError
- Specified by:
atFieldReadin classCodeGen- Throws:
CompileError
-
atArrayLength
private void atArrayLength(ASTree expr) throws CompileError
- Throws:
CompileError
-
atFieldRead
private int atFieldRead(CtField f, boolean isStatic) throws CompileError
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
private AccessorMaker isAccessibleField(CtField f, FieldInfo finfo) throws CompileError
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
private boolean setFieldType(FieldInfo finfo) throws CompileError
Sets exprType, arrayDim, and className.- Returns:
- true if the field type is long or double.
- Throws:
CompileError
-
atClassObject2
protected void atClassObject2(java.lang.String cname) throws CompileError- 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
protected CtField fieldAccess(ASTree expr, boolean acceptLength) throws CompileError
- Throws:
CompileError
-
badLvalue
private static void badLvalue() throws CompileError- Throws:
CompileError
-
makeParamList
public CtClass[] makeParamList(MethodDecl md) throws CompileError
- Throws:
CompileError
-
makeThrowsList
public CtClass[] makeThrowsList(MethodDecl md) throws CompileError
- Throws:
CompileError
-
resolveClassName
protected java.lang.String resolveClassName(ASTList name) throws CompileError
- Specified by:
resolveClassNamein classCodeGen- Throws:
CompileError
-
resolveClassName
protected java.lang.String resolveClassName(java.lang.String jvmName) throws CompileError- Specified by:
resolveClassNamein classCodeGen- Throws:
CompileError
-
-