var evalInFrame = (function evalInFrame(global) {
    var dbgGlobal = newGlobal({newCompartment: true});
    var dbg = new dbgGlobal.Debugger();
    return function evalInFrame(upCount, code) {
	dbg.addDebuggee(global);
	var frame = dbg.getNewestFrame().older;
	for (var i = 0; i < upCount; i++)
	    frame = frame.older;
	var completion = frame.eval(code);
	if (completion.throw)
	    throw 1;
    };
})(this);
function f() {
    for (var i = 0; i < 10; - i)
	g();
}
function h() {
    evalInFrame(0, "a.push(1)");
    evalInFrame(1, "a.push(2)");
}
function g() {
    h();
}
try {
    f();
} catch(e) {}
var a = [];
for (var i = 0; i < 3; i++)
    g();
assertEq(a.length, 6);
