Package com.googlecode.aviator.code
Class OptimizeCodeGenerator
java.lang.Object
com.googlecode.aviator.code.OptimizeCodeGenerator
- All Implemented Interfaces:
CodeGenerator
Optimized code generator
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate final EvalCodeGenerator
private Env
private final AviatorEvaluatorInstance
private Map
<String, LambdaFunctionBootstrap> Compiled lambda functions.private LambdaGenerator
private CodeGenerator
private Parser
private final String
-
Constructor Summary
ConstructorsConstructorDescriptionOptimizeCodeGenerator
(AviatorEvaluatorInstance instance, String sourceFile, ClassLoader classLoader, OutputStream traceOutStream) -
Method Summary
Modifier and TypeMethodDescriptionprivate void
private void
private int
execute()
private int
executeOperator
(Map<Integer, DelegateToken.DelegateTokenType> index2DelegateType, Token<?> operatorToken, OperatorType operatorType, int operatorIndex, int operandCount) private AviatorObject
getAviatorObjectFromToken
(Token<?> lookhead) private Env
private Map
<Integer, DelegateToken.DelegateTokenType> getIndex2DelegateTypeMap
(OperatorType opType) getResult
(boolean unboxObject) private Token
<?> getTokenFromOperand
(Token<?> operatorToken, AviatorObject operand) Get token from executing resultprivate boolean
isLiteralOperand
(Token<?> token, Token.TokenType tokenType, int index, Map<Integer, DelegateToken.DelegateTokenType> index2DelegateType) void
void
void
onAndRight
(Token<?> lookhead) void
void
onArrayIndexEnd
(Token<?> lookhead) void
onArrayIndexStart
(Token<?> lookhead) void
onAssignment
(Token<?> lookhead) void
void
void
void
void
onConstant
(Token<?> lookhead) void
void
void
onExponent
(Token<?> lookhead) 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
void
-
Field Details
-
codeGen
-
tokenList
-
lambdaGenerator
-
parentCodeGenerator
-
instance
-
parser
-
compileEnv
-
lambdaBootstraps
Compiled lambda functions. -
sourceFile
-
-
Constructor Details
-
OptimizeCodeGenerator
public OptimizeCodeGenerator(AviatorEvaluatorInstance instance, String sourceFile, ClassLoader classLoader, OutputStream traceOutStream)
-
-
Method Details
-
getCompileEnv
-
setParser
- Specified by:
setParser
in interfaceCodeGenerator
-
getIndex2DelegateTypeMap
-
execute
private int execute() -
executeOperator
private int executeOperator(Map<Integer, DelegateToken.DelegateTokenType> index2DelegateType, Token<?> operatorToken, OperatorType operatorType, int operatorIndex, int operandCount) -
isLiteralOperand
private boolean isLiteralOperand(Token<?> token, Token.TokenType tokenType, int index, Map<Integer, DelegateToken.DelegateTokenType> index2DelegateType) -
getTokenFromOperand
Get token from executing result- Parameters:
operand
-- Returns:
-
compactTokenList
private void compactTokenList() -
getAviatorObjectFromToken
-
getResult
- Specified by:
getResult
in interfaceCodeGenerator
-
callASM
-
printTokenList
private void printTokenList() -
onAdd
- Specified by:
onAdd
in interfaceCodeGenerator
-
onAndLeft
- Specified by:
onAndLeft
in interfaceCodeGenerator
-
onAndRight
- Specified by:
onAndRight
in interfaceCodeGenerator
-
onConstant
- Specified by:
onConstant
in interfaceCodeGenerator
-
onDiv
- Specified by:
onDiv
in interfaceCodeGenerator
-
onArrayIndexStart
- Specified by:
onArrayIndexStart
in interfaceCodeGenerator
-
onAssignment
- Specified by:
onAssignment
in interfaceCodeGenerator
-
onArrayIndexEnd
- Specified by:
onArrayIndexEnd
in interfaceCodeGenerator
-
onArray
- Specified by:
onArray
in interfaceCodeGenerator
-
onEq
- Specified by:
onEq
in interfaceCodeGenerator
-
onGe
- Specified by:
onGe
in interfaceCodeGenerator
-
onGt
- Specified by:
onGt
in interfaceCodeGenerator
-
onJoinLeft
- Specified by:
onJoinLeft
in interfaceCodeGenerator
-
onJoinRight
- Specified by:
onJoinRight
in interfaceCodeGenerator
-
onLe
- Specified by:
onLe
in interfaceCodeGenerator
-
onLt
- Specified by:
onLt
in interfaceCodeGenerator
-
onMatch
- Specified by:
onMatch
in interfaceCodeGenerator
-
onMethodInvoke
- Specified by:
onMethodInvoke
in interfaceCodeGenerator
-
onMethodName
- Specified by:
onMethodName
in interfaceCodeGenerator
-
onMethodParameter
- Specified by:
onMethodParameter
in interfaceCodeGenerator
-
onLambdaDefineStart
- Specified by:
onLambdaDefineStart
in interfaceCodeGenerator
-
onLambdaArgument
- Specified by:
onLambdaArgument
in interfaceCodeGenerator
-
onLambdaBodyStart
- Specified by:
onLambdaBodyStart
in interfaceCodeGenerator
-
onLambdaBodyEnd
- Specified by:
onLambdaBodyEnd
in interfaceCodeGenerator
-
onMod
- Specified by:
onMod
in interfaceCodeGenerator
-
onMult
- Specified by:
onMult
in interfaceCodeGenerator
-
onExponent
- Specified by:
onExponent
in interfaceCodeGenerator
-
onNeg
- Specified by:
onNeg
in interfaceCodeGenerator
-
onNeq
- Specified by:
onNeq
in interfaceCodeGenerator
-
onNot
- Specified by:
onNot
in interfaceCodeGenerator
-
onSub
- Specified by:
onSub
in interfaceCodeGenerator
-
onTernaryBoolean
- Specified by:
onTernaryBoolean
in interfaceCodeGenerator
-
onTernaryLeft
- Specified by:
onTernaryLeft
in interfaceCodeGenerator
-
onTernaryRight
- Specified by:
onTernaryRight
in interfaceCodeGenerator
-
onTernaryEnd
- Specified by:
onTernaryEnd
in interfaceCodeGenerator
-
onBitAnd
- Specified by:
onBitAnd
in interfaceCodeGenerator
-
onBitNot
- Specified by:
onBitNot
in interfaceCodeGenerator
-
onBitOr
- Specified by:
onBitOr
in interfaceCodeGenerator
-
onShiftLeft
- Specified by:
onShiftLeft
in interfaceCodeGenerator
-
onShiftRight
- Specified by:
onShiftRight
in interfaceCodeGenerator
-
onUnsignedShiftRight
- Specified by:
onUnsignedShiftRight
in interfaceCodeGenerator
-
onBitXor
- Specified by:
onBitXor
in interfaceCodeGenerator
-