Package javassist.compiler
Class JvstCodeGen
- java.lang.Object
-
- javassist.compiler.ast.Visitor
-
- javassist.compiler.CodeGen
-
- javassist.compiler.MemberCodeGen
-
- javassist.compiler.JvstCodeGen
-
public class JvstCodeGen extends MemberCodeGen
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class javassist.compiler.MemberCodeGen
MemberCodeGen.JsrHook, MemberCodeGen.JsrHook2
-
Nested classes/interfaces inherited from class javassist.compiler.CodeGen
CodeGen.ReturnHook
-
-
Field Summary
Fields Modifier and Type Field Description static java.lang.String
cflowName
static java.lang.String
clazzName
private CtClass
dollarType
static java.lang.String
dollarTypeName
private java.lang.String
param0Type
(package private) java.lang.String
paramArrayName
(package private) java.lang.String
paramListName
(package private) CtClass[]
paramTypeList
private int
paramVarBase
(package private) java.lang.String
proceedName
(package private) ProceedHandler
procHandler
(package private) java.lang.String
returnCastName
(package private) CtClass
returnType
private java.lang.String
returnVarName
static java.lang.String
sigName
private boolean
useParam0
static java.lang.String
wrapperCastName
-
Fields inherited from class javassist.compiler.MemberCodeGen
resolver, resultStatic, thisClass, thisMethod
-
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 JvstCodeGen(Bytecode b, CtClass cc, ClassPool cp)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description void
addNullIfVoid()
protected void
atAssignParamList(CtClass[] params, Bytecode code)
void
atCallExpr(CallExpr expr)
void
atCastExpr(CastExpr expr)
protected void
atCastToRtype(CastExpr expr)
Inserts a cast operator to the return type.protected void
atCastToWrapper(CastExpr expr)
protected void
atCflow(ASTList cname)
protected void
atFieldAssign(Expr expr, int op, ASTree left, ASTree right, boolean doDup)
void
atMember(Member mem)
void
atMethodArgs(ASTList args, int[] types, int[] dims, java.lang.String[] cnames)
protected void
atReturnStmnt(Stmnt st)
private void
callGetType(java.lang.String method)
(package private) void
compileInvokeSpecial(ASTree target, int methodIndex, java.lang.String descriptor, ASTList args)
static int
compileParameterList(Bytecode code, CtClass[] params, int regno)
protected void
compileUnwrapValue(CtClass type, Bytecode code)
void
doNumCast(CtClass type)
int
getMethodArgsLength(ASTList args)
private int
indexOfParam1()
boolean
isParamListName(ASTList args)
private static void
makeCflowName(java.lang.StringBuffer sbuf, ASTree name)
int
recordParams(CtClass[] params, boolean isStatic, java.lang.String prefix, java.lang.String paramVarName, java.lang.String paramsName, boolean use0, int paramBase, java.lang.String target, SymbolTable tbl)
Makes method parameters $0, $1, ..., $args, $$, and $class available.int
recordParams(CtClass[] params, boolean isStatic, java.lang.String prefix, java.lang.String paramVarName, java.lang.String paramsName, SymbolTable tbl)
Makes method parameters $0, $1, ..., $args, $$, and $class available.int
recordReturnType(CtClass type, java.lang.String castName, java.lang.String resultName, SymbolTable tbl)
Makes a cast to the return type ($r) available.void
recordType(CtClass t)
Makes $type available.private int
recordVar(CtClass cc, java.lang.String varName, int varNo, SymbolTable tbl)
void
recordVariable(java.lang.String typeDesc, java.lang.String varName, int varNo, SymbolTable tbl)
Makes the given variable name available.int
recordVariable(CtClass type, java.lang.String varName, SymbolTable tbl)
Makes the given variable name available.void
setProceedHandler(ProceedHandler h, java.lang.String name)
void
setType(CtClass type)
private void
setType(CtClass type, int dim)
-
Methods inherited from class javassist.compiler.MemberCodeGen
atArrayInit, atArrayVariableAssign, atClassObject2, atFieldPlusPlus, atFieldRead, atMethodCallCore, atMultiNewArray, atNewArrayExpr, atNewExpr, atTryStmnt, fieldAccess, getAccessibleConstructor, getAccessiblePrivate, getMajorVersion, getSuperName, getThisClass, getThisName, insertDefaultSuperCall, makeParamList, makeThrowsList, resolveClassName, resolveClassName, setReturnType, setThisMethod
-
Methods inherited from class javassist.compiler.CodeGen
arrayAccess, atArrayPlusPlus, atArrayRead, atAssignCore, atAssignExpr, atAssignExpr, atASTList, atBinExpr, atClassObject, atCondExpr, atDeclarator, atDoubleConst, atExpr, atFieldDecl, atInstanceOfExpr, atIntConst, atKeyword, atMethodBody, atMethodDecl, atNumCastExpr, atPair, atPlusPlusCore, 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
-
paramArrayName
java.lang.String paramArrayName
-
paramListName
java.lang.String paramListName
-
paramTypeList
CtClass[] paramTypeList
-
paramVarBase
private int paramVarBase
-
useParam0
private boolean useParam0
-
param0Type
private java.lang.String param0Type
-
sigName
public static final java.lang.String sigName
- See Also:
- Constant Field Values
-
dollarTypeName
public static final java.lang.String dollarTypeName
- See Also:
- Constant Field Values
-
clazzName
public static final java.lang.String clazzName
- See Also:
- Constant Field Values
-
dollarType
private CtClass dollarType
-
returnType
CtClass returnType
-
returnCastName
java.lang.String returnCastName
-
returnVarName
private java.lang.String returnVarName
-
wrapperCastName
public static final java.lang.String wrapperCastName
- See Also:
- Constant Field Values
-
proceedName
java.lang.String proceedName
-
cflowName
public static final java.lang.String cflowName
- See Also:
- Constant Field Values
-
procHandler
ProceedHandler procHandler
-
-
Method Detail
-
indexOfParam1
private int indexOfParam1()
-
setProceedHandler
public void setProceedHandler(ProceedHandler h, java.lang.String name)
-
addNullIfVoid
public void addNullIfVoid()
-
atMember
public void atMember(Member mem) throws CompileError
- Overrides:
atMember
in classMemberCodeGen
- Throws:
CompileError
-
callGetType
private void callGetType(java.lang.String method)
-
atFieldAssign
protected void atFieldAssign(Expr expr, int op, ASTree left, ASTree right, boolean doDup) throws CompileError
- Overrides:
atFieldAssign
in classMemberCodeGen
- Throws:
CompileError
-
atAssignParamList
protected void atAssignParamList(CtClass[] params, Bytecode code) throws CompileError
- Throws:
CompileError
-
atCastExpr
public void atCastExpr(CastExpr expr) throws CompileError
- Overrides:
atCastExpr
in classCodeGen
- Throws:
CompileError
-
atCastToRtype
protected void atCastToRtype(CastExpr expr) throws CompileError
Inserts a cast operator to the return type. If the return type is void, this does nothing.- Throws:
CompileError
-
atCastToWrapper
protected void atCastToWrapper(CastExpr expr) throws CompileError
- Throws:
CompileError
-
atCallExpr
public void atCallExpr(CallExpr expr) throws CompileError
- Overrides:
atCallExpr
in classMemberCodeGen
- Throws:
CompileError
-
atCflow
protected void atCflow(ASTList cname) throws CompileError
- Throws:
CompileError
-
makeCflowName
private static void makeCflowName(java.lang.StringBuffer sbuf, ASTree name) throws CompileError
- Throws:
CompileError
-
isParamListName
public boolean isParamListName(ASTList args)
-
getMethodArgsLength
public int getMethodArgsLength(ASTList args)
- Overrides:
getMethodArgsLength
in classMemberCodeGen
-
atMethodArgs
public void atMethodArgs(ASTList args, int[] types, int[] dims, java.lang.String[] cnames) throws CompileError
- Overrides:
atMethodArgs
in classMemberCodeGen
- Throws:
CompileError
-
compileInvokeSpecial
void compileInvokeSpecial(ASTree target, int methodIndex, java.lang.String descriptor, ASTList args) throws CompileError
- Throws:
CompileError
-
atReturnStmnt
protected void atReturnStmnt(Stmnt st) throws CompileError
- Overrides:
atReturnStmnt
in classCodeGen
- Throws:
CompileError
-
recordReturnType
public int recordReturnType(CtClass type, java.lang.String castName, java.lang.String resultName, SymbolTable tbl) throws CompileError
Makes a cast to the return type ($r) available. It also enables $_.If the return type is void, ($r) does nothing. The type of $_ is java.lang.Object.
- Parameters:
resultName
- null if $_ is not used.- Returns:
- -1 or the variable index assigned to $_.
- Throws:
CompileError
-
recordType
public void recordType(CtClass t)
Makes $type available.
-
recordParams
public int recordParams(CtClass[] params, boolean isStatic, java.lang.String prefix, java.lang.String paramVarName, java.lang.String paramsName, SymbolTable tbl) throws CompileError
Makes method parameters $0, $1, ..., $args, $$, and $class available. $0 is equivalent to THIS if the method is not static. Otherwise, if the method is static, then $0 is not available.- Throws:
CompileError
-
recordParams
public int recordParams(CtClass[] params, boolean isStatic, java.lang.String prefix, java.lang.String paramVarName, java.lang.String paramsName, boolean use0, int paramBase, java.lang.String target, SymbolTable tbl) throws CompileError
Makes method parameters $0, $1, ..., $args, $$, and $class available. $0 is available only if use0 is true. It might not be equivalent to THIS.- Parameters:
params
- the parameter types (the types of $1, $2, ..)prefix
- it must be "$" (the first letter of $0, $1, ...)paramVarName
- it must be "$args"paramsName
- it must be "$$"use0
- true if $0 is used.paramBase
- the register number of $0 (use0 is true) or $1 (otherwise).target
- the class of $0. If use0 is false, target can be null. The value of "target" is also used as the name of the type represented by $class.isStatic
- true if the method in which the compiled bytecode is embedded is static.- Throws:
CompileError
-
recordVariable
public int recordVariable(CtClass type, java.lang.String varName, SymbolTable tbl) throws CompileError
Makes the given variable name available.- Parameters:
type
- variable typevarName
- variable name- Throws:
CompileError
-
recordVar
private int recordVar(CtClass cc, java.lang.String varName, int varNo, SymbolTable tbl) throws CompileError
- Throws:
CompileError
-
recordVariable
public void recordVariable(java.lang.String typeDesc, java.lang.String varName, int varNo, SymbolTable tbl) throws CompileError
Makes the given variable name available.- Parameters:
typeDesc
- the type descriptor of the variablevarName
- variable namevarNo
- an index into the local variable array- Throws:
CompileError
-
compileParameterList
public static int compileParameterList(Bytecode code, CtClass[] params, int regno)
-
compileUnwrapValue
protected void compileUnwrapValue(CtClass type, Bytecode code) throws CompileError
- Throws:
CompileError
-
setType
public void setType(CtClass type) throws CompileError
- Throws:
CompileError
-
setType
private void setType(CtClass type, int dim) throws CompileError
- Throws:
CompileError
-
doNumCast
public void doNumCast(CtClass type) throws CompileError
- Throws:
CompileError
-
-