summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/jvm/clojure/lang/BytecodeCompiler.java49
1 files changed, 30 insertions, 19 deletions
diff --git a/src/jvm/clojure/lang/BytecodeCompiler.java b/src/jvm/clojure/lang/BytecodeCompiler.java
index 600d5902..d4c63fe0 100644
--- a/src/jvm/clojure/lang/BytecodeCompiler.java
+++ b/src/jvm/clojure/lang/BytecodeCompiler.java
@@ -1536,28 +1536,39 @@ public static void main(String[] args){
LineNumberingPushbackReader rdr = new LineNumberingPushbackReader(new InputStreamReader(System.in));
OutputStreamWriter w = new OutputStreamWriter(System.out);
Object EOF = new Object();
- for(; ;)
+ try
{
- try
- {
- Var.pushThreadBindings(
- RT.map(LOADER, new DynamicClassLoader()));
- Object r = LispReader.read(rdr, false, EOF, false);
- if(r == EOF)
- break;
- Object ret = eval(r);
- RT.print(ret, w);
- w.write('\n');
- w.flush();
- }
- catch(Exception e)
- {
- e.printStackTrace();
- }
- finally
+ Var.pushThreadBindings(
+ RT.map(RT.USES, RT.USES.get(),
+ RT.IMPORTS, RT.IMPORTS.get()));
+
+ for(; ;)
{
- Var.popThreadBindings();
+ try
+ {
+ Var.pushThreadBindings(
+ RT.map(LOADER, new DynamicClassLoader()));
+ Object r = LispReader.read(rdr, false, EOF, false);
+ if(r == EOF)
+ break;
+ Object ret = eval(r);
+ RT.print(ret, w);
+ w.write('\n');
+ w.flush();
+ }
+ catch(Exception e)
+ {
+ e.printStackTrace();
+ }
+ finally
+ {
+ Var.popThreadBindings();
+ }
}
}
+ finally
+ {
+ Var.popThreadBindings();
+ }
}
}