tor-browser

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

envChain_frame-eval-relazify.js (1061B)


      1 // |jit-test| skip-if: isLcovEnabled()
      2 
      3 function func(doEval) {
      4  if (doEval) {
      5    const dbg = this.newGlobal({sameZoneAs: {}}).Debugger({});
      6    dbg.getNewestFrame().eval(`
      7  function reaction() {
      8    // Access global variable to walk through the environment chain.
      9    return Map;
     10  };
     11  Promise.resolve(1).then(reaction);
     12 `);
     13  }
     14 }
     15 
     16 assertEq(isLazyFunction(func), true);
     17 assertEq(isRelazifiableFunction(func), false);
     18 
     19 // Delazify here.
     20 func(false);
     21 
     22 // Delazified function should be marked relazifiable.
     23 assertEq(isLazyFunction(func), false);
     24 assertEq(isRelazifiableFunction(func), true);
     25 
     26 // Perform Frame.prototype.eval
     27 func(true);
     28 
     29 // Frame.prototype.eval should mark the enclosing script non-relazifiable.
     30 assertEq(isLazyFunction(func), false);
     31 assertEq(isRelazifiableFunction(func), false);
     32 
     33 // This shouldn't relazify `func`.
     34 relazifyFunctions();
     35 relazifyFunctions();
     36 
     37 assertEq(isLazyFunction(func), false);
     38 assertEq(isRelazifiableFunction(func), false);
     39 
     40 // Execute the inner function to make sure the enclosing script is not lazy.
     41 drainJobQueue();