diff options
author | Rich Hickey <richhickey@gmail.com> | 2010-05-20 13:14:56 -0400 |
---|---|---|
committer | Rich Hickey <richhickey@gmail.com> | 2010-05-20 13:14:56 -0400 |
commit | 4651e60808bb459355a3a5d0d649c4697c672e28 (patch) | |
tree | 1ee14210937a3f379fcdfaa8edb03399b57c25db /src/jvm/clojure | |
parent | df8b048ab34751256e193e277d92f5a5bc1b53cd (diff) |
don't append numbers on top-level fn class names
Diffstat (limited to 'src/jvm/clojure')
-rw-r--r-- | src/jvm/clojure/lang/Compiler.java | 23 |
1 files changed, 14 insertions, 9 deletions
diff --git a/src/jvm/clojure/lang/Compiler.java b/src/jvm/clojure/lang/Compiler.java index 6aceb282..8ce076d4 100644 --- a/src/jvm/clojure/lang/Compiler.java +++ b/src/jvm/clojure/lang/Compiler.java @@ -3078,9 +3078,11 @@ static public class FnExpr extends ObjExpr{ (munge(currentNS().name.name) + "$"); if(RT.second(form) instanceof Symbol) name = ((Symbol) RT.second(form)).name; - String simpleName = ((name != null ? - munge(name).replace(".", "_DOT_") : "fn") - + "__" + RT.nextID()); + String simpleName = name != null ? + (munge(name).replace(".", "_DOT_") + + (enclosingMethod != null ? "__" + RT.nextID() : "")) + : ("fn" + + "__" + RT.nextID()); fn.name = basename + simpleName; fn.internalName = fn.name.replace('.', '/'); fn.objtype = Type.getObjectType(fn.internalName); @@ -3898,9 +3900,9 @@ static public class ObjExpr implements Expr{ if(compiledClass == null) try { - if(RT.booleanCast(COMPILE_FILES.deref())) - compiledClass = RT.classForName(name);//loader.defineClass(name, bytecode); - else +// if(RT.booleanCast(COMPILE_FILES.deref())) +// compiledClass = RT.classForName(name);//loader.defineClass(name, bytecode); +// else { loader = (DynamicClassLoader) LOADER.deref(); compiledClass = loader.defineClass(name, bytecode, src); @@ -5338,7 +5340,8 @@ public static Object eval(Object form, boolean freshLoader) throws Exception{ && !(RT.first(form) instanceof Symbol && ((Symbol) RT.first(form)).name.startsWith("def"))) { - ObjExpr fexpr = (ObjExpr) analyze(C.EXPRESSION, RT.list(FN, PersistentVector.EMPTY, form), "eval"); + ObjExpr fexpr = (ObjExpr) analyze(C.EXPRESSION, RT.list(FN, PersistentVector.EMPTY, form), + "eval" + RT.nextID()); IFn fn = (IFn) fexpr.eval(); return fn.invoke(); } @@ -5829,7 +5832,9 @@ static void compile1(GeneratorAdapter gen, ObjExpr objx, Object form) throws Exc if(RT.meta(form) != null && RT.meta(form).containsKey(RT.LINE_KEY)) line = (Integer) RT.meta(form).valAt(RT.LINE_KEY); Var.pushThreadBindings( - RT.map(LINE, line)); + RT.map(LINE, line + ,LOADER, RT.makeClassLoader() + )); try { form = macroexpand(form); @@ -5879,7 +5884,7 @@ public static Object compile(Reader rdr, String sourcePath, String sourceName) t CONSTANT_IDS, new IdentityHashMap(), KEYWORDS, PersistentHashMap.EMPTY, VARS, PersistentHashMap.EMPTY - ,LOADER, RT.makeClassLoader() + // ,LOADER, RT.makeClassLoader() )); try |