|
1 // A Debugger with live breakpoints is live. |
|
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 |
|
9 var N = 4; |
|
10 var hits = 0; |
|
11 for (var i = 0; i < N; i++) { |
|
12 var dbg = Debugger(g); |
|
13 dbg.onDebuggerStatement = function (frame) { |
|
14 var handler = {hit: function () { hits++; }}; |
|
15 var s = frame.eval("f").return.script; |
|
16 var offs = s.getLineOffsets(g.line0 + 2); |
|
17 for (var j = 0; j < offs.length; j++) |
|
18 s.setBreakpoint(offs[j], handler); |
|
19 }; |
|
20 g.eval('debugger;'); |
|
21 dbg.onDebuggerStatement = undefined; |
|
22 dbg = null; |
|
23 } |
|
24 |
|
25 gc(); |
|
26 |
|
27 assertEq(g.f(), 2); |
|
28 assertEq(hits, N); |