Package anvil.codec

Examples of anvil.codec.Code


  }


  public void compile(ByteCompiler context, int operation)
  {
    Code code = context.getCode();
    ConstantPool pool = code.getPool();
    int clazz = pool.addClass("anvil/core/AnyMap");
    code.anew(clazz);
    code.dup();
    super.compile(context, GET);
    code.invokespecial(pool.addMethodRef(clazz, "<init>",
      "(Lanvil/core/Any;Lanvil/core/Any;)V"));
    if (operation == GET_BOOLEAN) {
      context.any2boolean();
    }
  }
View Full Code Here


  }
 

  public void compile(ByteCompiler context)
  {
    Code code = context.getCode();
    ConstantPool pool = code.getPool();
    code.aload_first();
    FunctionStatement function = getFunctionStatement();
    if (function.isGenerator()) {
      code.aload(function.getFrameIndex());
      code.invokevirtual(pool.addMethodRef("anvil/script/Generator", "setClosedState", "()V"));
    }
    _expression.compile(context, Expression.GET);
    code.invokevirtual(pool.addMethodRef(context.TYPE_CONTEXT,
      "exception", "(Lanvil/core/Any;)Lanvil/script/ScriptException;"));
    code.athrow();
 
View Full Code Here

  }


  public void compile(ByteCompiler context, int operation)
  {
    Code code = context.getCode();
    ConstantPool pool = code.getPool();
    int clazz = pool.addClass("anvil/core/AnyRange");
    code.anew(clazz);
    code.dup();
    super.compile(context, GET);
    code.invokespecial(pool.addMethodRef(clazz, "<init>",
      "(Lanvil/core/Any;Lanvil/core/Any;)V"));
    if (operation == GET_BOOLEAN) {
      context.any2boolean();
    }
  }
View Full Code Here

   
  }

  public void compile(ByteCompiler context, ExceptionHandler handler, int l_data)
  {
    Code code = context.getCode();
    ConstantPool pool = code.getPool();
    DataNode datanode = new DataNode(l_data);
   
    if (_types != null) {
      Source istrue = code.getSource();
      Source isfalse = null;
     
      int n = _types.childs();

      boolean assigned = false;
      for(int i=0; i<n; i++) {
        if (_types.getChild(i).typeOf() != Node.EXPR_TYPE) {
          _assignment.compile(context, datanode);
          code.pop();
          assigned = true;
        }
      }

      for(int i=0; i<n; i++) {
        if (isfalse != null) {
          isfalse.bind();
        }
        Node child = _types.getChild(i);
        if (child.typeOf() == Node.EXPR_TYPE) {
          code.aload(l_data);
          child.compile(context, Node.GET_TYPE);
          code.invokevirtual(pool.addMethodRef(context.TYPE_ANY, "isInstanceOf", "(Lanvil/script/Type;)Z"));
        } else {
          child.compile(context, Node.GET_BOOLEAN);
        }
        isfalse = code.if_eq();
        code.go_to(istrue);
      }
     
      istrue.bind();
     
      if (!assigned) {
        _assignment.compile(context, datanode);
        code.pop();
      }
     
      _statement.compile(context);
      handler.callFinally();
      handler.jumpOut();
     
      isfalse.bind();
     
    } else {
      _assignment.compile(context, datanode);
      code.pop();
      _statement.compile(context);
      handler.callFinally();
      handler.jumpOut();
    }
  }
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,
        "lt", "(Lanvil/core/Any;Lanvil/core/Any;)Z"));
    } else {
      code.invokestatic(code.getPool().addMethodRef(context.TYPE_ANY_OP,
        "ltA", "(Lanvil/core/Any;Lanvil/core/Any;)Lanvil/core/Any;"));
    }
  }
View Full Code Here

  }


  public void compile(ByteCompiler context, Node child)
  {
    Code code = context.getCode();
    ConstantPool pool = code.getPool();
    if (_local.isEscaped()) {
      code.aload(_local.getFrameIndex());
      code.iconst(_local.getSlot());
      child.compile(context, GET);
      code.invokevirtual(code.getPool().addMethodRef("anvil/script/StackFrame",
        "setLocal", "(ILanvil/core/Any;)Lanvil/core/Any;"));
    } else {
      child.compile(context, GET);
      code.dup();
      code.astore(_local.getIndex());
    }
  }
View Full Code Here

  }
 

  public void compile(ByteCompiler context, int operation)
  {
    Code code = context.getCode();
    ConstantPool pool = code.getPool();
    if (_local.isEscaped()) {
      switch(operation) {
      case GET:
      case CHECK:
        code.aload(_local.getFrameIndex());
        code.iconst(_local.getSlot());
        code.invokevirtual(code.getPool().addMethodRef("anvil/script/StackFrame", "getLocal", "(I)Lanvil/core/Any;"));
        break;

      case GET_REF:
        int refclass = pool.addClass("anvil/core/AnyLocalRef");
        code.anew(refclass);
        code.dup();
        code.aload(_local.getFrameIndex());
        code.iconst(_local.getSlot());
        code.invokespecial(pool.addMethodRef(refclass, "<init>", "(Lanvil/script/StackFrame;I)V"));
        break;

      case GET_BOOLEAN:
        code.aload(_local.getFrameIndex());
        code.iconst(_local.getSlot());
        code.invokevirtual(code.getPool().addMethodRef("anvil/script/StackFrame", "getLocal", "(I)Lanvil/core/Any;"));
        context.any2boolean();
        break;

      case DELETE:
        code.iconst(false);
        break;
      }
     
    } else {
      switch(operation) {
      case GET:
        code.aload(_local.getIndex());
        break;

      case GET_BOOLEAN:
        code.aload(_local.getIndex());
        context.any2boolean();
        break;

      case CHECK:
        code.aload(_local.getIndex());
        break;

      case DELETE:
        code.getstatic(code.getPool().addFieldRef("anvil/core/Any", "UNDEFINED", "Lanvil/core/Any;"));
        break;
      }
    }
  }
View Full Code Here

  }


  public void compile(ByteCompiler context)
  {
    Code code = context.getCode();
    if (_expressions != null) {
      Expression expr;
      int n = _expressions.length;
      if (n>0) {
        for(int i=0; i<n; i++) {
          expr = _expressions[i];
          boolean newline = _newline && i==n-1;

          if (expr.isConstant()) {
            context.text(code, _converters.convert(expr.constant().toString()), newline);
          } else {
            if (expr.needLineNumbers()) {
              context.location(expr.getLocation());     
            }
            code.aload_first();
            if (_conversions == 0) {
              expr.compile(context, Expression.GET);
              code.invokevirtual(code.getPool().addMethodRef(context.TYPE_CONTEXT,
                newline ? "println" : "print" , "(Lanvil/core/Any;)V"));
            } else {
              _converters.compile(context, expr);
              code.invokevirtual(code.getPool().addMethodRef(context.TYPE_CONTEXT,
                newline ? "println" : "print" , "(Ljava/lang/String;)V"));
            }
          }
        }
      } else if (_newline) {
        code.aload_first();
        code.invokevirtual(code.getPool().addMethodRef(context.TYPE_CONTEXT, "println", "()V"));
      }
    }
  }
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,
        "eq", "(Lanvil/core/Any;Lanvil/core/Any;)Z"));
    } else {
      code.invokestatic(code.getPool().addMethodRef(context.TYPE_ANY_OP,
        "eqA", "(Lanvil/core/Any;Lanvil/core/Any;)Lanvil/core/Any;"));
    }
  }
View Full Code Here

  }

 
  public void compile(ByteCompiler context, int operation)
  {
    Code code = context.getCode();
    super.compile(context, GET);
    code.invokestatic(code.getPool().addMethodRef(context.TYPE_ANY_OP, "add", "(Lanvil/core/Any;Lanvil/core/Any;)Lanvil/core/Any;"));
    if (operation == GET_BOOLEAN) {
      context.any2boolean();
    }
  }
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.