tor-browser

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

Environment-optimizedOut-01.js (1194B)


      1 // Optimized out scopes should be considered optimizedOut.
      2 
      3 var g = newGlobal({newCompartment: true});
      4 var dbg = new Debugger;
      5 dbg.addDebuggee(g);
      6 
      7 g.eval("" + function f() {
      8  var x = 42;
      9  {
     10    let y = 43;
     11    (function () { })();
     12  }
     13 });
     14 
     15 dbg.onEnterFrame = function (f) {
     16  if (f.callee && (f.callee.name === undefined)) {
     17    blockenv = f.environment.parent;
     18    assertEq(blockenv.optimizedOut, true);
     19    assertEq(blockenv.inspectable, true);
     20    assertEq(blockenv.type, "declarative");
     21    assertEq(blockenv.calleeScript, null);
     22    assertEq(blockenv.names().indexOf("y") !== -1, true);
     23 
     24    funenv = blockenv.parent;
     25    assertEq(funenv.optimizedOut, true);
     26    assertEq(funenv.inspectable, true);
     27    assertEq(funenv.type, "declarative");
     28    assertEq(funenv.calleeScript, f.older.script);
     29    assertEq(funenv.names().indexOf("x") !== -1, true);
     30 
     31    globalenv = funenv.parent.parent;
     32    assertEq(globalenv.optimizedOut, false);
     33    assertEq(globalenv.inspectable, true);
     34    assertEq(globalenv.type, "object");
     35    assertEq(globalenv.calleeScript, null);
     36 
     37    dbg.removeDebuggee(g);
     38 
     39    assertEq(blockenv.inspectable, false);
     40    assertEq(funenv.inspectable, false);
     41  }
     42 }
     43 
     44 g.f();