tor-browser

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

onNewScript-eval-cache-01.js (689B)


      1 // onNewScript handler sees every Debugger.Script object that can appear on the
      2 // stack, even with the eval cache. See bug 674164.
      3 
      4 var g = newGlobal({newCompartment: true});
      5 var dbg = Debugger(g);
      6 var seen = new WeakMap;
      7 dbg.onNewScript = function (script) {
      8  seen.set(script, 1);
      9  script.getChildScripts().forEach(dbg.onNewScript);
     10 };
     11 var hits = 0;
     12 dbg.onDebuggerStatement = function (frame) {
     13  for(; frame; frame = frame.older) {
     14    assertEq(seen.has(frame.script), true);
     15  }
     16  hits++;
     17 };
     18 
     19 g.eval("function calc(s, x) { return eval(s); }");
     20 for (var i = 0; i < 4; i++) {
     21  assertEq(g.calc("debugger; 2 * x + 1;", i), 2 * i + 1);
     22  if (i == 1) {
     23    gc();
     24  }
     25 }
     26 assertEq(hits, 4);