Thu, 22 Jan 2015 13:21:57 +0100
Incorporate requested changes from Mozilla in review:
https://bugzilla.mozilla.org/show_bug.cgi?id=1123480#c6
michael@0 | 1 | // reentering the debugger several times via onDebuggerStatement and apply/call on a single stack |
michael@0 | 2 | |
michael@0 | 3 | var g = newGlobal(); |
michael@0 | 4 | var dbg = Debugger(g); |
michael@0 | 5 | |
michael@0 | 6 | function test(usingApply) { |
michael@0 | 7 | dbg.onDebuggerStatement = function (frame) { |
michael@0 | 8 | var n = frame.arguments[0]; |
michael@0 | 9 | if (n > 1) { |
michael@0 | 10 | var result = usingApply ? frame.callee.apply(null, [n - 1]) |
michael@0 | 11 | : frame.callee.call(null, n - 1); |
michael@0 | 12 | result.return *= n; |
michael@0 | 13 | return result; |
michael@0 | 14 | } |
michael@0 | 15 | }; |
michael@0 | 16 | g.eval("function fac(n) { debugger; return 1; }"); |
michael@0 | 17 | assertEq(g.fac(5), 5 * 4 * 3 * 2 * 1); |
michael@0 | 18 | } |
michael@0 | 19 | |
michael@0 | 20 | test(true); |
michael@0 | 21 | test(false); |