diff options
author | Rich Hickey <richhickey@gmail.com> | 2010-10-18 07:39:02 -0400 |
---|---|---|
committer | Rich Hickey <richhickey@gmail.com> | 2010-10-18 07:39:02 -0400 |
commit | 2987bcdcb5c3151629ba111944a9c2f54db9ef55 (patch) | |
tree | 6553af2745c5bb15160851f46e34b934aa55c69d | |
parent | b9b1a094499b69a94bd47fc94c4f082d80239fa9 (diff) |
don't recache matched target class in protocall call site
-rw-r--r-- | src/jvm/clojure/lang/Compiler.java | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/src/jvm/clojure/lang/Compiler.java b/src/jvm/clojure/lang/Compiler.java index 5f8fdc7c..77dd68ed 100644 --- a/src/jvm/clojure/lang/Compiler.java +++ b/src/jvm/clojure/lang/Compiler.java @@ -3256,12 +3256,13 @@ static class InvokeExpr implements Expr{ gen.ifZCmp(GeneratorAdapter.NE, onLabel); } - gen.mark(callLabel); //target gen.dup(); //target, target gen.invokeStatic(UTIL_TYPE,Method.getMethod("Class classOf(Object)")); //target,class gen.loadThis(); gen.swap(); gen.putField(objx.objtype, objx.cachedClassName(siteIndex),CLASS_TYPE); //target + + gen.mark(callLabel); //target objx.emitVar(gen, v); gen.invokeVirtual(VAR_TYPE, Method.getMethod("Object getRawRoot()")); //target, proto-fn gen.swap(); |