diff options
author | Rich Hickey <richhickey@gmail.com> | 2008-01-04 13:51:10 +0000 |
---|---|---|
committer | Rich Hickey <richhickey@gmail.com> | 2008-01-04 13:51:10 +0000 |
commit | 5fe4b82a893cc8b6479dbd1924d387dc9be527d7 (patch) | |
tree | a886e54a29b554b81a7d49cd618e7c5d0d583adc | |
parent | 84c68138fb9573f7248586a7b85964538646f684 (diff) |
eval creates loader if needed
-rw-r--r-- | src/jvm/clojure/lang/Compiler.java | 18 |
1 files changed, 16 insertions, 2 deletions
diff --git a/src/jvm/clojure/lang/Compiler.java b/src/jvm/clojure/lang/Compiler.java index eb7bcca2..f046e116 100644 --- a/src/jvm/clojure/lang/Compiler.java +++ b/src/jvm/clojure/lang/Compiler.java @@ -2947,8 +2947,22 @@ private static Expr analyzeSeq(C context, ISeq form, String name) throws Excepti } public static Object eval(Object form) throws Exception{ - Expr expr = analyze(C.EVAL, form); - return expr.eval(); + boolean createdLoader = false; + try + { + if(!LOADER.isBound()) + { + Var.pushThreadBindings(RT.map(LOADER, new DynamicClassLoader())); + createdLoader = true; + } + Expr expr = analyze(C.EVAL, form); + return expr.eval(); + } + finally + { + if(createdLoader) + Var.popThreadBindings(); + } } private static KeywordExpr registerKeyword(Keyword keyword){ |