2003/11/03 05:28:31
[org.ibex.core.git] / src / org / xwt / Trap.java
index f982ffa..ea2ea95 100644 (file)
@@ -23,7 +23,7 @@ public class Trap {
     static {
         try {
             cascadeHelper = JS.parse("cascadeHelper", 1, new StringReader(cascadeHelperText));
-            cascadeHelper = (JS.CompiledFunction)new JS.Thread(cascadeHelper).resume();
+            cascadeHelper = (JS.CompiledFunction)new JS.Context(cascadeHelper, null, null).resume(null);
         } catch (Exception e) {
             Log.log(Trap.class, e);
         }
@@ -114,14 +114,14 @@ public class Trap {
 
     // Write Traps //////////////////////////////////////////////////////////////////////
 
-    public void perform(Object val, JS.TailCall tail) {
-        if (f.getNumFormalArgs() == 0) cascade(val, tail);
-        else tail.set(cascadeHelper, new TrapArgs(this, val));
+    public Object perform(Object val) {
+        if (f.getNumFormalArgs() == 0) return cascade(val);
+        else return new JS.TailCall().set(cascadeHelper, new TrapArgs(this, val));
     }
     
-    public void cascade(Object val, JS.TailCall tail) {
-        if (next != null) next.perform(val, tail);
-        else trapee.put(name, val, tail, true);
+    public Object cascade(Object val) {
+        if (next != null) return next.perform(val);
+        else return trapee.put(name, val, true);
     }
 
     // Args ///////////////////////////////////////////////////////////////////////////
@@ -132,9 +132,9 @@ public class Trap {
         public TrapArgs(Trap t) { this.t = t; }
         public TrapArgs(Trap t, Object value) { this.t = t; addElement(value); }
         
-        public void put(Object key, Object val, JS.TailCall tail) {
-            if (key.equals("cascade")) { cascadeHappened = true; t.cascade(val, tail); }
-            else super.put(key, val, (JS.TailCall)tail);
+        public Object put(Object key, Object val) {
+            if (key.equals("cascade")) { cascadeHappened = true; return t.cascade(val); }
+            else return super.put(key, val);
         }
 
         public Object get(Object key) {