tor-browser

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

gc-03.js (614B)


      1 // Storing a property on a Debugger.Object protects it from GC as long as the
      2 // referent is alive.
      3 
      4 var g = newGlobal({newCompartment: true});
      5 var N = g.N = 3;
      6 var dbg = Debugger(g);
      7 
      8 var i = 0;
      9 dbg.onDebuggerStatement = function (frame) {
     10    frame.arguments[0].id = i++;
     11 };
     12 g.eval("function f(x) { debugger; }");
     13 g.eval("var arr = [], j; for (j = 0; j < N; j++) arr[j] = {};");
     14 g.eval("for (j = 0; j < N; j++) f(arr[j]);");
     15 assertEq(i, N);
     16 
     17 gc(); gc();
     18 
     19 i = 0;
     20 dbg.onDebuggerStatement = function (frame) {
     21    assertEq(frame.arguments[0].id, i++)
     22 }
     23 g.eval("for (j = 0; j < N; j++) f(arr[j]);");
     24 assertEq(i, N);