breakpoint-gc-04.js (699B)
1 // Enabled debuggers keep breakpoint handlers alive. 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 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 gc({}); 22 assertEq(g.f(), 2); 23 assertEq(hits, N);