blob: 69976c2c4a42114cf29ef1c2bc4f565162d4393e [file] [log] [blame]
description(
"Tests what happens when CFG simplification leads to the elimination of a set local that had a type check, and then we do a typeof on the value, which can be constant folded if the type check stays."
);
function foo(o) {
var x;
if (o.f)
x = o.g;
else
x = o.h;
return [typeof x, x - 1];
}
silentTestPass = true;
noInline(foo);
for (var i = 0; i < 500; i = dfgIncrement({f:foo, i:i + 1, n:100})) {
var o = {f:foo};
var expectedFirst;
var expectedSecond;
if (i < 450) {
o.g = i;
expectedFirst = "\"number\"";
expectedSecond = "" + (i - 1);
} else {
o.g = "42";
expectedFirst = "\"string\"";
expectedSecond = "41";
}
var result = foo(o);
shouldBe("result[0]", expectedFirst);
shouldBe("result[1]", expectedSecond);
}