Package javassist.compiler
Class JvstCodeGen
java.lang.Object
javassist.compiler.ast.Visitor
javassist.compiler.CodeGen
javassist.compiler.MemberCodeGen
javassist.compiler.JvstCodeGen
-
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
FieldsModifier and TypeFieldDescriptionstatic final String
static final String
private CtClass
static final String
private String
(package private) String
(package private) String
(package private) CtClass[]
private int
(package private) String
(package private) ProceedHandler
(package private) String
(package private) CtClass
private String
static final String
private boolean
static final String
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 -
Method Summary
Modifier and TypeMethodDescriptionvoid
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
protected void
atFieldAssign
(Expr expr, int op, ASTree left, ASTree right, boolean doDup) void
void
atMethodArgs
(ASTList args, int[] types, int[] dims, String[] cnames) protected void
atReturnStmnt
(Stmnt st) private void
callGetType
(String method) (package private) void
compileInvokeSpecial
(ASTree target, int methodIndex, String descriptor, ASTList args) static int
compileParameterList
(Bytecode code, CtClass[] params, int regno) protected void
compileUnwrapValue
(CtClass type, Bytecode code) void
int
getMethodArgsLength
(ASTList args) private int
boolean
isParamListName
(ASTList args) private static void
makeCflowName
(StringBuilder sbuf, ASTree name) int
recordParams
(CtClass[] params, boolean isStatic, String prefix, String paramVarName, String paramsName, boolean use0, int paramBase, String target, SymbolTable tbl) Makes method parameters $0, $1, ..., $args, $$, and $class available.int
recordParams
(CtClass[] params, boolean isStatic, String prefix, String paramVarName, String paramsName, SymbolTable tbl) Makes method parameters $0, $1, ..., $args, $$, and $class available.int
recordReturnType
(CtClass type, String castName, String resultName, SymbolTable tbl) Makes a cast to the return type ($r) available.void
Makes $type available.private int
recordVar
(CtClass cc, String varName, int varNo, SymbolTable tbl) void
recordVariable
(String typeDesc, String varName, int varNo, SymbolTable tbl) Makes the given variable name available.int
recordVariable
(CtClass type, String varName, SymbolTable tbl) Makes the given variable name available.void
setProceedHandler
(ProceedHandler h, String name) void
private void
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 Details
-
paramArrayName
String paramArrayName -
paramListName
String paramListName -
paramTypeList
CtClass[] paramTypeList -
paramVarBase
private int paramVarBase -
useParam0
private boolean useParam0 -
param0Type
-
sigName
- See Also:
-
dollarTypeName
- See Also:
-
clazzName
- See Also:
-
dollarType
-
returnType
CtClass returnType -
returnCastName
String returnCastName -
returnVarName
-
wrapperCastName
- See Also:
-
proceedName
String proceedName -
cflowName
- See Also:
-
procHandler
ProceedHandler procHandler
-
-
Constructor Details
-
JvstCodeGen
-
-
Method Details
-
indexOfParam1
private int indexOfParam1() -
setProceedHandler
-
addNullIfVoid
public void addNullIfVoid() -
atMember
- Overrides:
atMember
in classMemberCodeGen
- Throws:
CompileError
-
callGetType
-
atFieldAssign
protected void atFieldAssign(Expr expr, int op, ASTree left, ASTree right, boolean doDup) throws CompileError - Overrides:
atFieldAssign
in classMemberCodeGen
- Throws:
CompileError
-
atAssignParamList
- Throws:
CompileError
-
atCastExpr
- Overrides:
atCastExpr
in classCodeGen
- Throws:
CompileError
-
atCastToRtype
Inserts a cast operator to the return type. If the return type is void, this does nothing.- Throws:
CompileError
-
atCastToWrapper
- Throws:
CompileError
-
atCallExpr
- Overrides:
atCallExpr
in classMemberCodeGen
- Throws:
CompileError
-
atCflow
- Throws:
CompileError
-
makeCflowName
- Throws:
CompileError
-
isParamListName
-
getMethodArgsLength
- Overrides:
getMethodArgsLength
in classMemberCodeGen
-
atMethodArgs
public void atMethodArgs(ASTList args, int[] types, int[] dims, String[] cnames) throws CompileError - Overrides:
atMethodArgs
in classMemberCodeGen
- Throws:
CompileError
-
compileInvokeSpecial
void compileInvokeSpecial(ASTree target, int methodIndex, String descriptor, ASTList args) throws CompileError - Throws:
CompileError
-
atReturnStmnt
- Overrides:
atReturnStmnt
in classCodeGen
- Throws:
CompileError
-
recordReturnType
public int recordReturnType(CtClass type, String castName, 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
Makes $type available. -
recordParams
public int recordParams(CtClass[] params, boolean isStatic, String prefix, String paramVarName, 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, String prefix, String paramVarName, String paramsName, boolean use0, int paramBase, 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, ..)isStatic
- true if the method in which the compiled bytecode is embedded is static.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.- Throws:
CompileError
-
recordVariable
Makes the given variable name available.- Parameters:
type
- variable typevarName
- variable name- Throws:
CompileError
-
recordVar
- Throws:
CompileError
-
recordVariable
public void recordVariable(String typeDesc, 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
-
compileUnwrapValue
- Throws:
CompileError
-
setType
- Throws:
CompileError
-
setType
- Throws:
CompileError
-
doNumCast
- Throws:
CompileError
-