36 lines
728 B
JavaScript
36 lines
728 B
JavaScript
description(
|
|
"Tests what happens when CFG simplification leads to the elimination of a set local that had a type check, and then we branch on the variable not being null while decrementing the variable in the same basic block."
|
|
);
|
|
|
|
function foo(o) {
|
|
var x;
|
|
if (o.f)
|
|
x = o.g;
|
|
else
|
|
x = o.h;
|
|
var y = x != null;
|
|
x--;
|
|
if (y)
|
|
return y;
|
|
else
|
|
return false;
|
|
}
|
|
|
|
silentTestPass = true;
|
|
noInline(foo);
|
|
|
|
for (var i = 0; i < 500; i = dfgIncrement({f:foo, i:i + 1, n:100})) {
|
|
var o = {f:foo};
|
|
var expected;
|
|
if (i < 450) {
|
|
o.g = i;
|
|
expected = "true";
|
|
} else {
|
|
o.g = null;
|
|
expected = "false";
|
|
}
|
|
shouldBe("foo(o)", expected);
|
|
}
|
|
|
|
|