classUtils.javassist.compiler
Class JvstCodeGen

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

public class JvstCodeGen
extends MemberCodeGen


Field Summary
 
Fields inherited from class classUtils.javassist.compiler.CodeGen
inStaticMethod
 
Fields inherited from interface classUtils.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 classUtils.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, CompileTimeClass cc, ClassPool cp)
           
 
Method Summary
 void addNullIfVoid()
           
 void atCastExpr(CastExpr expr)
           
 void atMember(Member mem)
           
 void atMethodArgs(ASTList args, int[] types, int[] dims, java.lang.String[] cnames)
           
 int atMethodArgsLength(ASTList args)
           
static int compileParameterList(Bytecode code, CompileTimeClass[] params, int regno)
           
 void doNumCast(CompileTimeClass type)
           
 boolean isParamListName(ASTList args)
           
 void recordParams(CompileTimeClass[] 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 $$ available.
 void recordParams(CompileTimeClass[] params, boolean isStatic, java.lang.String prefix, java.lang.String paramVarName, java.lang.String paramsName, SymbolTable tbl)
          Makes method parameters $0, $1, ..., $args, and $$ available.
 int recordReturnType(CompileTimeClass type, java.lang.String castName, java.lang.String resultName, SymbolTable tbl)
          Makes a cast to the return type ($r) available.
 void recordType(CompileTimeClass t)
          Makes $type available.
 int recordVariable(CompileTimeClass type, java.lang.String varName, SymbolTable tbl)
          Makes the given variable name available.
 void setProceedHandler(ProceedHandler h, java.lang.String name)
           
 void setType(CompileTimeClass type)
           
 
Methods inherited from class classUtils.javassist.compiler.MemberCodeGen
atMethodCall2, atNewArrayExpr, atNewExpr, getModifiers, getThisClass, lookupField, lookupField, makeParamList, makeThrowsList, setThisMethod
 
Methods inherited from class classUtils.javassist.compiler.CodeGen
atArrayLength, atArrayPlusPlus, atArrayRead, atAssignExpr, atASTList, atBinExpr, atClassObject, atCondExpr, atDeclarator, atDoubleConst, atExpr, atFieldDecl, atInstanceOfExpr, atIntConst, atKeyword, atMethodBody, atMethodDecl, atPair, atStmnt, atStringL, atSymbol, atVariable, getMaxLocals, is2word, setMaxLocals
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

JvstCodeGen

public JvstCodeGen(Bytecode b,
                   CompileTimeClass 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

atCastExpr

public void atCastExpr(CastExpr expr)
                throws CompileError
Overrides:
atCastExpr in class CodeGen
Throws:
CompileError

isParamListName

public boolean isParamListName(ASTList args)

atMethodArgsLength

public int atMethodArgsLength(ASTList args)
Overrides:
atMethodArgsLength 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

recordReturnType

public int recordReturnType(CompileTimeClass 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(CompileTimeClass t)
Makes $type available.


recordParams

public void recordParams(CompileTimeClass[] 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 $$ 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 void recordParams(CompileTimeClass[] 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 $$ available. $0 is available only if use0 is true. It might not be equivalent to THIS.

Parameters:
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.
isStatic - true if the method in which the compiled bytecode is embedded is static.
Throws:
CompileError

recordVariable

public int recordVariable(CompileTimeClass type,
                          java.lang.String varName,
                          SymbolTable tbl)
                   throws CompileError
Makes the given variable name available.

Parameters:
type - variable type
varName - variable name
Throws:
CompileError

compileParameterList

public static int compileParameterList(Bytecode code,
                                       CompileTimeClass[] params,
                                       int regno)

setType

public void setType(CompileTimeClass type)
             throws CompileError
Throws:
CompileError

doNumCast

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