Package railo.transformer.bytecode.visitor

Examples of railo.transformer.bytecode.visitor.DecisionDoubleVisitor


    }
    adapter.storeLocal(step);
   
    // boolean dirPlus=(step > 0);
    int dirPlus=adapter.newLocal(Types.BOOLEAN_VALUE);
    DecisionDoubleVisitor div=new DecisionDoubleVisitor();
    div.visitBegin();
      adapter.loadLocal(step);
    div.visitGT();
      adapter.push(0D);
    div.visitEnd(bc);
    adapter.storeLocal(dirPlus);
   
    //if(step!=0) {
    div=new DecisionDoubleVisitor();
    div.visitBegin();
      adapter.loadLocal(step);
    div.visitNEQ();
      adapter.push(0D);
    div.visitEnd(bc);
    Label ifEnd=new Label();
    adapter.ifZCmp(Opcodes.IFEQ, ifEnd);
     
      // VariableReference index>=VariableInterpreter.getVariableReference(pc,@index));
      int index = adapter.newLocal(Types.VARIABLE_REFERENCE);
      adapter.loadArg(0);
      ExpressionUtil.writeOutSilent(getAttribute("index").getValue(), bc, Expression.MODE_REF);
      adapter.invokeStatic(Types.VARIABLE_INTERPRETER, GET_VARIABLE_REFERENCE);
      adapter.storeLocal(index);
     

      // index.set(from);
      adapter.loadLocal(index);
      adapter.loadLocal(from);
      adapter.invokeVirtual(Types.VARIABLE_REFERENCE, SET_DOUBLE);
     
      // for
       
      //int i=forConditionVisitor.visitBeforeExpression(adapter,from,step,true);
     
      // init
      adapter.visitLabel(forDoubleVisitor.beforeInit);
      forDoubleVisitor.forInit(adapter, from, true);
      adapter.goTo(forDoubleVisitor.beforeExpr);
     
      // update
      adapter.visitLabel(forDoubleVisitor.beforeUpdate);
      adapter.loadLocal(index);
      //forConditionVisitor.forUpdate(adapter, step, true);
      adapter.visitVarInsn(Opcodes.DLOAD, forDoubleVisitor.i);
      adapter.loadLocal(step);
      adapter.visitInsn(Opcodes.DADD);
      adapter.visitInsn(Opcodes.DUP2);
      adapter.visitVarInsn(Opcodes.DSTORE, forDoubleVisitor.i);
     
     
     
      adapter.invokeVirtual(Types.VARIABLE_REFERENCE, SET_DOUBLE);
     
     
     
     
      // expression
      adapter.visitLabel(forDoubleVisitor.beforeExpr);
      int i=forDoubleVisitor.i;
     
     
     
     
     
        adapter.loadLocal(dirPlus);
        Label l1 = new Label();
        adapter.visitJumpInsn(Opcodes.IFEQ, l1);
       
          div=new DecisionDoubleVisitor();
          div.visitBegin();
            adapter.visitVarInsn(Opcodes.DLOAD, i);
          div.visitLTE();
            adapter.loadLocal(to);
          div.visitEnd(bc);
         
        Label l2 = new Label();
        adapter.visitJumpInsn(Opcodes.GOTO, l2);
        adapter.visitLabel(l1);
       
          div=new DecisionDoubleVisitor();
          div.visitBegin();
            adapter.visitVarInsn(Opcodes.DLOAD, i);
          div.visitGTE();
            adapter.loadLocal(to);
          div.visitEnd(bc);
       
        adapter.visitLabel(l2);
      forDoubleVisitor.visitAfterExpressionBeginBody(adapter);
       
        //adapter.loadLocal(index);
View Full Code Here

TOP

Related Classes of railo.transformer.bytecode.visitor.DecisionDoubleVisitor

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.