activation-sink-default-value.js   [plain text]


var n = 10000000;

function bar(f) { f(10); }

function foo(b) {
    var result = 0;
    var imUndefined;
    var baz;
    var set = function (x) { result = x; return (imUndefined, baz); }
    baz = 40;
    if (b) {
        bar(set);
        if (result != 10)
            throw "Error: bad: " + result;
        if (baz !== 40)
            throw "Error: bad: " + baz;
        if (imUndefined !== void 0)
            throw "Error: bad value: " + imUndefined;
        return 0;
    }
    return result;
}

noInline(bar);
noInline(foo);

for (var i = 0; i < n; i++) {
    var result = foo(!(i % 100));
    if (result != 0)
        throw "Error: bad result: " + result;
}