* 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();
}
if (!pauseable) return null;
pausecount++;
return new Callback() { public Object call(Object o) {
- paused = false;
stack.push(o);
resume();
return null;