tor-browser

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

Script-gc-01.js (623B)


      1 // Debugger.Script instances with live referents stay alive.
      2 
      3 var N = 4;
      4 var g = newGlobal({newCompartment: true});
      5 var dbg = new Debugger(g);
      6 var i;
      7 dbg.onDebuggerStatement = function (frame) {
      8    assertEq(frame.script instanceof Debugger.Script, true);
      9    frame.script.id = i;
     10 };
     11 
     12 g.eval('var arr = [];')
     13 for (i = 0; i < N; i++)  // loop to defeat conservative GC
     14    g.eval("arr.push(function () { debugger }); arr[arr.length - 1]();");
     15 
     16 gc();
     17 
     18 var hits;
     19 dbg.onDebuggerStatement = function (frame) {
     20    hits++;
     21    assertEq(frame.script.id, i);
     22 };
     23 hits = 0;
     24 for (i = 0; i < N; i++)
     25    g.arr[i]();
     26 assertEq(hits, N);