5 public class Test extends JS {
6 static JS.UnpauseCallback up = null;
9 public static void main(String[] args) throws Exception {
10 if(args.length == 0) { System.err.println("Usage Test filename"); System.exit(1); }
11 JS f = JS.fromReader(args[0],1,new FileReader(args[0]));
12 System.out.println(((JSFunction)f).dump());
13 JSScope s = new JSScope(new JSScope.Global());
14 s.put(JS.S("sys"),new Test());
15 f = JS.cloneWithNewParentScope(f,s);
16 //JS ret = f.call(null,null,null,null,0);
17 Interpreter i = new Interpreter((JSFunction)f, true, new Interpreter.JSArgs(f));
20 JS.UnpauseCallback up = Test.up; Test.up = null;
21 if("throw".equals(action)) ret = up.unpause(new JSExn("this was thrown to a paused context"));
22 else if("bgget".equals(action)) ret = up.unpause(JS.S("I'm returning this from a get request"));
24 System.out.println("got a background put " + action);
28 System.out.println("Script returned: " + JS.toString(ret));
31 public JS get(JS key) throws JSExn {
32 if(!JS.isString(key)) return null;
33 if("print".equals(JS.toString(key))) return METHOD;
34 if("clone".equals(JS.toString(key))) return METHOD;
35 if("bgget".equals(JS.toString(key))) {
39 } catch(NotPauseableException e) {
40 throw new Error("should never happen");
44 return super.get(key);
47 public void put(JS key, JS val) throws JSExn {
48 if("bgput".equals(JS.toString(key))) {
49 action = JS.toString(val);
52 } catch(NotPauseableException e) {
53 throw new Error("should never happen");
57 if("exit".equals(JS.toString(key))) {
58 System.exit(JS.toInt(val));
64 public JS callMethod(JS method, JS a0, JS a1, JS a2, JS[] rest, int nargs) throws JSExn {
65 if(!JS.isString(method)) return null;
66 if("print".equals(JS.toString(method))) {
67 System.out.println(JS.debugToString(a0));
70 if("clone".equals(JS.toString(method))) return a0 == null ? null : a0.jsclone();