breakpoint-gc-01.js (694B)
1 // Handlers for breakpoints in an eval script are live as long as the script is on the stack. 2 3 var g = newGlobal({newCompartment: true}); 4 var dbg = Debugger(g); 5 var log = ''; 6 dbg.onDebuggerStatement = function (frame) { 7 function handler(i) { 8 return {hit: function () { log += '' + i; }}; 9 } 10 11 var s = frame.script; 12 var offs = s.getLineOffsets(g.line0 + 2); 13 for (var i = 0; i < 7; i++) { 14 var h = handler(i); 15 for (var j = 0; j < offs.length; j++) 16 s.setBreakpoint(offs[j], h); 17 } 18 gc(); 19 }; 20 21 22 g.eval("var line0 = Error().lineNumber;\n" + 23 "debugger;\n" + // line0 + 1 24 "x = 1;\n"); // line0 + 2 25 assertEq(log, '0123456');