Package clojure.asm.commons

Examples of clojure.asm.commons.Method


        gen.checkCast(CHAR_TYPE);
        gen.invokeVirtual(CHAR_TYPE, charValueMethod);
        }
      else
        {
        Method m = intValueMethod;
        gen.checkCast(NUMBER_TYPE);
        if(paramType == int.class)
          m = intValueMethod;
        else if(paramType == float.class)
          m = floatValueMethod;
View Full Code Here


      {
      Type type = Type.getType(method.getDeclaringClass());
      target.emit(C.EXPRESSION, fn, gen);
      gen.checkCast(type);
      MethodExpr.emitTypedArgs(fn, gen, method.getParameterTypes(), args);
      Method m = new Method(methodName, Type.getReturnType(method), Type.getArgumentTypes(method));
      if(method.getDeclaringClass().isInterface())
        gen.invokeInterface(type, m);
      else
        gen.invokeVirtual(type, m);
      HostExpr.emitBoxReturn(fn, gen, method.getReturnType());
View Full Code Here

    if(method != null)
      {
      MethodExpr.emitTypedArgs(fn, gen, method.getParameterTypes(), args);
      //Type type = Type.getObjectType(className.replace('.', '/'));
      Type type = Type.getType(c);
      Method m = new Method(methodName, Type.getReturnType(method), Type.getArgumentTypes(method));
      gen.invokeStatic(type, m);
      HostExpr.emitBoxReturn(fn, gen, method.getReturnType());
      }
    else
      {
View Full Code Here

      Var.popThreadBindings();
      }
  }

  public void emit(FnExpr fn, ClassVisitor cv){
    Method m = new Method(isVariadic() ? "doInvoke" : "invoke",
                          OBJECT_TYPE, ARG_TYPES[numParams()]);

    GeneratorAdapter gen = new GeneratorAdapter(ACC_PUBLIC,
                                                m,
                                                null,
View Full Code Here

      {
      Type type = Type.getType(c);
      gen.newInstance(type);
      gen.dup();
      MethodExpr.emitTypedArgs(fn, gen, ctor.getParameterTypes(), args);
      gen.invokeConstructor(type, new Method("<init>", Type.getConstructorDescriptor(ctor)));
      }
    else
      {
      gen.push(c.getName());
      gen.invokeStatic(CLASS_TYPE, forNameMethod);
View Full Code Here

        {
        restArgs = restArgs.cons(args.nth(i));
        }
      MethodExpr.emitArgsAsArray(restArgs, fn, gen);
      }
    gen.invokeInterface(IFN_TYPE, new Method("invoke", OBJECT_TYPE, ARG_TYPES[Math.min(MAX_POSITIONAL_ARITY,
                                                                                       args.count())]));
    if(context == C.STATEMENT)
      gen.pop();
  }
View Full Code Here

      {
      LocalBinding lb = (LocalBinding) s.first();
      cv.visitField(ACC_PUBLIC + ACC_FINAL, lb.name, OBJECT_TYPE.getDescriptor(), null, null);
      }
    //ctor that takes closed-overs and inits base + fields
    Method m = new Method("<init>", Type.VOID_TYPE, ARG_TYPES[closes.count()]);
    GeneratorAdapter ctorgen = new GeneratorAdapter(ACC_PUBLIC,
                                                    m,
                                                    null,
                                                    null,
                                                    cv);
View Full Code Here

      for(ISeq s = RT.keys(closes); s != null; s = s.rest())
        {
        LocalBinding lb = (LocalBinding) s.first();
        fn.emitLocal(gen, lb);
        }
      gen.invokeConstructor(fntype, new Method("<init>", Type.VOID_TYPE, ARG_TYPES[closes.count()]));
      }
  }
View Full Code Here

        gen.checkCast(CHAR_TYPE);
        gen.invokeVirtual(CHAR_TYPE, charValueMethod);
        }
      else
        {
        Method m = intValueMethod;
        gen.checkCast(NUMBER_TYPE);
        if(paramType == int.class)
          m = intValueMethod;
        else if(paramType == float.class)
          m = floatValueMethod;
View Full Code Here

      if(context == C.RETURN)
        {
        FnMethod method = (FnMethod) METHOD.get();
        method.emitClearLocals(gen);
        }
      Method m = new Method(methodName, Type.getReturnType(method), Type.getArgumentTypes(method));
      if(method.getDeclaringClass().isInterface())
        gen.invokeInterface(type, m);
      else
        gen.invokeVirtual(type, m);
      }
View Full Code Here

TOP

Related Classes of clojure.asm.commons.Method

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.