Package anvil.codec

Examples of anvil.codec.Code


    "(Lanvil/script/Function;Lanvil/script/StackFrame;Lanvil/core/Any;Lanvil/core/Any;Lanvil/core/Any;Lanvil/core/Any;)Lanvil/core/Any;"
  };
 
  public void compile(ByteCompiler context, int operation)
  {
    Code code = context.getCode();
    ConstantPool pool = code.getPool();
    boolean inClass = (_function.getType() != Type.FUNCTION);
   
    code.aload_first();
    if (inClass) {
      code.self();
    }
   
    int parent = _function.getParent().getTypeRef(pool);
    String name = (inClass ? "m_" : "f_")+_function.getName();
    int field = pool.addFieldRef(parent, name, "Lanvil/script/Function;");
    code.getstatic(field);
   
    int depth = Grammar.countEscapeDepth(_context, _function);
    code.aload(_context.getFrameIndex());
    if (depth >= 0) {
      code.iconst(depth+1);
      code.invokevirtual(pool.addMethodRef("anvil/script/StackFrame", "getEscape",
        "(I)Lanvil/script/StackFrame;"));
    }
   
    int n = childs();
    if (!hasSplices() && n<=4) {
      for(int i=0; i<n; i++) {
        getChild(i).compile(context, GET);
      }
      code.invokevirtual(pool.addMethodRef(context.TYPE_CONTEXT, "exec",
          inClass ? SIGNATURES_SELF[n] : SIGNATURES_NO_SELF[n]));
         
    } else {
      context.compileArgumentList(getChilds(0));
      code.invokevirtual(pool.addMethodRef(context.TYPE_CONTEXT, "exec",
        inClass ? "(Lanvil/core/Any;Lanvil/script/Function;Lanvil/script/StackFrame;[Lanvil/core/Any;)Lanvil/core/Any;" :
                  "(Lanvil/script/Function;Lanvil/script/StackFrame;[Lanvil/core/Any;)Lanvil/core/Any;"));
       
    }   
View Full Code Here


    left.compile(context, new Node() {
      public void compile(ByteCompiler context, int operation)
      {
        left.compile(context, GET);
        right.compile(context, GET);
        Code code = context.getCode();
        code.invokevirtual(code.getPool().addMethodRef(context.TYPE_ANY,
          "concat", "(Lanvil/core/Any;)Lanvil/core/Any;"));
      }     
    });
  }
View Full Code Here

  }
 

  public void compile(ByteCompiler context)
  {
    Code code = context.getCode();
    Target start = code.getTarget();

    switch(_condition.conditionOf()) {
    case Expression.IS_FALSE:
      return;

    case Expression.IS_TRUE:
      _startscope = code.getSource();
      _endscope = code.getSource();
      _statement.compile(context);
      code.go_to(_startscope);
      _startscope.bind(start);
      _endscope.bind();
      break;

    case Expression.IS_DYNAMIC:
      _startscope = code.getSource();
      _endscope = code.getSource();
      if (_condition.needLineNumbers()) {
        context.location(_condition.getLocation());
      }
      _condition.compile(context, Expression.GET_BOOLEAN);
      code.if_eq(_endscope);
      _statement.compile(context);
      if (!_statement.isBlocked()) {
        code.go_to(_startscope);
      }
      _startscope.bind(start);
      _endscope.bind();
      break;
    }
View Full Code Here

 


  public void compile(ByteCompiler context, int operation)
  {
    Code code = context.getCode();
    ConstantPool pool = code.getPool();
    code.aload_first();
    _left.compile(context, GET);
    _right.compile(context, GET);
    code.invokevirtual(pool.addMethodRef(context.TYPE_CONTEXT,
      "pipe", "(Lanvil/core/Any;Lanvil/core/Any;)Lanvil/core/Any;"));
    if (operation == GET_BOOLEAN) {
      context.any2boolean();
    }
  }
View Full Code Here

  }


  public void compile(ByteCompiler context, int operation)
  {
    Code code = context.getCode();
    code.aload_first();
    code.invokevirtual(code.getPool().addMethodRef(context.TYPE_CONTEXT,
     "global", "()Lanvil/core/Any;"));
    if (operation == GET_BOOLEAN) {
      context.any2boolean();
    }
  }
View Full Code Here

  }


  public void compile(ByteCompiler context, int operation)
  {
    Code code = context.getCode();
    ConstantPool pool = code.getPool();
    final Node child = _child;
    switch(child.typeOf()) {
    case Node.EXPR_VARIABLE:
      {
        child.compile(context, new Node() {
          public void compile(ByteCompiler context, int operation)
          {
            Code code = context.getCode();
            child.compile(context, GET);
            code.invokevirtual(code.getPool().addMethodRef(context.TYPE_ANY, "increase", "()Lanvil/core/Any;"));
          }     
        });
      }
      break;
     
    case Node.EXPR_ATTRIBUTE:
      {
        AttributeNode attr = (AttributeNode)child;
        attr.getChild().compile(context, GET);
        code.astring(attr.getAttribute());
        code.aload_first();
        code.invokestatic(pool.addMethodRef(context.TYPE_CONTEXT, "preinc",
          "(Lanvil/core/Any;Ljava/lang/String;Lanvil/script/Context;)Lanvil/core/Any;"));
      }
      break;
   
    case Node.EXPR_REFERENCE:
      {
        ReferenceNode ref = (ReferenceNode)child;
        ref.getLeft().compile(context, GET);
        ref.getRight().compile(context, GET);
        code.aload_first();
        code.invokestatic(pool.addMethodRef(context.TYPE_CONTEXT, "preinc",
          "(Lanvil/core/Any;Lanvil/core/Any;Lanvil/script/Context;)Lanvil/core/Any;"));
      }
      break;

    default:
View Full Code Here

    clazz.setAccessFlags(Code.ACC_SUPER|Code.ACC_PUBLIC);

    compileMembers(context, _types.size(), _types.elements());

    Field bases = clazz.createField("_bases", "[Ljava/lang/String;", Code.ACC_PUBLIC|Code.ACC_STATIC);
    Code code = clazz.getStatic().getCode();
    context.pushCode(code);

    //code.println("INTERFACE-START:"+getDescriptor());
    code.getstatic(pool.addFieldRef(_parent.getDescriptor(),
      "_members", "[Ljava/lang/Object;"));
    code.pop();

    int n = _bases.length;
    code.iconst(n);
    code.anewarray("java/lang/String");
    for(int i=0; i<n; i++) {
      InterfaceType interfacetype = _bases[i].getInterfaceType();
      code.dup();
      code.iconst(i);
      code.astring(interfacetype.getDescriptor().replace('/', '.'));
      code.aastore();
    }
    code.putstatic(bases);
    //code.println("INTERFACE-END:"+getDescriptor());
    code.vreturn();
    context.popCode();

    super.compile(context);
   
    context.popClass();
View Full Code Here

  }


  public void compile(ByteCompiler context, int operation)
  {
    Code code = context.getCode();
    ConstantPool pool = code.getPool();
    final Node child = _child;
    switch(child.typeOf()) {
    case Node.EXPR_VARIABLE:
      {
        child.compile(context, new Node() {
          public void compile(ByteCompiler context, int operation)
          {
            Code code = context.getCode();
            child.compile(context, GET);
            code.invokevirtual(code.getPool().addMethodRef(context.TYPE_ANY, "decrease", "()Lanvil/core/Any;"));
          }     
        });
      }
      break;
     
    case Node.EXPR_ATTRIBUTE:
      {
        AttributeNode attr = (AttributeNode)child;
        attr.getChild().compile(context, GET);
        code.astring(attr.getAttribute());
        code.aload_first();
        code.invokestatic(pool.addMethodRef(context.TYPE_CONTEXT, "predec",
          "(Lanvil/core/Any;Ljava/lang/String;Lanvil/script/Context;)Lanvil/core/Any;"));
      }
      break;
   
    case Node.EXPR_REFERENCE:
      {
        ReferenceNode ref = (ReferenceNode)child;
        ref.getLeft().compile(context, GET);
        ref.getRight().compile(context, GET);
        code.aload_first();
        code.invokestatic(pool.addMethodRef(context.TYPE_CONTEXT, "predec",
          "(Lanvil/core/Any;Lanvil/core/Any;Lanvil/script/Context;)Lanvil/core/Any;"));
      }
      break;

    default:
View Full Code Here

 

  public void compile(ByteCompiler context, int operation)
  {
    _child.compile(context, CHECK);
    Code code = context.getCode();
    code.invokevirtual(code.getPool().addMethodRef(context.TYPE_ANY,
      "isDefined", "()Z"));
    if (operation != GET_BOOLEAN) {
      context.boolean2any();
    }
  }
View Full Code Here


  public void compile(ByteCompiler context, int operation)
  {
    super.compile(context, GET);
    Code code = context.getCode();
    if (operation == GET_BOOLEAN) {
      code.invokestatic(code.getPool().addMethodRef(context.TYPE_ANY_OP,
        "gt", "(Lanvil/core/Any;Lanvil/core/Any;)Z"));
    } else {
      code.invokestatic(code.getPool().addMethodRef(context.TYPE_ANY_OP,
        "gtA", "(Lanvil/core/Any;Lanvil/core/Any;)Lanvil/core/Any;"));
    }
  }
View Full Code Here

TOP

Related Classes of anvil.codec.Code

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.