public class JvstCodeGen extends MemberCodeGen
CodeGen.ReturnHook
Modifier and Type | Field and Description |
---|---|
static String |
cflowName |
static String |
clazzName |
static String |
dollarTypeName |
static String |
sigName |
static String |
wrapperCastName |
resolver, resultStatic, thisClass, thisMethod
arrayDim, breakList, bytecode, className, continueList, exprType, hasReturned, inStaticMethod, returnHooks
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,
String[] cnames) |
protected void |
atReturnStmnt(Stmnt st) |
static int |
compileParameterList(Bytecode code,
CtClass[] params,
int regno) |
protected void |
compileUnwrapValue(CtClass type,
Bytecode code) |
void |
doNumCast(CtClass type) |
int |
getMethodArgsLength(ASTList args) |
boolean |
isParamListName(ASTList args) |
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 |
recordType(CtClass t)
Makes $type available.
|
int |
recordVariable(CtClass type,
String varName,
SymbolTable tbl)
Makes the given variable name available.
|
void |
recordVariable(String typeDesc,
String varName,
int varNo,
SymbolTable tbl)
Makes the given variable name available.
|
void |
setProceedHandler(ProceedHandler h,
String name) |
void |
setType(CtClass type) |
atArrayInit, atArrayVariableAssign, atClassObject2, atFieldPlusPlus, atFieldRead, atMethodCallCore, atMultiNewArray, atNewArrayExpr, atNewExpr, atTryStmnt, fieldAccess, getAccessibleConstructor, getAccessiblePrivate, getMajorVersion, getSuperName, getThisClass, getThisName, insertDefaultSuperCall, makeParamList, makeThrowsList, resolveClassName, resolveClassName, setThisMethod
arrayAccess, atArrayPlusPlus, atArrayRead, atAssignCore, atAssignExpr, atAssignExpr, atASTList, atBinExpr, atClassObject, atCondExpr, atDeclarator, atDoubleConst, atExpr, atFieldDecl, atInstanceOfExpr, atIntConst, atKeyword, atMethodBody, atMethodDecl, atPair, atPlusPlusCore, atReturnStmnt2, atStmnt, atStringL, atSymbol, atVariable, badAssign, badType, badTypes, compileBooleanExpr, compileExpr, doTypeCheck, fatal, getArrayReadOp, getArrayWriteOp, getLocalVar, getMaxLocals, getTempVar, incMaxLocals, is2word, isRefType, patchGoto, setMaxLocals, setTypeChecker, toJvmArrayName, toJvmTypeName
public static final String sigName
public static final String dollarTypeName
public static final String clazzName
public static final String wrapperCastName
public static final String cflowName
public void setProceedHandler(ProceedHandler h, String name)
public void addNullIfVoid()
public void atMember(Member mem) throws CompileError
atMember
in class MemberCodeGen
CompileError
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
public boolean isParamListName(ASTList args)
public int getMethodArgsLength(ASTList args)
getMethodArgsLength
in class MemberCodeGen
public void atMethodArgs(ASTList args, int[] types, int[] dims, String[] cnames) throws CompileError
atMethodArgs
in class MemberCodeGen
CompileError
protected void atReturnStmnt(Stmnt st) throws CompileError
atReturnStmnt
in class CodeGen
CompileError
public int recordReturnType(CtClass type, String castName, 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, String prefix, String paramVarName, String paramsName, SymbolTable tbl) throws CompileError
CompileError
public int recordParams(CtClass[] params, boolean isStatic, String prefix, String paramVarName, String paramsName, boolean use0, int paramBase, 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, String varName, SymbolTable tbl) throws CompileError
type
- variable typevarName
- variable nameCompileError
public void recordVariable(String typeDesc, 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
public void doNumCast(CtClass type) throws CompileError
CompileError
Copyright © 2024. All rights reserved.