|
1 // Disabled debuggers keep breakpoint handlers alive. |
|
2 |
|
3 var g = newGlobal(); |
|
4 g.eval("var line0 = Error().lineNumber;\n" + |
|
5 "function f() {\n" + // line0 + 1 |
|
6 " return 2;\n" + // line0 + 2 |
|
7 "}\n"); |
|
8 var N = 4; |
|
9 var hits = 0; |
|
10 for (var i = 0; i < N; i++) { |
|
11 var dbg = Debugger(g); |
|
12 dbg.onDebuggerStatement = function (frame) { |
|
13 var handler = {hit: function () { hits++; }}; |
|
14 var s = frame.eval("f").return.script; |
|
15 var offs = s.getLineOffsets(g.line0 + 2); |
|
16 for (var j = 0; j < offs.length; j++) |
|
17 s.setBreakpoint(offs[j], handler); |
|
18 }; |
|
19 } |
|
20 g.eval('debugger;'); |
|
21 dbg.enabled = false; |
|
22 gc({}); |
|
23 dbg.enabled = true; |
|
24 assertEq(g.f(), 2); |
|
25 assertEq(hits, N); |