Source code

Revision control

Copy as Markdown

Other Tools

// If one Debugger's onPop handler causes another Debugger to create a
// Debugger.Frame instance referring to the same frame, that frame still
// gets marked as not live after all the onPop handlers have run.
var g = newGlobal({newCompartment: true});
var dbg1 = new Debugger(g);
var dbg2 = new Debugger(g);
var log;
var frame2;
dbg1.onEnterFrame = function handleEnter(frame) {
log += '(';
frame.onPop = function handlerPop1(c) {
log += ')';
frame2 = dbg2.getNewestFrame();
assertEq(frame2.onStack, true);
frame2.onPop = function handlePop2(c) {
assertEq("late frame's onPop handler ran",
"late frame's onPop handler should not run");
};
};
};
log = '';
assertEq(g.eval('40 + 2'), 42);
assertEq(log, '()');
assertEq(frame2.onStack, false);