X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=src%2Forg%2Fxwt%2FTrap.java;fp=src%2Forg%2Fxwt%2FTrap.java;h=ea2ea9544fbcf31e73d8f33ddf213fa9e6e60b46;hb=99ca130d23feab443f062b8389c2c12426ef7575;hp=f982ffa195664d06bfca49e4cdd630d4a345110b;hpb=b205a30ca1e66d49676d807969dd73da999c26f0;p=org.ibex.core.git diff --git a/src/org/xwt/Trap.java b/src/org/xwt/Trap.java index f982ffa..ea2ea95 100644 --- a/src/org/xwt/Trap.java +++ b/src/org/xwt/Trap.java @@ -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) {