blob: 4cfba83906f60c6a8ab03d16858066b28ef862ce [file] [log] [blame]
description(
"Tests that we do the right things when we prove that we can eliminate a structure check, but haven't proved that the value is definitely an object - i.e. we've proved that it's either an object with a specific structure, or it's not an object at all."
);
function foo(o, p) {
var x = o.f;
if (p)
o = null;
return x + o.g();
}
function bar() {
return 24;
}
function baz(i) {
try {
return foo({f:42, g:bar}, i == 190);
} catch (e) {
debug("Caught exception: " + e);
return "ERROR";
}
}
silentTestPass = true;
noInline(foo);
for (var i = 0; i < 200; i = dfgIncrement({f:foo, i:i + 1, n:100}))
shouldBe("baz(i)", i == 190 ? "\"ERROR\"" : "66");