62 lines
983 B
JavaScript
62 lines
983 B
JavaScript
//@ skip if $model == "Apple Watch Series 3" # added by mark-jsc-stress-test.py
|
|
function foo(o, p, q) {
|
|
var x = o[0];
|
|
var y;
|
|
if (p) {
|
|
x();
|
|
if (q) {
|
|
x();
|
|
y = 42;
|
|
} else {
|
|
x();
|
|
y = 11;
|
|
}
|
|
} else
|
|
y = 23;
|
|
o[1]++;
|
|
return x;
|
|
}
|
|
|
|
function bar(o, p, q) {
|
|
var x = o[0];
|
|
var y;
|
|
if (p)
|
|
y = 23;
|
|
else {
|
|
x();
|
|
if (q) {
|
|
x();
|
|
y = 42;
|
|
} else {
|
|
x();
|
|
y = 11;
|
|
}
|
|
}
|
|
o[1]++;
|
|
return x;
|
|
}
|
|
|
|
function fuzz() { }
|
|
|
|
noInline(foo);
|
|
noInline(bar);
|
|
|
|
function testImpl(f, x, p) {
|
|
var result = f([fuzz, x], p, false);
|
|
if (result != fuzz)
|
|
throw "Error: bad result: " + result;
|
|
}
|
|
|
|
function test(x, p) {
|
|
testImpl(foo, x, p);
|
|
testImpl(bar, x, !p);
|
|
}
|
|
|
|
for (var i = 0; i < 10000; ++i)
|
|
test(0, true);
|
|
|
|
for (var i = 0; i < 10000; ++i)
|
|
test(0, false);
|
|
|
|
test(0.5, true);
|