description( | |
"Check that short-circuiting Branch(LogicalNot(@a)) and then failing speculation does not result in the branch being taken the wrong way." | |
); | |
function foo(a) { | |
if (a.f) | |
return 1; | |
return 0; | |
} | |
function bar(a) { | |
var b = !a.f; | |
if (b) | |
return 1; | |
return 0; | |
} | |
silentTestPass = true; | |
noInline(foo); | |
noInline(bar); | |
var True = true; | |
var False = false; | |
for (var i = 0; i < 200; i = dfgIncrement({f:[foo, bar], i:i + 1, n:50})) { | |
var x; | |
if (i == 100) { | |
True = "string"; | |
False = void 0; | |
} | |
shouldBe("foo({f:True})", "1"); | |
shouldBe("foo({f:False})", "0"); | |
shouldBe("bar({f:True})", "0"); | |
shouldBe("bar({f:False})", "1"); | |
} | |