2003/11/13 09:15:12
[org.ibex.core.git] / src / org / xwt / js / JSContext.java
index 4eaf9b2..625c834 100644 (file)
@@ -23,23 +23,26 @@ public class JSContext {
      *  eval()
      */
     int pausecount = 0;
+    boolean pauseable;
 
-    JSFunction f = null;          ///< the currently-executing JSFunction
-    JSScope scope = null;
+    JSFunction f;                 ///< the currently-executing JSFunction
+    JSScope scope;
     Vec stack = new Vec();        ///< the object stack
     int pc = 0;                   ///< the program counter
-    boolean pauseable;
 
-    public static void invokePauseable(JSFunction function) { new JSContext(f, true).invoke(new JSArray()); }
+    public static void invokePauseable(JSFunction function) { new JSContext(function, true).invoke(new JSArray()); }
 
     JSContext(JSFunction f, boolean pauseable) {
         this.pauseable = pauseable;
         this.f = f;
-        scope = new JSScope(function.parentJSScope);
+        scope = new JSScope(f.parentJSScope);
     }
 
     void invoke(JSArray args) {
-        stack.push(new JSFunction.CallMarker(cx));
+        JSFunction tf = f;
+        f = null;
+        stack.push(new JSFunction.CallMarker(this));
+        f = tf;
         stack.push(args);
         resume();
     }
@@ -50,7 +53,6 @@ public class JSContext {
         if (!pauseable) return null;
         pausecount++;
         return new Callback() { public Object call(Object o) {
-            paused = false;
             stack.push(o);
             resume();
             return null;