Object-apply-03.js (624B)
1 // reentering the debugger several times via onDebuggerStatement and apply/call on a single stack 2 3 var g = newGlobal({newCompartment: true}); 4 var dbg = Debugger(g); 5 6 function test(usingApply) { 7 dbg.onDebuggerStatement = function (frame) { 8 var n = frame.arguments[0]; 9 if (n > 1) { 10 var result = usingApply ? frame.callee.apply(null, [n - 1]) 11 : frame.callee.call(null, n - 1); 12 result.return *= n; 13 return result; 14 } 15 }; 16 g.eval("function fac(n) { debugger; return 1; }"); 17 assertEq(g.fac(5), 5 * 4 * 3 * 2 * 1); 18 } 19 20 test(true); 21 test(false);