Class ASMCodeGenerator

java.lang.Object
com.googlecode.aviator.code.BaseEvalCodeGenerator
com.googlecode.aviator.code.asm.ASMCodeGenerator
All Implemented Interfaces:
CodeGenerator, EvalCodeGenerator

public class ASMCodeGenerator extends BaseEvalCodeGenerator
Code generator using asm
  • Field Details

  • Constructor Details

  • Method Details

    • setMaxStacks

      private void setMaxStacks(int newMaxStacks)
    • getLambdaGenerator

      LambdaGenerator getLambdaGenerator()
    • 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 "invalid input: '&'invalid input: '&'" left operand
    • visitBoolean

      private void visitBoolean()
    • pushLabel0

      private void pushLabel0(Label l0)
    • onAndRight

      public void onAndRight(Token<?> lookhead)
      Do logic operation "invalid input: '&'invalid input: '&'" 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, String methodName)
    • visitLineNumber

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

      private void visitUnaryOperator(Token<?> lookhead, OperatorType opType, 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(Map<String,VariableMeta> vars)
    • initConstants

      public void initConstants(Set<Token<?>> constants)
      Initial constant pool.
      Parameters:
      constants -
    • initMethods

      public void initMethods(Map<String,Integer> methods)
      Specified by:
      initMethods in interface EvalCodeGenerator
      Overrides:
      initMethods in class BaseEvalCodeGenerator
    • getInnerName

      private String getInnerName(String varName)
    • getInvokeMethodDesc

      private static 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)
    • genNewLambdaCode

      public void genNewLambdaCode(LambdaFunctionBootstrap bootstrap)
    • onMethodName

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

      private void checkExecutionTimeout()
    • loadAviatorFunction

      private void loadAviatorFunction(String outterMethodName, String innerMethodName)
    • loadEnv

      private void loadEnv()
    • createAviatorFunctionObject

      private void createAviatorFunctionObject(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)