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);
}
// 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 ///////////////////////////////////////////////////////////////////////////
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) {