Frame-eval-08.js (693B)
1 // The arguments can escape from a function via a debugging hook. 2 3 var g = newGlobal({newCompartment: true}); 4 var dbg = new Debugger(g); 5 6 // capture arguments object and test function 7 var args, testfn; 8 dbg.onDebuggerStatement = function (frame) { 9 args = frame.eval("arguments").return; 10 testfn = frame.eval("test").return; 11 }; 12 g.eval("function f() { debugger; }"); 13 g.eval("var test = " + function test(args) { 14 assertEq(args.length, 3); 15 assertEq(args[0], this); 16 assertEq(args[1], f); 17 assertEq(args[2].toString(), "[object Object]"); 18 return 42; 19 } + ";"); 20 g.eval("f(this, f, {});"); 21 22 var cv = testfn.apply(null, [args]); 23 assertEq(cv.return, 42);