summaryrefslogtreecommitdiff
path: root/src/jvm/clojure
diff options
context:
space:
mode:
authorRich Hickey <richhickey@gmail.com>2010-05-20 13:14:56 -0400
committerRich Hickey <richhickey@gmail.com>2010-05-20 13:14:56 -0400
commit4651e60808bb459355a3a5d0d649c4697c672e28 (patch)
tree1ee14210937a3f379fcdfaa8edb03399b57c25db /src/jvm/clojure
parentdf8b048ab34751256e193e277d92f5a5bc1b53cd (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.java23
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