summaryrefslogtreecommitdiffstats
path: root/js/src/jit-test/tests/debug/envChain_frame-eval-relazify.js
blob: bcdc108b9a541dae2ddfe0fa30c984cee9b18be9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
// |jit-test| skip-if: isLcovEnabled()

function func(doEval) {
  if (doEval) {
    const dbg = this.newGlobal({sameZoneAs: {}}).Debugger({});
    dbg.getNewestFrame().eval(`
  function reaction() {
    // Access global variable to walk through the environment chain.
    return Map;
  };
  Promise.resolve(1).then(reaction);
`);
  }
}

assertEq(isLazyFunction(func), true);
assertEq(isRelazifiableFunction(func), false);

// Delazify here.
func(false);

// Delazified function should be marked relazifiable.
assertEq(isLazyFunction(func), false);
assertEq(isRelazifiableFunction(func), true);

// Perform Frame.prototype.eval
func(true);

// Frame.prototype.eval should mark the enclosing script non-relazifiable.
assertEq(isLazyFunction(func), false);
assertEq(isRelazifiableFunction(func), false);

// This shouldn't relazify `func`.
relazifyFunctions();
relazifyFunctions();

assertEq(isLazyFunction(func), false);
assertEq(isRelazifiableFunction(func), false);

// Execute the inner function to make sure the enclosing script is not lazy.
drainJobQueue();