javassist.compiler
Class JvstCodeGen

java.lang.Object
  extended by javassist.compiler.ast.Visitor
      extended by javassist.compiler.CodeGen
          extended by javassist.compiler.MemberCodeGen
              extended by javassist.compiler.JvstCodeGen
All Implemented Interfaces:
Opcode, TokenId

public class JvstCodeGen
extends MemberCodeGen


Nested Class Summary
 
Nested classes/interfaces inherited from class javassist.compiler.CodeGen
CodeGen.ReturnHook
 
Field Summary
static java.lang.String cflowName
           
static java.lang.String clazzName
           
static java.lang.String dollarTypeName
           
static java.lang.String sigName
           
static java.lang.String wrapperCastName
           
 
Fields inherited from class javassist.compiler.MemberCodeGen
resolver, resultStatic, thisClass, thisMethod
 
Fields inherited from class javassist.compiler.CodeGen
arrayDim, breakList, bytecode, className, continueList, exprType, hasReturned, inStaticMethod, returnHooks
 
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, 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
JvstCodeGen(Bytecode b, CtClass cc, ClassPool cp)
           
 
Method Summary
 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)
           
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, 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.
 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)
           
 
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, 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, 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
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

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

wrapperCastName

public static final java.lang.String wrapperCastName
See Also:
Constant Field Values

cflowName

public static final java.lang.String cflowName
See Also:
Constant Field Values
Constructor Detail

JvstCodeGen

public JvstCodeGen(Bytecode b,
                   CtClass cc,
                   ClassPool cp)
Method Detail

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 class MemberCodeGen
Throws:
CompileError

atFieldAssign

protected void atFieldAssign(Expr expr,
                             int op,
                             ASTree left,
                             ASTree right,
                             boolean doDup)
                      throws CompileError
Overrides:
atFieldAssign in class MemberCodeGen
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 class CodeGen
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 class MemberCodeGen
Throws:
CompileError

atCflow

protected void atCflow(ASTList cname)
                throws CompileError
Throws:
CompileError

isParamListName

public boolean isParamListName(ASTList args)

getMethodArgsLength

public int getMethodArgsLength(ASTList args)
Overrides:
getMethodArgsLength in class MemberCodeGen

atMethodArgs

public void atMethodArgs(ASTList args,
                         int[] types,
                         int[] dims,
                         java.lang.String[] cnames)
                  throws CompileError
Overrides:
atMethodArgs in class MemberCodeGen
Throws:
CompileError

atReturnStmnt

protected void atReturnStmnt(Stmnt st)
                      throws CompileError
Overrides:
atReturnStmnt in class CodeGen
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 type
varName - variable name
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 variable
varName - variable name
varNo - 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

doNumCast

public void doNumCast(CtClass type)
               throws CompileError
Throws:
CompileError


Copyright © 2011. All Rights Reserved.