summaryrefslogtreecommitdiffstats
path: root/js/src/jit-test/tests/debug/Frame-onPop-dead-frame.js
blob: 52c6f2ab792a463bebd92860aa225d9672443bdc (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
// Don't crash trying to fire a dead frame's onPop handler.

var g = newGlobal({newCompartment: true});
g.eval('function f() { debugger; }');

var log = '';

// Create two Debuggers debugging the same global `g`. Both will put onPop
// handlers on the same frame.
var dbg1 = Debugger(g);
dbg1.onDebuggerStatement = frame1 => {
  frame1.onPop = completion => {
    log += 'A';
    dbg2.removeDebuggee(g); // kills frame2, so frame2.onPop should not fire
    log += 'B';
  };
};

var dbg2 = Debugger(g);
dbg2.onDebuggerStatement = frame2 => {
  frame2.onPop = completion => {
    log += 'C';
  };
};

g.f();

assertEq(log, 'AB');