X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=src%2Forg%2Fibex%2Fjs%2FJSFunction.java;h=0bf580e42dae07564f9352f08411f5d0257bbd0f;hb=a6fb49b55117ea4cf330b412d2a2fff403fcd053;hp=681e03e938625aa1b93f2a43348a924dc1eedaba;hpb=a1e6b7e9307319c0195b0efbe5e5354c128be481;p=org.ibex.js.git diff --git a/src/org/ibex/js/JSFunction.java b/src/org/ibex/js/JSFunction.java index 681e03e..0bf580e 100644 --- a/src/org/ibex/js/JSFunction.java +++ b/src/org/ibex/js/JSFunction.java @@ -3,9 +3,10 @@ // You may not use this file except in compliance with the License. package org.ibex.js; +import org.ibex.util.*; /** A JavaScript function, compiled into bytecode */ -class JSFunction extends JS.Immutable implements ByteCodes, Tokens { +class JSFunction extends JS.Immutable implements ByteCodes, Tokens, Pausable { private static final JS[] emptyArgs = new JS[0]; // Fields and Accessors /////////////////////////////////////////////// @@ -25,7 +26,6 @@ class JSFunction extends JS.Immutable implements ByteCodes, Tokens { // Public ////////////////////////////////////////////////////////////////////////////// - // FIXME: what needs to be syncrhonized (if anything)? private Interpreter runner = null; public Object run(Object o) throws JSExn { if (runner == null) runner = new Interpreter(this, true, emptyArgs); @@ -50,7 +50,9 @@ class JSFunction extends JS.Immutable implements ByteCodes, Tokens { return ret; } - public JS call(JS[] args) throws JSExn { return (JS)new Interpreter(this, false, args).run(null); } + public JS call(JS method, JS[] args) throws JSExn { + if (method != null) return super.call(method, args); + return (JS)new Interpreter(this, false, args).run(null); } JSScope getParentScope() { return parentScope; }