breakpoint-gc-02.js (753B)
1 // A Debugger with live breakpoints is live. 2 3 var g = newGlobal({newCompartment: true}); 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);