Examples of Code


Examples of anvil.codec.Code

 

  public void compile(ByteCompiler context, int operation)
  {
    _child.compile(context, GET);
    Code code = context.getCode();
    code.astring(_symbol);
    code.invokevirtual(code.getPool().addMethodRef(context.TYPE_ANY,
      "has", "(Ljava/lang/String;)Z"));
    if (operation != GET_BOOLEAN) {
      context.boolean2any();
    }
  }
View Full Code Here

Examples of anvil.codec.Code

  }


  public void compile(ByteCompiler context, int operation)
  {
    Code code = context.getCode();
    code.aload_first();
    super.compile(context, GET);
    code.invokestatic(code.getPool().addMethodRef(context.TYPE_CONTEXT,
      "nomatch", "(Lanvil/script/Context;Lanvil/core/Any;Lanvil/core/Any;)Z"));
    if (operation != GET_BOOLEAN) {
      context.boolean2any();
    }
  }
View Full Code Here

Examples of anvil.codec.Code

    for(int i=0; i<size; i++) {
      if (params[i].value != null) {
        count++;
      }
    }
    Code code = clazz.getStatic().getCode();
    code.iconst(count);
    code.anewarray("java/lang/Object");
    int j = 0;
    for(int i=0; i<size; i++) {
      Parameter param = params[i];
      Any defaultvalue = param.value;
      code.dup();
      code.iconst(j++);
      if (param.type == CompilableFunction.PARAMETER_REST) {
        code.astring(".."+param.name);
      } else if (defaultvalue != null) {
        code.astring("*"+param.name);
      } else {
        code.astring(param.name);
      }
      code.aastore();
      if (defaultvalue != null) { 
        code.dup();
        code.iconst(j++);
        context.constant(defaultvalue, false);
        code.aastore();
      }
    }
  } 
View Full Code Here

Examples of anvil.codec.Code

    //generic
    {
      Method method = clazz.createMethod("execute",
       "(Lanvil/script/Context;Lanvil/core/Any;[Lanvil/core/Any;)Lanvil/core/Any;",
       ACC_PUBLIC|ACC_FINAL);
      Code code = method.getCode();
      int l_context = code.addLocal();
      int l_self = code.addLocal();
      int l_parameters = code.addLocal();
      compileDispatch(function, isstatic, clazz, code, pool, l_context, l_self, l_parameters, constants);
    }

    for(int params=0; params<=4; params++) {
   
      Method method = clazz.createMethod("execute", EXECUTE_SIGNATURES[params], ACC_PUBLIC|ACC_FINAL);
      Code code = method.getCode();
      int l_context = code.addLocal();
      int l_self = code.addLocal();
      int l_base = code.addLocal();
      code.addLocals(params);
      compileDispatch(function, isstatic, clazz, code, pool, l_context, l_self, l_base, params, constants);
    }

    createConstructor(clazz, constants);
View Full Code Here

Examples of anvil.codec.Code

  }


  public void compile(ByteCompiler context)
  {
    Code code = context.getCode();
    ConstantPool pool = code.getPool();
    FunctionStatement function = getFunctionStatement();
    final boolean in_generator = function.isGenerator();
   
    if (_expression.needLineNumbers()) {
      context.location(_expression.getLocation());
    }
    if (in_generator) {
   
      if (_index != null) {
        _indexvar.compile(context, new Node()
        {
          public void compile(ByteCompiler context, int operation)
          {
            Code code_ = context.getCode();
            code_.getstatic(code_.getPool().addFieldRef(
              context.TYPE_ANY, "ZERO", "Lanvil/core/Any;"));
          }
        });
        code.pop();
      }

      int clazz1 = pool.addClass("java/util/Enumeration");
      int clazz2 = pool.addClass("anvil/java/util/BindingEnumeration");
      int clazz3 = pool.addClass("anvil/core/AnyBindingEnumeration");
      code.anew(clazz3);
      code.dup();
      _expression.compile(context, Expression.GET);
      code.invokevirtual(pool.addMethodRef(context.TYPE_ANY, "enumeration", "()Lanvil/java/util/BindingEnumeration;"));
      code.invokespecial(pool.addMethodRef(clazz3, "<init>", "(Lanvil/java/util/BindingEnumeration;)V"));
      final int tmp = code.addLocal();
      code.astore(tmp);
      _enumvar.compile(context, new Node()
      {
        public void compile(ByteCompiler context, int operation)
        {
          context.getCode().aload(tmp);
        }
      });
      code.endLocal(tmp);
      code.pop();

      Target start = code.getTarget();
      _startscope = code.getSource();
      _endscope = code.getSource();

      _enumvar.compile(context, Node.GET);
      code.invokeinterface(pool.addInterfaceMethodRef(clazz1, "hasMoreElements", "()Z"));
      code.if_eq(_endscope);

      if (_index != null) {
       
        new AssignmentNode(new ExpressionList(_index,
          new Node() {
            public void compile(ByteCompiler context, int operation)
            {
              _indexvar.compile(context, GET);
            }
          })).compile(context, Node.GET);
         
        code.pop();
       
        _indexvar.compile(context, new Node() {
          public void compile(ByteCompiler context, int operation)
          {
            Code code_ = context.getCode();
            _indexvar.compile(context, GET);
            code_.invokevirtual(code_.getPool().addMethodRef(context.TYPE_ANY,
              "increase", "()Lanvil/core/Any;"));
          }
        });
        code.pop();
      }

      if (_key != null) {
        new AssignmentNode(new ExpressionList(_key,
          new Node() {
            public void compile(ByteCompiler context, int operation)
            {
              Code code_ = context.getCode();
              ConstantPool pool_ = code_.getPool();
              _enumvar.compile(context, Node.GET);
              code_.invokeinterface(pool_.addInterfaceMethodRef("anvil/java/util/BindingEnumeration", "nextKey", "()Ljava/lang/Object;"));
              code_.invokestatic(pool_.addMethodRef(context.TYPE_ANY, "create", "(Ljava/lang/Object;)Lanvil/core/Any;"));
            }
          })).compile(context, Node.GET);
        code.pop();
      }


      if (_value != null) {
        new AssignmentNode(new ExpressionList(_value,
          new Node() {
            public void compile(ByteCompiler context, int operation)
            {
              Code code_ = context.getCode();
              ConstantPool pool_ = code_.getPool();
              _enumvar.compile(context, Node.GET);
              code_.invokeinterface(pool_.addInterfaceMethodRef("java/util/Enumeration", "nextElement", "()Ljava/lang/Object;"));
              code_.invokestatic(pool_.addMethodRef(context.TYPE_ANY, "create", "(Ljava/lang/Object;)Lanvil/core/Any;"));
            }
          })).compile(context, Node.GET);
        code.pop();

      } else
        _enumvar.compile(context, Node.GET);
        code.invokeinterface(pool.addInterfaceMethodRef(clazz1, "nextElement", "()Ljava/lang/Object;"));
        code.pop();

      }

      _statement.compile(context);
      code.go_to(_startscope);
      _endscope.bind();
      _startscope.bind(start);

    } else {

      final int l_enum = code.addLocal();
      final int l_index = (_index != null) ? code.addLocal() : 0;
      if (l_index != 0) {
        code.iconst(0);
        code.istore(l_index);
      }

      // create enumeration, and wrap it
      int clazz1 = pool.addClass("java/util/Enumeration");
      int clazz2 = pool.addClass("anvil/java/util/BindingEnumeration");
      _expression.compile(context, Expression.GET);
      code.invokevirtual(pool.addMethodRef(context.TYPE_ANY, "enumeration", "()Lanvil/java/util/BindingEnumeration;"));
      code.astore(l_enum);
      int sun_hack_1 = 10 + l_enum;

      Target start = code.getTarget();
      _startscope = code.getSource();
      _endscope = code.getSource();

      code.aload(l_enum);
      int sun_hack_2 = 10 + l_enum;
     
      code.invokeinterface(pool.addInterfaceMethodRef(clazz1, "hasMoreElements", "()Z"));
      code.if_eq(_endscope);

      if (_index != null) {
        new AssignmentNode(new ExpressionList(_index,
          new Node() {
            public void compile(ByteCompiler context, int operation)
            {
              Code code_ = context.getCode();
              code_.iload(l_index);
              code_.iinc(l_index, 1);
              code_.invokestatic(code_.getPool().addMethodRef(
                context.TYPE_ANY, "create", "(I)Lanvil/core/Any;"));
            }
          })).compile(context, Node.GET);
        code.pop();
      }

      if (_key != null) {
        new AssignmentNode(new ExpressionList(_key,
          new Node() {
            public void compile(ByteCompiler context, int operation)
            {
              Code code_ = context.getCode();
              ConstantPool pool_ = code_.getPool();
              code_.aload(l_enum);
              code_.invokeinterface(pool_.addInterfaceMethodRef("anvil/java/util/BindingEnumeration", "nextKey", "()Ljava/lang/Object;"));
              code_.invokestatic(pool_.addMethodRef(context.TYPE_ANY, "create", "(Ljava/lang/Object;)Lanvil/core/Any;"));
            }
          })).compile(context, Node.GET);
        code.pop();
      }

      if (_value != null) {
        new AssignmentNode(new ExpressionList(_value,
          new Node() {
            public void compile(ByteCompiler context, int operation)
            {
              Code code_ = context.getCode();
              ConstantPool pool_ = code_.getPool();
              code_.aload(l_enum);
              code_.invokeinterface(pool_.addInterfaceMethodRef("java/util/Enumeration", "nextElement", "()Ljava/lang/Object;"));
              code_.invokestatic(pool_.addMethodRef(context.TYPE_ANY, "create", "(Ljava/lang/Object;)Lanvil/core/Any;"));
            }
          })).compile(context, Node.GET);
        code.pop();

      } else
View Full Code Here

Examples of anvil.codec.Code



  public void compileRef(ByteCompiler context)
  {
    Code code = context.getCode();
    ConstantPool pool = code.getPool();
    code.getstatic(pool.addFieldRef(context.TYPE_MODULE,
      "f_"+_function.getName(), "Lanvil/script/Function;"));
  }
View Full Code Here

Examples of anvil.codec.Code

  }


  public void compile(ByteCompiler context, int operation)
  {
    Code code = context.getCode();
    ConstantPool pool = code.getPool();
    if (_function instanceof NativeJava) {
      if (hasSplices()) {
        code.getstatic(pool.addFieldRef(_function.getParent().getTypeRef(pool),
          "__module__", "Lanvil/script/compiler/NativeNamespace;"));
        code.aload_first();
        code.astring(_function.getName())
        context.compileArgumentList(getChilds(0));
        code.invokevirtual(pool.addMethodRef(
          "anvil/script/compiler/NativeNamespace", "execute",
          "(Lanvil/script/Context;Ljava/lang/String;[Lanvil/core/Any;)Lanvil/core/Any;"));
         
      } else {
        context.compileCall(_function, getChilds(0));
       
      }
     
    } else {
      if (hasSplices()) {
        code.getstatic(pool.addFieldRef(context.TYPE_MODULE,
          "f_"+_function.getName(), "Lanvil/script/Function;"));
        code.aload_first();
        context.compileArgumentList(getChilds(0));
        code.invokeinterface(pool.addInterfaceMethodRef(
          context.TYPE_FUNCTION, "execute",
          "(Lanvil/script/Context;[Lanvil/core/Any;)Lanvil/core/Any;"));
         
      } else {
        context.compileCall(_function, getChilds(0));
View Full Code Here

Examples of anvil.codec.Code

    clazz.setSuperClassname("java/lang/Object");
    clazz.addInterface("anvil/script/GeneratorDispatcher");
    clazz.setAccessFlags(ACC_PUBLIC|ACC_FINAL);

    Method method = clazz.createMethod("<init>", "()V", ACC_PUBLIC);
    Code code = method.getCode();
    code.self();
    code.invokespecial(pool.addMethodRef(clazz.getSuperClassIndex(), "<init>", "()V"));
    code.vreturn();

    method = clazz.createMethod("execute",
      "(Lanvil/script/Context;Lanvil/core/AnyClass;Lanvil/script/Generator;)Lanvil/core/Any;",
      ACC_PUBLIC|ACC_FINAL);
    code = method.getCode();
    code.addLocals(4);
   
    boolean ismethod = (function.getType() == Type.METHOD);
    Scope parent = function.getParent();
    int parent_ref = parent.getTypeRef(pool);
    if (ismethod) {
      code.aload(2);
      code.checkcast(parent_ref);
    }
    code.aload(1);
    code.aload(3);
    int method_ref = pool.addMethodRef(
        parent_ref, "h_"+function.getName(), "(Lanvil/script/Context;Lanvil/script/Generator;)Lanvil/core/Any;");
    if (ismethod) {
      code.invokevirtual(method_ref);
    } else {
      code.invokestatic(method_ref);
    }
    code.areturn();

    ByteArrayOutputStream bytestream = new ByteArrayOutputStream();
    clazz.write(new DataOutputStream(bytestream));
    bytestream.close();
View Full Code Here

Examples of anvil.codec.Code


  public void compile(ByteCompiler context, int operation)
  {
    super.compile(context, GET);
    Code code = context.getCode();
    code.invokevirtual(code.getPool().addMethodRef(context.TYPE_ANY,
      "compareTo", "(Lanvil/core/Any;)I"));
    if (operation == GET_BOOLEAN) {
      Source isfalse = code.if_eq();
      code.iconst(true);
      Source toend = code.go_to();
      isfalse.bind();
      code.iconst(false);
      toend.bind();
    } else {
      code.invokestatic(code.getPool().addMethodRef(context.TYPE_ANY,
        "create", "(I)Lanvil/core/Any;"));
    }
  }
View Full Code Here

Examples of anvil.codec.Code


  public void compile(ByteCompiler context, int operation)
  {
    _child.compile(context, CHECK);
    Code code = context.getCode();
    code.invokevirtual(code.getPool().addMethodRef(context.TYPE_ANY,
      "classNameOf", "()Ljava/lang/String;"));
    code.invokestatic(code.getPool().addMethodRef(context.TYPE_ANY,
      "create", "(Ljava/lang/String;)Lanvil/core/Any;"));
    if (operation == GET_BOOLEAN) {
      context.any2boolean();
    }
  }
View Full Code Here
TOP
Copyright © 2018 www.massapi.com. 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.