tor-browser

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

gc-10.js (601B)


      1 // Debugger.Frame objects should not be GC'd when doing so would have observable
      2 // effects.
      3 
      4 var g = newGlobal({ newCompartment: true });
      5 
      6 var log = '';
      7 var saved;
      8 
      9 new Debugger(g).onDebuggerStatement = function (frame) {
     10 
     11  // Having a live onDebuggerStatement hook will (correctly) cause a Debugger to
     12  // be retained, even if it is otherwise unreachable.
     13  this.onDebuggerStatement = undefined;
     14 
     15  // Give this Debugger.Frame an observable effect. It should not be GC'd.
     16  frame.onPop = function () {
     17    log += 'p';
     18  }
     19 }
     20 
     21 g.parent = this;
     22 
     23 g.eval(`
     24  debugger;
     25  gc();
     26 `);
     27 
     28 assertEq(log, 'p');