fix JSArgs bugs
authoradam <adam@megacz.com>
Mon, 17 Jan 2005 00:27:46 +0000 (00:27 +0000)
committeradam <adam@megacz.com>
Mon, 17 Jan 2005 00:27:46 +0000 (00:27 +0000)
darcs-hash:20050117002746-5007d-a935a54efd40e7399a045ec624fb7a1fd944d4ce.gz

src/org/ibex/js/Interpreter.java

index 77da0ab..21fffba 100644 (file)
@@ -371,8 +371,8 @@ class Interpreter implements ByteCodes, Tokens, Pausable {
 
                 if (object instanceof JSFunction) {
                     stack.push(new CallMarker(this));
-                    stack.push(jsargs);
                     f = (JSFunction)object;
+                    stack.push(new JSArgs(jsargs, f));
                     scope = f.parentScope;
                     pc = -1;
                     break;
@@ -610,7 +610,10 @@ class Interpreter implements ByteCodes, Tokens, Pausable {
         public JSArgs(JS[] args, JS callee) { this.args = args; this.callee = callee; }
         
         public JS get(JS key) throws JSExn {
-            if(JSU.isInt(key)) return args[JSU.toInt(key)];
+            if(JSU.isInt(key)) {
+                int i = JSU.toInt(key);
+                return i>=args.length ? null : args[i];
+            }
             //#switch(JSU.toString(key))
             case "callee": return callee;
             case "length": return JSU.N(args.length);