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