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 void
void
genNewLambdaCode
(LambdaFunctionBootstrap bootstrap) getResult
(boolean unboxObject) void
initConstants
(Set<Token<?>> constants) void
initVariables
(Map<String, VariableMeta> vars) private Label
void
void
void
onAndRight
(Token<?> lookhead) void
void
onArrayIndexEnd
(Token<?> lookhead) void
onArrayIndexStart
(Token<?> token) void
onAssignment
(Token<?> lookhead) void
void
void
void
void
onConstant
(Token<?> lookhead) void
void
void
onExponent
(Token<?> loohead) void
void
void
onJoinLeft
(Token<?> lookhead) void
onJoinRight
(Token<?> lookhead) void
onLambdaArgument
(Token<?> lookhead, FunctionParam param) void
onLambdaBodyEnd
(Token<?> lookhead) void
onLambdaBodyStart
(Token<?> lookhead) void
onLambdaDefineStart
(Token<?> lookhead) void
void
void
void
onMethodInvoke
(Token<?> lookhead) void
onMethodName
(Token<?> lookhead) void
onMethodParameter
(Token<?> lookhead) void
void
void
void
void
void
onShiftLeft
(Token<?> lookhead) void
onShiftRight
(Token<?> lookhead) void
void
onTernaryBoolean
(Token<?> lookhead) void
onTernaryEnd
(Token<?> lookhead) void
onTernaryLeft
(Token<?> lookhead) void
onTernaryRight
(Token<?> lookhead) void
onUnsignedShiftRight
(Token<?> lookhead) private void
private Label
private Label
private Label
private Label
private void
pushLabel0
(Label label) private void
pushLabel1
(Label label) private void
resolveLabels
(List<IR> instruments) void
start()
private void
visitLabel
(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
-