Frame-identity-04.js (561B)
1 // Test that on-stack Debugger.Frames are not GC'd even if they are only reachable 2 // from the js::Debugger::frames table. 3 4 var g = newGlobal({newCompartment: true}); 5 g.eval("function f(n) { if (n) f(n - 1); debugger; }"); 6 var dbg = new Debugger(g); 7 var hits = 0; 8 dbg.onDebuggerStatement = function (frame) { 9 if (hits === 0) { 10 for (; frame; frame = frame.older) 11 frame.seen = true; 12 } else { 13 for (; frame; frame = frame.older) 14 assertEq(frame.seen, true); 15 } 16 gc(); 17 hits++; 18 }; 19 g.f(20); 20 assertEq(hits, 21);