Class InterpretCodeGenerator
java.lang.Object
com.googlecode.aviator.code.BaseEvalCodeGenerator
com.googlecode.aviator.code.interpreter.InterpretCodeGenerator
- All Implemented Interfaces:
CodeGenerator,EvalCodeGenerator
Generate expression based on IR for interpreting.
-
Field Summary
FieldsFields inherited from class com.googlecode.aviator.code.BaseEvalCodeGenerator
classLoader, compileEnv, funcsArgs, instance, lambdaBootstraps, lambdaGenerator, methodMetaDataStack, methodTokens, parentCodeGenerator, parser, sourceFile, symbolTable, variables -
Constructor Summary
ConstructorsConstructorDescriptionInterpretCodeGenerator(AviatorEvaluatorInstance instance, String sourceFile, AviatorClassLoader classLoader) -
Method Summary
Modifier and TypeMethodDescriptionprivate voidvoidgenNewLambdaCode(LambdaFunctionBootstrap bootstrap) getResult(boolean unboxObject) voidinitConstants(Set<Token<?>> constants) voidinitVariables(Map<String, VariableMeta> vars) private LabelvoidvoidvoidonAndRight(Token<?> lookhead) voidvoidonArrayIndexEnd(Token<?> lookhead) voidonArrayIndexStart(Token<?> token) voidonAssignment(Token<?> lookhead) voidvoidvoidvoidvoidonConstant(Token<?> lookhead) voidvoidvoidonExponent(Token<?> loohead) voidvoidvoidonJoinLeft(Token<?> lookhead) voidonJoinRight(Token<?> lookhead) voidonLambdaArgument(Token<?> lookhead, FunctionParam param) voidonLambdaBodyEnd(Token<?> lookhead) voidonLambdaBodyStart(Token<?> lookhead) voidonLambdaDefineStart(Token<?> lookhead) voidvoidvoidvoidonMethodInvoke(Token<?> lookhead) voidonMethodName(Token<?> lookhead) voidonMethodParameter(Token<?> lookhead) voidvoidvoidvoidvoidvoidonShiftLeft(Token<?> lookhead) voidonShiftRight(Token<?> lookhead) voidvoidonTernaryBoolean(Token<?> lookhead) voidonTernaryEnd(Token<?> lookhead) voidonTernaryLeft(Token<?> lookhead) voidonTernaryRight(Token<?> lookhead) voidonUnsignedShiftRight(Token<?> lookhead) private voidprivate Labelprivate Labelprivate Labelprivate Labelprivate voidpushLabel0(Label label) private voidpushLabel1(Label label) private voidresolveLabels(List<IR> instruments) voidstart()private voidvisitLabel(Label label) Methods inherited from class com.googlecode.aviator.code.BaseEvalCodeGenerator
getClassLoader, getFuncsArgs, getNextFuncInvocationId, initMethods, setLambdaBootstraps, setParser
-
Field Details
-
instruments
-
constantPool
-
labelNum
private int labelNum -
labels0
-
labels1
-
currLabel
-
LOAD_CONSTANTS_TYPE
-
-
Constructor Details
-
InterpretCodeGenerator
public InterpretCodeGenerator(AviatorEvaluatorInstance instance, String sourceFile, AviatorClassLoader classLoader)
-
-
Method Details
-
visitLabel
-
pushLabel0
-
popLabel0
-
peekLabel0
-
pushLabel1
-
popLabel1
-
peekLabel1
-
makeLabel
-
start
public void start() -
initVariables
-
initConstants
-
genNewLambdaCode
-
onAssignment
-
onShiftRight
-
onShiftLeft
-
onUnsignedShiftRight
-
onBitOr
-
onBitAnd
-
onBitXor
-
onBitNot
-
onAdd
-
onSub
-
onMult
-
onExponent
-
onDiv
-
onAndLeft
-
emit
-
onAndRight
-
onTernaryBoolean
-
onTernaryLeft
-
onTernaryRight
-
onTernaryEnd
-
onJoinLeft
-
onJoinRight
-
onEq
-
onMatch
-
onNeq
-
onLt
-
onLe
-
onGt
-
onGe
-
onMod
-
onNot
-
onNeg
-
getResult
-
optimize
-
resolveLabels
-
onConstant
-
onMethodName
-
onMethodParameter
-
onMethodInvoke
-
onLambdaDefineStart
-
onLambdaArgument
-
onLambdaBodyStart
-
onLambdaBodyEnd
-
onArray
-
onArrayIndexStart
-
onArrayIndexEnd
-