Package javassist.compiler
Class CodeGen
- java.lang.Object
-
- javassist.compiler.ast.Visitor
-
- javassist.compiler.CodeGen
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description protected static classCodeGen.ReturnHookdoit() in ReturnHook is called from atReturn().
-
Field Summary
Fields Modifier and Type Field Description protected intarrayDim(package private) static int[]binOpprotected java.util.List<java.lang.Integer>breakListprotected Bytecodebytecodeprivate static int[]castOpprotected java.lang.StringclassNameprotected java.util.List<java.lang.Integer>continueListprotected intexprTypeprotected booleanhasReturnedtrue if the last visited node is a return statement.private static int[]ifOpprivate static int[]ifOp2booleaninStaticMethodMust be true if compilation is for a static method.(package private) static java.lang.StringjavaLangObject(package private) static java.lang.StringjavaLangString(package private) static java.lang.StringjvmJavaLangObject(package private) static java.lang.StringjvmJavaLangStringprivate static intP_DOUBLEprivate static intP_FLOATprivate static intP_INTprivate static intP_LONGprivate static intP_OTHERprotected CodeGen.ReturnHookreturnHooksprivate inttempVar(package private) TypeCheckertypeChecker-
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
-
-
Method Summary
All Methods Static Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description protected voidarrayAccess(ASTree array, ASTree index)private voidatArithBinExpr(Expr expr, int token, int index, int type1)private voidatArrayAssign(Expr expr, int op, Expr array, ASTree right, boolean doDup)abstract voidatArrayInit(ArrayInit init)voidatArrayPlusPlus(int token, boolean isPost, Expr expr, boolean doDup)voidatArrayRead(ASTree array, ASTree index)protected abstract voidatArrayVariableAssign(ArrayInit init, int varType, int varArray, java.lang.String varClass)protected voidatAssignCore(Expr expr, int op, ASTree right, int type, int dim, java.lang.String cname)voidatAssignExpr(AssignExpr expr)protected voidatAssignExpr(AssignExpr expr, boolean doDup)voidatASTList(ASTList n)voidatBinExpr(BinExpr expr)private voidatBreakStmnt(Stmnt st, boolean notCont)abstract voidatCallExpr(CallExpr expr)voidatCastExpr(CastExpr expr)voidatClassObject(Expr expr)protected voidatClassObject2(java.lang.String cname)voidatCondExpr(CondExpr expr)voidatDeclarator(Declarator d)voidatDoubleConst(DoubleConst d)voidatExpr(Expr expr)protected abstract voidatFieldAssign(Expr expr, int op, ASTree left, ASTree right, boolean doDup)voidatFieldDecl(FieldDecl field)protected abstract voidatFieldPlusPlus(int token, boolean isPost, ASTree oprand, Expr expr, boolean doDup)protected abstract voidatFieldRead(ASTree expr)private voidatForStmnt(Stmnt st)private voidatIfStmnt(Stmnt st)voidatInstanceOfExpr(InstanceOfExpr expr)voidatIntConst(IntConst i)voidatKeyword(Keyword k)abstract voidatMember(Member n)voidatMethodBody(Stmnt s, boolean isCons, boolean isVoid)voidatMethodDecl(MethodDecl method)abstract voidatNewExpr(NewExpr n)(package private) voidatNumCastExpr(int srcType, int destType)voidatPair(Pair n)private voidatPlusPlus(int token, ASTree oprand, Expr expr, boolean doDup)protected voidatPlusPlusCore(int dup_code, boolean doDup, int token, boolean isPost, Expr expr)protected voidatReturnStmnt(Stmnt st)protected voidatReturnStmnt2(ASTree result)voidatStmnt(Stmnt st)private voidatStringConcatExpr(Expr expr, int type1, int dim1, java.lang.String cname1)voidatStringL(StringL s)private voidatStringPlusEq(Expr expr, int type, int dim, java.lang.String cname, ASTree right)private voidatSwitchStmnt(Stmnt st)voidatSymbol(Symbol n)private voidatSyncStmnt(Stmnt st)private voidatThrowStmnt(Stmnt st)protected voidatTryStmnt(Stmnt st)voidatVariable(Variable v)private voidatVariableAssign(Expr expr, int op, Variable var, Declarator d, ASTree right, boolean doDup)private voidatWhileStmnt(Stmnt st, boolean notDo)protected static voidbadAssign(Expr expr)protected static voidbadType(Expr expr)protected static voidbadTypes(Expr expr)private booleanbooleanExpr(boolean branchIf, ASTree expr)private java.lang.StringcheckCastExpr(CastExpr expr, java.lang.String name)private voidcompareExpr(boolean branchIf, int token, int type1, BinExpr expr)booleancompileBooleanExpr(boolean branchIf, ASTree expr)voidcompileExpr(ASTree expr)private intcompileOprands(BinExpr expr)private intcomputeLabel(ASTree expr)private intcomputeStringLabel(ASTree expr, int tmpVar, java.util.List<java.lang.Integer> gotoDefaults)private voidconvertOprandTypes(int type1, int type2, Expr expr)private voidconvToString(int type, int dim)voiddoTypeCheck(ASTree expr)protected static voidfatal()protected static intgetArrayReadOp(int type, int dim)protected static intgetArrayWriteOp(int type, int dim)(package private) static intgetCompOperator(ASTree expr)private static intgetListSize(java.util.List<java.lang.Integer> list)protected intgetLocalVar(Declarator d)intgetMaxLocals()protected abstract java.lang.StringgetSuperName()Returns the JVM-internal representation of this super class name.protected intgetTempVar()Returns a local variable that single or double words can be stored in.protected abstract java.lang.StringgetThisName()Returns the JVM-internal representation of this class name.protected voidincMaxLocals(int size)protected abstract voidinsertDefaultSuperCall()private booleaninvalidDim(int srcType, int srcDim, java.lang.String srcClass, int destType, int destDim, java.lang.String destClass, boolean isCast)static booleanis2word(int type, int dim)private static booleanisAlwaysBranch(ASTree expr, boolean branchIf)(package private) static booleanisP_INT(int type)private static booleanisPlusPlusExpr(ASTree expr)protected static booleanisRefType(int type)(package private) static intlookupBinOp(int token)private booleanneedsSuperCall(Stmnt body)protected voidpatchGoto(java.util.List<java.lang.Integer> list, int targetPc)protected abstract java.lang.StringresolveClassName(java.lang.String jvmClassName)protected abstract java.lang.StringresolveClassName(ASTList name)(package private) static booleanrightIsStrong(int type1, int type2)voidsetMaxLocals(int n)voidsetTypeChecker(TypeChecker checker)protected static java.lang.StringtoJvmArrayName(java.lang.String name, int dim)protected static java.lang.StringtoJvmTypeName(int type, int dim)private static inttypePrecedence(int type)
-
-
-
Field Detail
-
javaLangObject
static final java.lang.String javaLangObject
- See Also:
- Constant Field Values
-
jvmJavaLangObject
static final java.lang.String jvmJavaLangObject
- See Also:
- Constant Field Values
-
javaLangString
static final java.lang.String javaLangString
- See Also:
- Constant Field Values
-
jvmJavaLangString
static final java.lang.String jvmJavaLangString
- See Also:
- Constant Field Values
-
bytecode
protected Bytecode bytecode
-
tempVar
private int tempVar
-
typeChecker
TypeChecker typeChecker
-
hasReturned
protected boolean hasReturned
true if the last visited node is a return statement.
-
inStaticMethod
public boolean inStaticMethod
Must be true if compilation is for a static method.
-
breakList
protected java.util.List<java.lang.Integer> breakList
-
continueList
protected java.util.List<java.lang.Integer> continueList
-
returnHooks
protected CodeGen.ReturnHook returnHooks
-
exprType
protected int exprType
-
arrayDim
protected int arrayDim
-
className
protected java.lang.String className
-
binOp
static final int[] binOp
-
ifOp
private static final int[] ifOp
-
ifOp2
private static final int[] ifOp2
-
P_DOUBLE
private static final int P_DOUBLE
- See Also:
- Constant Field Values
-
P_FLOAT
private static final int P_FLOAT
- See Also:
- Constant Field Values
-
P_LONG
private static final int P_LONG
- See Also:
- Constant Field Values
-
P_INT
private static final int P_INT
- See Also:
- Constant Field Values
-
P_OTHER
private static final int P_OTHER
- See Also:
- Constant Field Values
-
castOp
private static final int[] castOp
-
-
Constructor Detail
-
CodeGen
public CodeGen(Bytecode b)
-
-
Method Detail
-
setTypeChecker
public void setTypeChecker(TypeChecker checker)
-
fatal
protected static void fatal() throws CompileError- Throws:
CompileError
-
is2word
public static boolean is2word(int type, int dim)
-
getMaxLocals
public int getMaxLocals()
-
setMaxLocals
public void setMaxLocals(int n)
-
incMaxLocals
protected void incMaxLocals(int size)
-
getTempVar
protected int getTempVar()
Returns a local variable that single or double words can be stored in.
-
getLocalVar
protected int getLocalVar(Declarator d)
-
getThisName
protected abstract java.lang.String getThisName()
Returns the JVM-internal representation of this class name.
-
getSuperName
protected abstract java.lang.String getSuperName() throws CompileErrorReturns the JVM-internal representation of this super class name.- Throws:
CompileError
-
resolveClassName
protected abstract java.lang.String resolveClassName(ASTList name) throws CompileError
- Throws:
CompileError
-
resolveClassName
protected abstract java.lang.String resolveClassName(java.lang.String jvmClassName) throws CompileError- Throws:
CompileError
-
toJvmArrayName
protected static java.lang.String toJvmArrayName(java.lang.String name, int dim)- Parameters:
name- the JVM-internal representation. name is not exapnded to java.lang.*.
-
toJvmTypeName
protected static java.lang.String toJvmTypeName(int type, int dim)
-
compileExpr
public void compileExpr(ASTree expr) throws CompileError
- Throws:
CompileError
-
compileBooleanExpr
public boolean compileBooleanExpr(boolean branchIf, ASTree expr) throws CompileError- Throws:
CompileError
-
doTypeCheck
public void doTypeCheck(ASTree expr) throws CompileError
- Throws:
CompileError
-
atASTList
public void atASTList(ASTList n) throws CompileError
- Overrides:
atASTListin classVisitor- Throws:
CompileError
-
atPair
public void atPair(Pair n) throws CompileError
- Overrides:
atPairin classVisitor- Throws:
CompileError
-
atSymbol
public void atSymbol(Symbol n) throws CompileError
- Overrides:
atSymbolin classVisitor- Throws:
CompileError
-
atFieldDecl
public void atFieldDecl(FieldDecl field) throws CompileError
- Overrides:
atFieldDeclin classVisitor- Throws:
CompileError
-
atMethodDecl
public void atMethodDecl(MethodDecl method) throws CompileError
- Overrides:
atMethodDeclin classVisitor- Throws:
CompileError
-
atMethodBody
public void atMethodBody(Stmnt s, boolean isCons, boolean isVoid) throws CompileError
- Parameters:
isCons- true if super() must be called. false if the method is a class initializer.- Throws:
CompileError
-
needsSuperCall
private boolean needsSuperCall(Stmnt body) throws CompileError
- Throws:
CompileError
-
insertDefaultSuperCall
protected abstract void insertDefaultSuperCall() throws CompileError- Throws:
CompileError
-
atStmnt
public void atStmnt(Stmnt st) throws CompileError
- Overrides:
atStmntin classVisitor- Throws:
CompileError
-
atIfStmnt
private void atIfStmnt(Stmnt st) throws CompileError
- Throws:
CompileError
-
atWhileStmnt
private void atWhileStmnt(Stmnt st, boolean notDo) throws CompileError
- Throws:
CompileError
-
patchGoto
protected void patchGoto(java.util.List<java.lang.Integer> list, int targetPc)
-
atForStmnt
private void atForStmnt(Stmnt st) throws CompileError
- Throws:
CompileError
-
atSwitchStmnt
private void atSwitchStmnt(Stmnt st) throws CompileError
- Throws:
CompileError
-
computeLabel
private int computeLabel(ASTree expr) throws CompileError
- Throws:
CompileError
-
computeStringLabel
private int computeStringLabel(ASTree expr, int tmpVar, java.util.List<java.lang.Integer> gotoDefaults) throws CompileError
- Throws:
CompileError
-
atBreakStmnt
private void atBreakStmnt(Stmnt st, boolean notCont) throws CompileError
- Throws:
CompileError
-
atReturnStmnt
protected void atReturnStmnt(Stmnt st) throws CompileError
- Throws:
CompileError
-
atReturnStmnt2
protected final void atReturnStmnt2(ASTree result) throws CompileError
- Throws:
CompileError
-
atThrowStmnt
private void atThrowStmnt(Stmnt st) throws CompileError
- Throws:
CompileError
-
atTryStmnt
protected void atTryStmnt(Stmnt st) throws CompileError
- Throws:
CompileError
-
atSyncStmnt
private void atSyncStmnt(Stmnt st) throws CompileError
- Throws:
CompileError
-
getListSize
private static int getListSize(java.util.List<java.lang.Integer> list)
-
isPlusPlusExpr
private static boolean isPlusPlusExpr(ASTree expr)
-
atDeclarator
public void atDeclarator(Declarator d) throws CompileError
- Overrides:
atDeclaratorin classVisitor- Throws:
CompileError
-
atNewExpr
public abstract void atNewExpr(NewExpr n) throws CompileError
- Overrides:
atNewExprin classVisitor- Throws:
CompileError
-
atArrayInit
public abstract void atArrayInit(ArrayInit init) throws CompileError
- Overrides:
atArrayInitin classVisitor- Throws:
CompileError
-
atAssignExpr
public void atAssignExpr(AssignExpr expr) throws CompileError
- Overrides:
atAssignExprin classVisitor- Throws:
CompileError
-
atAssignExpr
protected void atAssignExpr(AssignExpr expr, boolean doDup) throws CompileError
- Throws:
CompileError
-
badAssign
protected static void badAssign(Expr expr) throws CompileError
- Throws:
CompileError
-
atVariableAssign
private void atVariableAssign(Expr expr, int op, Variable var, Declarator d, ASTree right, boolean doDup) throws CompileError
- Throws:
CompileError
-
atArrayVariableAssign
protected abstract void atArrayVariableAssign(ArrayInit init, int varType, int varArray, java.lang.String varClass) throws CompileError
- Throws:
CompileError
-
atArrayAssign
private void atArrayAssign(Expr expr, int op, Expr array, ASTree right, boolean doDup) throws CompileError
- Throws:
CompileError
-
atFieldAssign
protected abstract void atFieldAssign(Expr expr, int op, ASTree left, ASTree right, boolean doDup) throws CompileError
- Throws:
CompileError
-
atAssignCore
protected void atAssignCore(Expr expr, int op, ASTree right, int type, int dim, java.lang.String cname) throws CompileError
- Throws:
CompileError
-
atStringPlusEq
private void atStringPlusEq(Expr expr, int type, int dim, java.lang.String cname, ASTree right) throws CompileError
- Throws:
CompileError
-
invalidDim
private boolean invalidDim(int srcType, int srcDim, java.lang.String srcClass, int destType, int destDim, java.lang.String destClass, boolean isCast)
-
atCondExpr
public void atCondExpr(CondExpr expr) throws CompileError
- Overrides:
atCondExprin classVisitor- Throws:
CompileError
-
lookupBinOp
static int lookupBinOp(int token)
-
atBinExpr
public void atBinExpr(BinExpr expr) throws CompileError
- Overrides:
atBinExprin classVisitor- Throws:
CompileError
-
atArithBinExpr
private void atArithBinExpr(Expr expr, int token, int index, int type1) throws CompileError
- Throws:
CompileError
-
atStringConcatExpr
private void atStringConcatExpr(Expr expr, int type1, int dim1, java.lang.String cname1) throws CompileError
- Throws:
CompileError
-
convToString
private void convToString(int type, int dim) throws CompileError- Throws:
CompileError
-
booleanExpr
private boolean booleanExpr(boolean branchIf, ASTree expr) throws CompileError- Throws:
CompileError
-
isAlwaysBranch
private static boolean isAlwaysBranch(ASTree expr, boolean branchIf)
-
getCompOperator
static int getCompOperator(ASTree expr) throws CompileError
- Throws:
CompileError
-
compileOprands
private int compileOprands(BinExpr expr) throws CompileError
- Throws:
CompileError
-
compareExpr
private void compareExpr(boolean branchIf, int token, int type1, BinExpr expr) throws CompileError- Throws:
CompileError
-
badTypes
protected static void badTypes(Expr expr) throws CompileError
- Throws:
CompileError
-
isRefType
protected static boolean isRefType(int type)
-
typePrecedence
private static int typePrecedence(int type)
-
isP_INT
static boolean isP_INT(int type)
-
rightIsStrong
static boolean rightIsStrong(int type1, int type2)
-
convertOprandTypes
private void convertOprandTypes(int type1, int type2, Expr expr) throws CompileError- Throws:
CompileError
-
atCastExpr
public void atCastExpr(CastExpr expr) throws CompileError
- Overrides:
atCastExprin classVisitor- Throws:
CompileError
-
atInstanceOfExpr
public void atInstanceOfExpr(InstanceOfExpr expr) throws CompileError
- Overrides:
atInstanceOfExprin classVisitor- Throws:
CompileError
-
checkCastExpr
private java.lang.String checkCastExpr(CastExpr expr, java.lang.String name) throws CompileError
- Throws:
CompileError
-
atNumCastExpr
void atNumCastExpr(int srcType, int destType) throws CompileError- Throws:
CompileError
-
atExpr
public void atExpr(Expr expr) throws CompileError
- Overrides:
atExprin classVisitor- Throws:
CompileError
-
badType
protected static void badType(Expr expr) throws CompileError
- Throws:
CompileError
-
atCallExpr
public abstract void atCallExpr(CallExpr expr) throws CompileError
- Overrides:
atCallExprin classVisitor- Throws:
CompileError
-
atFieldRead
protected abstract void atFieldRead(ASTree expr) throws CompileError
- Throws:
CompileError
-
atClassObject
public void atClassObject(Expr expr) throws CompileError
- Throws:
CompileError
-
atClassObject2
protected void atClassObject2(java.lang.String cname) throws CompileError- Throws:
CompileError
-
atArrayRead
public void atArrayRead(ASTree array, ASTree index) throws CompileError
- Throws:
CompileError
-
arrayAccess
protected void arrayAccess(ASTree array, ASTree index) throws CompileError
- Throws:
CompileError
-
getArrayReadOp
protected static int getArrayReadOp(int type, int dim)
-
getArrayWriteOp
protected static int getArrayWriteOp(int type, int dim)
-
atPlusPlus
private void atPlusPlus(int token, ASTree oprand, Expr expr, boolean doDup) throws CompileError- Throws:
CompileError
-
atArrayPlusPlus
public void atArrayPlusPlus(int token, boolean isPost, Expr expr, boolean doDup) throws CompileError- Throws:
CompileError
-
atPlusPlusCore
protected void atPlusPlusCore(int dup_code, boolean doDup, int token, boolean isPost, Expr expr) throws CompileError- Throws:
CompileError
-
atFieldPlusPlus
protected abstract void atFieldPlusPlus(int token, boolean isPost, ASTree oprand, Expr expr, boolean doDup) throws CompileError- Throws:
CompileError
-
atMember
public abstract void atMember(Member n) throws CompileError
- Overrides:
atMemberin classVisitor- Throws:
CompileError
-
atVariable
public void atVariable(Variable v) throws CompileError
- Overrides:
atVariablein classVisitor- Throws:
CompileError
-
atKeyword
public void atKeyword(Keyword k) throws CompileError
- Overrides:
atKeywordin classVisitor- Throws:
CompileError
-
atStringL
public void atStringL(StringL s) throws CompileError
- Overrides:
atStringLin classVisitor- Throws:
CompileError
-
atIntConst
public void atIntConst(IntConst i) throws CompileError
- Overrides:
atIntConstin classVisitor- Throws:
CompileError
-
atDoubleConst
public void atDoubleConst(DoubleConst d) throws CompileError
- Overrides:
atDoubleConstin classVisitor- Throws:
CompileError
-
-