From: adam Date: Tue, 19 Oct 2004 07:48:56 +0000 (+0000) Subject: hacks to cope with org.ibex.xt X-Git-Url: http://git.megacz.com/?p=org.ibex.js.git;a=commitdiff_plain;h=7c2cac7d060d75681c2043a05a4cbd7a1b415623 hacks to cope with org.ibex.xt darcs-hash:20041019074856-5007d-be85185c003a4cdbe467806139aa560f0929bd83.gz --- diff --git a/src/org/ibex/js/JS.java b/src/org/ibex/js/JS.java index 7cd1fc7..9aa9bd4 100644 --- a/src/org/ibex/js/JS.java +++ b/src/org/ibex/js/JS.java @@ -8,6 +8,7 @@ import java.util.*; /** The minimum set of functionality required for objects which are manipulated by JavaScript */ public class JS /*extends org.ibex.util.BalancedTree*/ implements Serializable { + public static final long serialVersionUID = 572634985343962922L; public static boolean checkAssertions = false; public static final Object METHOD = new Object(); @@ -187,6 +188,12 @@ public class JS /*extends org.ibex.util.BalancedTree*/ implements Serializable { return ((JSFunction)j)._cloneWithNewParentScope(s); } + // HACK + public static Vec getFormalArgs(JS j) { return ((JSFunction)j).formalArgs; } + + // HACK + public static JSScope getParentScope(JS j) { return ((JSFunction)j).parentScope; } + public static Object eval(JS j) throws JSExn { Interpreter cx = new Interpreter((JSFunction)j, false, new JSArray(), false); return cx.resume(); diff --git a/src/org/ibex/js/JSFunction.java b/src/org/ibex/js/JSFunction.java index 4bf41e4..9dfc5db 100644 --- a/src/org/ibex/js/JSFunction.java +++ b/src/org/ibex/js/JSFunction.java @@ -21,7 +21,7 @@ class JSFunction extends JS implements ByteCodes, Tokens, Task { int size = 0; ///< the number of instruction/argument pairs JSScope parentScope; ///< the default scope to use as a parent scope when executing this - + Vec formalArgs = new Vec(); // Public ////////////////////////////////////////////////////////////////////////////// @@ -55,6 +55,7 @@ class JSFunction extends JS implements ByteCodes, Tokens, Task { ret.arg = this.arg; ret.line = this.line; ret.size = this.size; + ret.formalArgs = this.formalArgs; ret.numFormalArgs = this.numFormalArgs; return ret; } diff --git a/src/org/ibex/js/Parser.java b/src/org/ibex/js/Parser.java index 51b23b8..9f62439 100644 --- a/src/org/ibex/js/Parser.java +++ b/src/org/ibex/js/Parser.java @@ -281,7 +281,7 @@ class Parser extends Lexer implements ByteCodes { if (peekToken() == NAME) { consume(NAME); // a named argument String varName = string; - + b2.formalArgs.push(varName); b2.add(parserLine, DUP); // dup the args array b2.add(parserLine, GET, JS.N(numArgs - 1)); // retrieve it from the arguments array b2.add(parserLine, TOPSCOPE);