diff options
author | Rich Hickey <richhickey@gmail.com> | 2009-07-30 12:11:25 -0400 |
---|---|---|
committer | Rich Hickey <richhickey@gmail.com> | 2009-07-30 12:11:25 -0400 |
commit | 48f4803d942721e15a0b1b1c1a7610eba345a688 (patch) | |
tree | 92f65f7b6914acf451e02a09a3f7d41db5639c11 /src | |
parent | 0570b48c72eb566b4520d6a0b3478fe6d6c6f6f2 (diff) |
correct types for method params
Diffstat (limited to 'src')
-rw-r--r-- | src/jvm/clojure/lang/Compiler.java | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/src/jvm/clojure/lang/Compiler.java b/src/jvm/clojure/lang/Compiler.java index e1a61465..798316a7 100644 --- a/src/jvm/clojure/lang/Compiler.java +++ b/src/jvm/clojure/lang/Compiler.java @@ -5007,7 +5007,7 @@ public static class NewInstanceMethod extends ObjMethod{ } } - public void emit(ObjExpr fn, ClassVisitor cv){ + public void emit(ObjExpr obj, ClassVisitor cv){ Method m = new Method(getMethodName(), getReturnType(), getArgTypes()); GeneratorAdapter gen = new GeneratorAdapter(ACC_PUBLIC, @@ -5022,7 +5022,7 @@ public static class NewInstanceMethod extends ObjMethod{ try { Var.pushThreadBindings(RT.map(LOOP_LABEL, loopLabel, METHOD, this)); - body.emit(C.RETURN, fn, gen); + body.emit(C.RETURN, obj, gen); if(retClass == void.class) { gen.pop(); @@ -5031,11 +5031,11 @@ public static class NewInstanceMethod extends ObjMethod{ gen.unbox(retType); Label end = gen.mark(); - gen.visitLocalVariable("this", "Ljava/lang/Object;", null, loopLabel, end, 0); + gen.visitLocalVariable("this", obj.objtype.getDescriptor(), null, loopLabel, end, 0); for(ISeq lbs = argLocals.seq(); lbs != null; lbs = lbs.next()) { LocalBinding lb = (LocalBinding) lbs.first(); - gen.visitLocalVariable(lb.name, "Ljava/lang/Object;", null, loopLabel, end, lb.idx); + gen.visitLocalVariable(lb.name, argTypes[lb.idx-1].getDescriptor(), null, loopLabel, end, lb.idx); } } finally @@ -5049,7 +5049,7 @@ public static class NewInstanceMethod extends ObjMethod{ } } -static public class MethodParamExpr implements Expr{ +static public class MethodParamExpr implements Expr, MaybePrimitiveExpr{ final Class c; public MethodParamExpr(Class c){ @@ -5071,5 +5071,9 @@ static public class MethodParamExpr implements Expr{ public Class getJavaClass() throws Exception{ return c; } + + public void emitUnboxed(C context, ObjExpr objx, GeneratorAdapter gen){ + throw new RuntimeException("Can't emit"); + } } } |