Class ASMCodeGenerator

    • Field Detail

      • CONSTRUCTOR_METHOD_NAME

        private static final java.lang.String CONSTRUCTOR_METHOD_NAME
        See Also:
        Constant Field Values
      • FUNC_ARGS_INNER_VAR

        public static final java.lang.String FUNC_ARGS_INNER_VAR
        See Also:
        Constant Field Values
      • className

        private final java.lang.String className
      • CLASS_COUNTER

        private static final java.util.concurrent.atomic.AtomicLong CLASS_COUNTER
      • operandsCount

        private int operandsCount
        Operands count to check stack frames
      • maxStacks

        private int maxStacks
      • maxLocals

        private int maxLocals
      • fieldCounter

        private int fieldCounter
      • innerVars

        private java.util.Map<java.lang.String,​java.lang.String> innerVars
      • innerMethodMap

        private java.util.Map<java.lang.String,​java.lang.String> innerMethodMap
      • constantPool

        private java.util.Map<Token<?>,​java.lang.String> constantPool
      • labelNameIndexMap

        private final java.util.Map<Label,​java.util.Map<java.lang.String,​java.lang.Integer>> labelNameIndexMap
      • START_LABEL

        private static final Label START_LABEL
      • currentLabel

        private Label currentLabel
      • l0stack

        private final java.util.Stack<Label> l0stack
        Label stack for ternary operator
      • l1stack

        private final java.util.Stack<Label> l1stack
    • Method Detail

      • setMaxStacks

        private void setMaxStacks​(int newMaxStacks)
      • start

        public void start()
      • startVisitMethodCode

        private void startVisitMethodCode()
      • endVisitMethodCode

        private void endVisitMethodCode​(boolean unboxObject)
      • endVisitClass

        private void endVisitClass()
      • makeConstructor

        private void makeConstructor()
        Make a default constructor
      • visitClass

        private void visitClass()
      • makeLabel

        private Label makeLabel()
        Make a label
        Returns:
      • onAdd

        public void onAdd​(Token<?> lookhead)
      • loadOpType

        private void loadOpType​(OperatorType opType)
      • popOperand

        private void popOperand()
        Pop a operand from stack
      • popOperand

        private void popOperand​(int n)
        Pop a operand from stack
      • onSub

        public void onSub​(Token<?> lookhead)
      • onMult

        public void onMult​(Token<?> lookhead)
      • onExponent

        public void onExponent​(Token<?> lookhead)
      • onAssignment

        public void onAssignment​(Token<?> lookhead)
      • onDiv

        public void onDiv​(Token<?> lookhead)
      • onMod

        public void onMod​(Token<?> lookhead)
      • onAndLeft

        public void onAndLeft​(Token<?> lookhead)
        Do logic operation "&&" left operand
      • visitBoolean

        private void visitBoolean()
      • pushLabel0

        private void pushLabel0​(Label l0)
      • onAndRight

        public void onAndRight​(Token<?> lookhead)
        Do logic operation "&&" right operand
      • visitRightBranch

        private void visitRightBranch​(Token<?> lookhead,
                                      int ints,
                                      OperatorType opType)
      • onTernaryBoolean

        public void onTernaryBoolean​(Token<?> lookhead)
      • pushLabel1

        private void pushLabel1​(Label l1)
      • onTernaryLeft

        public void onTernaryLeft​(Token<?> lookhead)
      • peekLabel1

        private Label peekLabel1()
      • onTernaryRight

        public void onTernaryRight​(Token<?> lookhead)
      • onTernaryEnd

        public void onTernaryEnd​(Token<?> lookhead)
      • popLabel1

        private Label popLabel1()
      • onJoinRight

        public void onJoinRight​(Token<?> lookhead)
        Do logic operation "||" right operand
      • visitLabel

        private void visitLabel​(Label label)
      • peekLabel0

        private Label peekLabel0()
      • popLabel0

        private Label popLabel0()
      • onJoinLeft

        public void onJoinLeft​(Token<?> lookhead)
        Do logic operation "||" left operand
      • visitLeftBranch

        private void visitLeftBranch​(Token<?> lookhead,
                                     int ints,
                                     OperatorType opType)
      • onEq

        public void onEq​(Token<?> lookhead)
      • onMatch

        public void onMatch​(Token<?> lookhead)
      • onNeq

        public void onNeq​(Token<?> lookhead)
      • doCompareAndJump

        private void doCompareAndJump​(Token<?> lookhead,
                                      int ints,
                                      OperatorType opType)
      • isEqNe

        private boolean isEqNe​(int ints)
      • visitCompare

        private void visitCompare​(int ints,
                                  OperatorType opType)
      • onGe

        public void onGe​(Token<?> lookhead)
      • onGt

        public void onGt​(Token<?> lookhead)
      • onLe

        public void onLe​(Token<?> lookhead)
      • onLt

        public void onLt​(Token<?> lookhead)
      • pushOperand

        private void pushOperand​(int delta)
      • onNot

        public void onNot​(Token<?> lookhead)
        Logic operation '!'
      • visitBinOperator

        private void visitBinOperator​(Token<?> token,
                                      OperatorType opType,
                                      java.lang.String methodName)
      • visitLineNumber

        private void visitLineNumber​(Token<?> token)
      • visitUnaryOperator

        private void visitUnaryOperator​(Token<?> lookhead,
                                        OperatorType opType,
                                        java.lang.String methodName)
      • onBitNot

        public void onBitNot​(Token<?> lookhead)
        Bit operation '~'
      • onNeg

        public void onNeg​(Token<?> lookhead)
      • getResult

        public Expression getResult​(boolean unboxObject)
      • genReadObject

        private void genReadObject()
      • genCustomSerializeMethod

        private void genCustomSerializeMethod()
      • genWriteObject

        private void genWriteObject()
      • end

        private void end​(boolean unboxObject)
      • onConstant

        public void onConstant​(Token<?> lookhead)
      • onConstant0

        private void onConstant0​(Token<?> lookhead,
                                 boolean inConstructor)
      • loadConstant

        private boolean loadConstant​(Token<?> lookhead,
                                     boolean inConstructor)
      • initVariables

        public void initVariables​(java.util.Map<java.lang.String,​VariableMeta> vars)
      • initConstants

        public void initConstants​(java.util.Set<Token<?>> constants)
        Initial constant pool.
        Parameters:
        constants -
      • getInnerName

        private java.lang.String getInnerName​(java.lang.String varName)
      • getInvokeMethodDesc

        private static java.lang.String getInvokeMethodDesc​(int paramCount)
      • onMethodInvoke

        public void onMethodInvoke​(Token<?> lookhead)
      • onMethodParameter

        public void onMethodParameter​(Token<?> lookhead)
      • pushOperand

        private void pushOperand()
      • onArray

        public void onArray​(Token<?> lookhead)
      • onArrayIndexStart

        public void onArrayIndexStart​(Token<?> token)
      • onArrayIndexEnd

        public void onArrayIndexEnd​(Token<?> lookhead)
      • getLocalIndex

        public int getLocalIndex()
      • onLambdaDefineStart

        public void onLambdaDefineStart​(Token<?> lookhead)
      • onLambdaArgument

        public void onLambdaArgument​(Token<?> lookhead,
                                     FunctionParam param)
      • onLambdaBodyStart

        public void onLambdaBodyStart​(Token<?> lookhead)
      • onLambdaBodyEnd

        public void onLambdaBodyEnd​(Token<?> lookhead)
      • onMethodName

        public void onMethodName​(Token<?> lookhead)
      • checkExecutionTimeout

        private void checkExecutionTimeout()
      • loadAviatorFunction

        private void loadAviatorFunction​(java.lang.String outterMethodName,
                                         java.lang.String innerMethodName)
      • loadEnv

        private void loadEnv()
      • createAviatorFunctionObject

        private void createAviatorFunctionObject​(java.lang.String methodName)
      • onBitAnd

        public void onBitAnd​(Token<?> lookhead)
      • onBitOr

        public void onBitOr​(Token<?> lookhead)
      • onBitXor

        public void onBitXor​(Token<?> lookhead)
      • onShiftLeft

        public void onShiftLeft​(Token<?> lookhead)
      • onShiftRight

        public void onShiftRight​(Token<?> lookhead)
      • onUnsignedShiftRight

        public void onUnsignedShiftRight​(Token<?> lookhead)