|
1 // reentering the debugger several times via onDebuggerStatement and apply/call on a single stack |
|
2 |
|
3 var g = newGlobal(); |
|
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); |