tor-browser

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

Frame-this-07.js (698B)


      1 // Frame.this can be marked as optimized-out in some cases. Here we call an
      2 // arrow function but its enclosing function is no longer live, so it's
      3 // impossible to recover its missing 'this' binding.
      4 var g = newGlobal({newCompartment: true});
      5 g.eval("x = 4");
      6 g.eval("var foo = function() { return () => 1; }; var arrow = foo.call(3);");
      7 var dbg = new Debugger(g);
      8 var log = "";
      9 dbg.onEnterFrame = function (frame) {
     10    if (frame.type === "eval")
     11 return;
     12    assertEq(frame.type, "call");
     13    assertEq(frame.this.optimizedOut, true);
     14    frame.eval("try { print(this.x); } catch(e) { exc = e; }");
     15    assertEq(typeof g.exc, "object");
     16    log += "d";
     17 };
     18 g.eval("arrow();");
     19 assertEq(log, "d");