//@ skip if $model == "Apple Watch Series 3" # added by mark-jsc-stress-test.py
function foo() {
    return a + b;
}

noInline(foo);

var a;
var b;

function setA(p, value) {
    if (p)
        a = value;
}

function setB(p, value) {
    if (p)
        b = value;
}

noInline(setA);
noInline(setB);

setA(true, 4);
setB(true, 5);

for (var i = 0; i < 1000; ++i) {
    setA(false, 42);
    setB(false, 42);
}

function check(actual, expected) {
    if (actual == expected)
        return;
    throw "Error: expected " + expected + " but got " + actual;
}

for (var i = 0; i < 100; ++i)
    check(foo(), 9);

setA(true, 6);

for (var i = 0; i < 1000; ++i)
    check(foo(), 11);

setB(true, 7);

for (var i = 0; i < 10000; ++i)
    check(foo(), 13);
