tor-browser

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

gc-02.js (691B)


      1 // Dispatching an event to a debugger must keep enough of it gc-alive to avoid
      2 // crashing.
      3 
      4 var g = newGlobal({newCompartment: true});
      5 var hits;
      6 
      7 function addDebug() {
      8    // The loop is here to defeat the conservative GC. :-\
      9    for (var i = 0; i < 4; i++) {
     10        var dbg = new Debugger(g);
     11        dbg.onDebuggerStatement = function (stack) {
     12            hits++;
     13            this.enabled = false;
     14            this.onDebuggerStatement = undefined;
     15            gc();
     16        };
     17        if (i > 0) {
     18            dbg.enabled = false;
     19            dbg.onDebuggerStatement = undefined;
     20            dbg = null;
     21        }
     22    }
     23 }
     24 
     25 addDebug();
     26 hits = 0;
     27 g.eval("debugger;");
     28 assertEq(hits, 1);