| function shouldBe(actual, expected) { |
| if (actual !== expected) |
| throw new Error(`bad value: ${String(actual)} ${String(expected)}`); |
| } |
| |
| function testJNEQ(a, b) |
| { |
| if (a == b) { |
| return 42; |
| } |
| return 30; |
| } |
| noInline(testJNEQ); |
| |
| function testJEQ(a, b) |
| { |
| if (a != b) { |
| return 42; |
| } |
| return 30; |
| } |
| noInline(testJEQ); |
| |
| function testJNEQB(a, b) |
| { |
| var i = 0; |
| do { |
| ++i; |
| } while (!(a == b)); |
| return i; |
| } |
| noInline(testJNEQB); |
| |
| function testJEQB(a, b) |
| { |
| var i = 0; |
| do { |
| ++i; |
| } while (!(a != b)); |
| return i; |
| } |
| noInline(testJEQB); |
| |
| function testJNEQF(a, b) |
| { |
| var i = 0; |
| while (!(a == b)) |
| ++i; |
| return i; |
| } |
| noInline(testJNEQF); |
| |
| function testJEQF(a, b) |
| { |
| var i = 0; |
| while (!(a != b)) |
| ++i; |
| return i; |
| } |
| noInline(testJEQF); |
| |
| for (var i = 0; i < 1e4; ++i) { |
| shouldBe(testJNEQ(0, 42), 30); |
| shouldBe(testJEQ(0, 42), 42); |
| shouldBe(testJNEQB(0, 0), 1); |
| shouldBe(testJEQB(0, 1), 1); |
| shouldBe(testJNEQF(0, 0), 0); |
| shouldBe(testJEQF(0, 1), 0); |
| } |