Source code

Revision control

Copy as Markdown

Other Tools

// Suspended generators keep their associated Debugger.Frames gc-alive.
var g = newGlobal({newCompartment: true});
g.eval("function* f() { debugger; yield 1; debugger; }");
var dbg = new Debugger(g);
var hits = 0;
dbg.onDebuggerStatement = function (frame) {
if (hits === 0)
frame.seen = true;
else
assertEq(frame.seen, true);
gc();
hits++;
};
var it = g.f();
gc();
assertEq(it.next().value, 1);
gc();
assertEq(it.next().done, true);
assertEq(hits, 2);