tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

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');