summaryrefslogtreecommitdiffstats
path: root/js/src/jit-test/tests/debug/Environment-optimizedOut-01.js
blob: 964148af9ad06f2243778505728664bc4d99fafa (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
42
43
44
// Optimized out scopes should be considered optimizedOut.

var g = newGlobal({newCompartment: true});
var dbg = new Debugger;
dbg.addDebuggee(g);

g.eval("" + function f() {
  var x = 42;
  {
    let y = 43;
    (function () { })();
  }
});

dbg.onEnterFrame = function (f) {
  if (f.callee && (f.callee.name === undefined)) {
    blockenv = f.environment.parent;
    assertEq(blockenv.optimizedOut, true);
    assertEq(blockenv.inspectable, true);
    assertEq(blockenv.type, "declarative");
    assertEq(blockenv.calleeScript, null);
    assertEq(blockenv.names().indexOf("y") !== -1, true);

    funenv = blockenv.parent;
    assertEq(funenv.optimizedOut, true);
    assertEq(funenv.inspectable, true);
    assertEq(funenv.type, "declarative");
    assertEq(funenv.calleeScript, f.older.script);
    assertEq(funenv.names().indexOf("x") !== -1, true);

    globalenv = funenv.parent.parent;
    assertEq(globalenv.optimizedOut, false);
    assertEq(globalenv.inspectable, true);
    assertEq(globalenv.type, "object");
    assertEq(globalenv.calleeScript, null);

    dbg.removeDebuggee(g);

    assertEq(blockenv.inspectable, false);
    assertEq(funenv.inspectable, false);
  }
}

g.f();