- if (!(o instanceof JSCallable)) throw new JS.Exn("can't call " + o + " @ " + cx.pc + "\n" + cx.f.dump());
- JSCallable c = ((JSCallable)o);
- switch(numArgs) {
- case 0: ret = c.call0(method); break;
- case 1: ret = c.call1(method, cx.stack.pop()); break;
- case 2: { Object first = cx.stack.pop(); ret = c.call2(method, cx.stack.pop(), first); break; }
- default: {
- arguments = new JSArray();
- for(int j=numArgs - 1; j >= 0; j--) arguments.setElementAt(cx.stack.pop(), j);
- ret = c.call(method, arguments);
- if (cx.pausecount > initialPauseCount) return null; // we were paused
- break;
+ } else if (object instanceof JSCallable) {
+ JSCallable c = (JSCallable)object;
+ switch(numArgs) {
+ case 0: ret = c.call0(method); break;
+ case 1: ret = c.call1(method, cx.stack.pop()); break;
+ case 2: {
+ Object first = cx.stack.pop();
+ Object second = cx.stack.pop();
+ ret = c.call2(method, second, first);
+ break;
+ }
+ default: {
+ arguments = new JSArray();
+ for(int j=numArgs - 1; j >= 0; j--) arguments.setElementAt(cx.stack.pop(), j);
+ ret = c.call(method, arguments);
+ break;
+ }