load(libdir + "evalInFrame.js");

var a = new Array();

function i(save) {
    var x = 9;
    evalInFrame(0, "a.push(x)", save);
    evalInFrame(1, "a.push(z)", save);
    evalInFrame(2, "a.push(z)", save);
    evalInFrame(3, "a.push(y)", save);
    evalInFrame(4, "a.push(x)", save);
}

function h() {
    var z = 5;
    evalInFrame(0, "a.push(z)");
    evalInFrame(1, "a.push(y)");
    evalInFrame(2, "a.push(x)");
    evalInFrame(0, "i(false)");
    evalInFrame(0, "a.push(z)", true);
    evalInFrame(1, "a.push(y)", true);
    evalInFrame(2, "a.push(x)", true);
    evalInFrame(0, "i(true)", true);
}

function g() {
    var y = 4;
    h();
}

function f() {
    var x = 3;
    g();
}

f();
assertEq(a+'', [5, 4, 3, 9, 5, 5, 4, 3, 5, 4, 3, 9, 5, 5, 4, 3]+'');