Package anvil.codec

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,
      "concat", "(Lanvil/core/Any;)Lanvil/core/Any;"));
    if (operation == GET_BOOLEAN) {
      context.any2boolean();
    }
  }
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,
        "ne", "(Lanvil/core/Any;Lanvil/core/Any;)Z"));
    } else {
      code.invokestatic(code.getPool().addMethodRef(context.TYPE_ANY_OP,
        "neA", "(Lanvil/core/Any;Lanvil/core/Any;)Lanvil/core/Any;"));
    }
  }
View Full Code Here

  protected static void compileMembers(ByteCompiler context, int size, Enumeration types)
  {
    ClassRoom clazz = context.getClassRoom();
    ConstantPool pool = clazz.getPool();
    Field members = clazz.createField("_members", "[Ljava/lang/Object;", Code.ACC_PUBLIC|Code.ACC_STATIC);
    Code code = clazz.getStatic().getCode();
    context.pushCode(code);
    int intclazz = pool.addClass("java/lang/Integer");
    int intclazzctor = pool.addMethodRef(intclazz, "<init>", "(I)V");
    code.iconst(size * 4);
    code.anewarray("java/lang/Object");
    for(int i=0; types.hasMoreElements();) {
      Type type = (Type)types.nextElement();
      switch(type.getType()) {
      case Type.MODULE:
      case Type.CLASS:
      case Type.INTERFACE:
      case Type.NAMESPACE:
      case Type.FUNCTION:
      case Type.METHOD:
      case Type.INTERFACE_METHOD:
      case Type.CONSTRUCTOR:
      case Type.CONSTANT_VARIABLE:
      case Type.STATIC_VARIABLE:
      case Type.MEMBER_VARIABLE:
        {
          code.dup();
          code.iconst(i++);
          code.anew(intclazz);
          code.dup();
          code.iconst(type.getType());
          code.invokespecial(intclazzctor);
          code.aastore();

          code.dup();
          code.iconst(i++);
          code.astring(type.getName());
          code.aastore();

          code.dup();
          code.iconst(i++);
          Doc doc = type.getDocument();
          if (doc != null) {
            doc.compile(code);
          } else {
            code.aconst_null();
          }
          code.aastore();     

          code.dup();
          code.iconst(i++);
          switch(type.getType()) {
          case Type.FUNCTION:
          case Type.METHOD:
          case Type.INTERFACE_METHOD:
          case Type.CONSTRUCTOR:
            ((FunctionStatement)type).compileDescriptor(context);
            break;
          default:
            code.aconst_null();
          }
          code.aastore();
        }
        break;
       
      default:
        break;
      }
    }
    code.putstatic(members);
    context.popCode();
  }
View Full Code Here


  public void compile(ByteCompiler context, int operation)
  {
    _child.compile(context, GET);
    Code code = context.getCode();
    code.invokevirtual(code.getPool().addMethodRef(context.TYPE_ANY, "clone",
      "()Ljava/lang/Object;"));
    code.checkcast(context.TYPE_ANY);
    if (operation == GET_BOOLEAN) {
      context.any2boolean();
    }
  }
View Full Code Here

  {
    if (operation == GET_BOOLEAN) {
      _child.compile(context, GET_BOOLEAN);
    } else {
      _child.compile(context, GET);
      Code code = context.getCode();
      code.invokevirtual(code.getPool().addMethodRef(context.TYPE_ANY,
        "toAnyString", "()Lanvil/core/Any;"));
    }
  }
View Full Code Here

  {
    if (operation == GET_BOOLEAN) {
      _child.compile(context, GET_BOOLEAN);
    } else {
      _child.compile(context, GET);
      Code code = context.getCode();
      code.invokevirtual(code.getPool().addMethodRef(context.TYPE_ANY,
        "toAnyInt", "()Lanvil/core/Any;"));
    }
  }
View Full Code Here

  }


  public void compile(ByteCompiler context, int operation)
  {
    Code code = context.getCode();
    _left.compile(context, GET_BOOLEAN);
    code.dup();
    Source source = code.if_ne();
    code.pop();
    _right.compile(context, GET_BOOLEAN);
    source.bind();
    if (operation != GET_BOOLEAN) {
      context.boolean2any();
    }   
View Full Code Here


  public void compile(ByteCompiler context, Node child)
  {
    child.compile(context, GET);
    Code code = context.getCode();
    code.dup();
    code.putstatic(_constant.getTypeRef(code.getPool()));
  }
View Full Code Here

  {
    /* execute(Context, Any[]) */
    {
      Method method = clazz.createMethod("execute",
        "(Lanvil/script/Context;[Lanvil/core/Any;)Lanvil/core/Any;", Code.ACC_PUBLIC);
      Code code = method.getCode();
      ConstantPool pool = code.getPool();
      int l_context = code.addLocal();
      int l_parameters = code.addLocal();
      context.pushCode(code);
      code.getstatic(pool.addFieldRef(clazz.getIndex(), "m_"+function.getName(), "Lanvil/script/Function;"));
      code.aload(l_context);
      code.self();
      code.aload(l_parameters);
      code.invokeinterface(pool.addInterfaceMethodRef("anvil/script/Function",
        "execute", "(Lanvil/script/Context;Lanvil/core/Any;[Lanvil/core/Any;)Lanvil/core/Any;"));
      code.areturn();
      context.popCode();
    }

    for(int i=0; i<5; i++) {
      Method method = clazz.createMethod("execute", EXECUTE_SIGNATURES[i], Code.ACC_PUBLIC);
View Full Code Here

  }


  public void compile(ByteCompiler context, int operation)
  {
    Code code = context.getCode();
    int field = _constant.getTypeRef(context.getPool());
    switch(operation) {
    case GET:
    case CHECK:
      if (isConstant()) {
        context.constant(_constant.getValue(), false);
      } else {
        code.getstatic(field);
      }
      break;

    case GET_BOOLEAN:
      if (isConstant()) {
        code.iconst(_constant.getValue().toBoolean());
      } else {
        code.getstatic(field);
        context.any2boolean();
      }
      break;

    case DELETE:
      code.iconst(false);
      break;
   
  }
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.