public class JvstCodeGen extends MemberCodeGen
MemberCodeGen.JsrHook, MemberCodeGen.JsrHook2
CodeGen.ReturnHook
Modifier and Type | Field and 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 |
resolver, resultStatic, thisClass, thisMethod
arrayDim, binOp, breakList, bytecode, className, continueList, exprType, hasReturned, inStaticMethod, javaLangObject, javaLangString, jvmJavaLangObject, jvmJavaLangString, returnHooks, typeChecker
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
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 and Description |
---|
JvstCodeGen(Bytecode b,
CtClass cc,
ClassPool cp) |
Modifier and Type | Method and 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,
java.lang.String classname,
java.lang.String methodname,
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) |
int |
recordVariable(CtClass type,
java.lang.String varName,
SymbolTable tbl)
Makes the given variable name available.
|
void |
recordVariable(java.lang.String typeDesc,
java.lang.String varName,
int varNo,
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) |
atArrayInit, atArrayVariableAssign, atClassObject2, atFieldPlusPlus, atFieldRead, atMethodCallCore, atMultiNewArray, atNewArrayExpr, atNewExpr, atTryStmnt, fieldAccess, getAccessibleConstructor, getAccessiblePrivate, getMajorVersion, getSuperName, getThisClass, getThisName, insertDefaultSuperCall, makeParamList, makeThrowsList, resolveClassName, resolveClassName, setReturnType, setThisMethod
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
java.lang.String paramArrayName
java.lang.String paramListName
CtClass[] paramTypeList
private int paramVarBase
private boolean useParam0
private java.lang.String param0Type
public static final java.lang.String sigName
public static final java.lang.String dollarTypeName
public static final java.lang.String clazzName
private CtClass dollarType
CtClass returnType
java.lang.String returnCastName
private java.lang.String returnVarName
public static final java.lang.String wrapperCastName
java.lang.String proceedName
public static final java.lang.String cflowName
ProceedHandler procHandler
private int indexOfParam1()
public void setProceedHandler(ProceedHandler h, java.lang.String name)
public void addNullIfVoid()
public void atMember(Member mem) throws CompileError
atMember
in class MemberCodeGen
CompileError
private void callGetType(java.lang.String method)
protected void atFieldAssign(Expr expr, int op, ASTree left, ASTree right, boolean doDup) throws CompileError
atFieldAssign
in class MemberCodeGen
CompileError
protected void atAssignParamList(CtClass[] params, Bytecode code) throws CompileError
CompileError
public void atCastExpr(CastExpr expr) throws CompileError
atCastExpr
in class CodeGen
CompileError
protected void atCastToRtype(CastExpr expr) throws CompileError
CompileError
protected void atCastToWrapper(CastExpr expr) throws CompileError
CompileError
public void atCallExpr(CallExpr expr) throws CompileError
atCallExpr
in class MemberCodeGen
CompileError
protected void atCflow(ASTList cname) throws CompileError
CompileError
private static void makeCflowName(java.lang.StringBuffer sbuf, ASTree name) throws CompileError
CompileError
public boolean isParamListName(ASTList args)
public int getMethodArgsLength(ASTList args)
getMethodArgsLength
in class MemberCodeGen
public void atMethodArgs(ASTList args, int[] types, int[] dims, java.lang.String[] cnames) throws CompileError
atMethodArgs
in class MemberCodeGen
CompileError
void compileInvokeSpecial(ASTree target, java.lang.String classname, java.lang.String methodname, java.lang.String descriptor, ASTList args) throws CompileError
CompileError
protected void atReturnStmnt(Stmnt st) throws CompileError
atReturnStmnt
in class CodeGen
CompileError
public int recordReturnType(CtClass type, java.lang.String castName, java.lang.String resultName, SymbolTable tbl) throws CompileError
If the return type is void, ($r) does nothing. The type of $_ is java.lang.Object.
resultName
- null if $_ is not used.CompileError
public void recordType(CtClass t)
public int recordParams(CtClass[] params, boolean isStatic, java.lang.String prefix, java.lang.String paramVarName, java.lang.String paramsName, SymbolTable tbl) throws CompileError
CompileError
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
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.CompileError
public int recordVariable(CtClass type, java.lang.String varName, SymbolTable tbl) throws CompileError
type
- variable typevarName
- variable nameCompileError
private int recordVar(CtClass cc, java.lang.String varName, int varNo, SymbolTable tbl) throws CompileError
CompileError
public void recordVariable(java.lang.String typeDesc, java.lang.String varName, int varNo, SymbolTable tbl) throws CompileError
typeDesc
- the type descriptor of the variablevarName
- variable namevarNo
- an index into the local variable arrayCompileError
public static int compileParameterList(Bytecode code, CtClass[] params, int regno)
protected void compileUnwrapValue(CtClass type, Bytecode code) throws CompileError
CompileError
public void setType(CtClass type) throws CompileError
CompileError
private void setType(CtClass type, int dim) throws CompileError
CompileError
public void doNumCast(CtClass type) throws CompileError
CompileError