tor-browser

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

Frame-eval-23.js (925B)


      1 // Debugger.Frame preserves Ion frame mutations after removing debuggee.
      2 
      3 load(libdir + "jitopts.js");
      4 
      5 if (!jitTogglesMatch(Opts_Ion2NoOffthreadCompilation))
      6  quit();
      7 
      8 withJitOptions(Opts_Ion2NoOffthreadCompilation, function () {
      9  var g = newGlobal({newCompartment: true});
     10  var dbg = new Debugger;
     11 
     12  g.toggle = function toggle(x, d) {
     13    if (d) {
     14      dbg.addDebuggee(g);
     15      var frame = dbg.getNewestFrame().older;
     16      assertEq(frame.callee.name, "f");
     17      assertEq(frame.environment.getVariable("x"), x);
     18      assertEq(frame.implementation, "ion");
     19      frame.environment.setVariable("x", "not 42");
     20      dbg.removeDebuggee(g);
     21    }
     22  };
     23 
     24  g.eval("" + function f(x, d) {
     25    g(x, d);
     26    if (d)
     27      assertEq(x, "not 42");
     28  });
     29 
     30  g.eval("" + function g(x, d) { toggle(x, d); });
     31 
     32  g.eval("(" + function test() {
     33    for (var i = 0; i < 5; i++)
     34      f(42, false);
     35    f(42, true);
     36  } + ")();");
     37 });