summaryrefslogtreecommitdiffstats
path: root/js/src/jit-test/tests/debug/Frame-identity-04.js
blob: 7aea809b0eb3a95fa8720b02ee21a3c00896eed7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
// Test that on-stack Debugger.Frames are not GC'd even if they are only reachable
// from the js::Debugger::frames table.

var g = newGlobal();
g.eval("function f(n) { if (n) f(n - 1); debugger; }");
var dbg = new Debugger(g);
var hits = 0;
dbg.onDebuggerStatement = function (frame) {
    if (hits === 0) {
        for (; frame; frame = frame.older)
            frame.seen = true;
    } else {
        for (; frame; frame = frame.older)
            assertEq(frame.seen, true);
    }
    gc();
    hits++;
};
g.f(20);
assertEq(hits, 21);