Class ASMCodeGenerator
java.lang.Object
com.googlecode.aviator.code.BaseEvalCodeGenerator
com.googlecode.aviator.code.asm.ASMCodeGenerator
- All Implemented Interfaces:
CodeGenerator, EvalCodeGenerator
-
Nested Class Summary
Nested Classes -
Field Summary
FieldsFields inherited from class BaseEvalCodeGenerator
classLoader, compileEnv, funcsArgs, instance, lambdaBootstraps, lambdaGenerator, methodMetaDataStack, methodTokens, parentCodeGenerator, parser, sourceFile, symbolTable, variables -
Constructor Summary
ConstructorsConstructorDescriptionASMCodeGenerator(AviatorEvaluatorInstance instance, String sourceFile, AviatorClassLoader classLoader, OutputStream traceOut) -
Method Summary
Modifier and TypeMethodDescriptionvoidgenNewLambdaCode(LambdaFunctionBootstrap bootstrap) intgetResult(boolean unboxObject) voidinitConstants(Set<Token<?>> constants) Initial constant pool.voidinitMethods(Map<String, Integer> methods) voidinitVariables(Map<String, VariableMeta> vars) voidvoidDo logic operation "invalid input: '&'invalid input: '&'" left operandvoidonAndRight(Token<?> lookhead) Do logic operation "invalid input: '&'invalid input: '&'" right operandvoidvoidonArrayIndexEnd(Token<?> lookhead) voidonArrayIndexStart(Token<?> token) voidonAssignment(Token<?> lookhead) voidvoidBit operation '~'voidvoidvoidonConstant(Token<?> lookhead) voidvoidvoidonExponent(Token<?> lookhead) voidvoidvoidonJoinLeft(Token<?> lookhead) Do logic operation "||" left operandvoidonJoinRight(Token<?> lookhead) Do logic operation "||" right operandvoidonLambdaArgument(Token<?> lookhead, FunctionParam param) voidonLambdaBodyEnd(Token<?> lookhead) voidonLambdaBodyStart(Token<?> lookhead) voidonLambdaDefineStart(Token<?> lookhead) voidvoidvoidvoidonMethodInvoke(Token<?> lookhead) voidonMethodName(Token<?> lookhead) voidonMethodParameter(Token<?> lookhead) voidvoidvoidvoidvoidLogic operation '!'voidonShiftLeft(Token<?> lookhead) voidonShiftRight(Token<?> lookhead) voidvoidonTernaryBoolean(Token<?> lookhead) voidonTernaryEnd(Token<?> lookhead) voidonTernaryLeft(Token<?> lookhead) voidonTernaryRight(Token<?> lookhead) voidonUnsignedShiftRight(Token<?> lookhead) voidstart()Methods inherited from class BaseEvalCodeGenerator
getClassLoader, getFuncsArgs, getNextFuncInvocationId, setLambdaBootstraps, setParser
-
Field Details
-
FUNC_ARGS_INNER_VAR
- See Also:
-
-
Constructor Details
-
ASMCodeGenerator
public ASMCodeGenerator(AviatorEvaluatorInstance instance, String sourceFile, AviatorClassLoader classLoader, OutputStream traceOut)
-
-
Method Details
-
start
public void start() -
onAdd
-
onSub
-
onMult
-
onExponent
-
onAssignment
-
onDiv
-
onMod
-
onAndLeft
Do logic operation "invalid input: '&'invalid input: '&'" left operand -
onAndRight
Do logic operation "invalid input: '&'invalid input: '&'" right operand -
onTernaryBoolean
-
onTernaryLeft
-
onTernaryRight
-
onTernaryEnd
-
onJoinRight
Do logic operation "||" right operand -
onJoinLeft
Do logic operation "||" left operand -
onEq
-
onMatch
-
onNeq
-
onGe
-
onGt
-
onLe
-
onLt
-
onNot
Logic operation '!' -
onBitNot
Bit operation '~' -
onNeg
-
getResult
-
onConstant
-
initVariables
-
initConstants
-
initMethods
- Specified by:
initMethodsin interfaceEvalCodeGenerator- Overrides:
initMethodsin classBaseEvalCodeGenerator
-
onMethodInvoke
-
onMethodParameter
-
onArray
-
onArrayIndexStart
-
onArrayIndexEnd
-
getLocalIndex
public int getLocalIndex() -
onLambdaDefineStart
-
onLambdaArgument
-
onLambdaBodyStart
-
onLambdaBodyEnd
-
genNewLambdaCode
-
onMethodName
-
onBitAnd
-
onBitOr
-
onBitXor
-
onShiftLeft
-
onShiftRight
-
onUnsignedShiftRight
-