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


var n = 10000000;

function bar(set) { 
    var result = set(0);
    if (result !== void 0)
        throw "Error: bad value: " + result;
}

function foo(b) {
    var result = 0;
    var imUndefined;
    var baz;
    var set = function (x) { 
        result = x; 
        if (baz !== 50)
            throw "Error: bad value: " + baz;
        return imUndefined;
    }
    baz = 50;
    if (b) {
        OSRExit();
        if (b) {
            bar(set);
        }
        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;
}