[JSC] AI should not propagate AbstractValue relying on constant folding phase
[WebKit-https.git] / JSTests / stress / fused-jeq.js
1 function shouldBe(actual, expected) {
2     if (actual !== expected)
3         throw new Error(`bad value: ${String(actual)} ${String(expected)}`);
4 }
5
6 function testJNEQ(a, b)
7 {
8     if (a == b) {
9         return 42;
10     }
11     return 30;
12 }
13 noInline(testJNEQ);
14
15 function testJEQ(a, b)
16 {
17     if (a != b) {
18         return 42;
19     }
20     return 30;
21 }
22 noInline(testJEQ);
23
24 function testJNEQB(a, b)
25 {
26     var i = 0;
27     do {
28         ++i;
29     } while (!(a == b));
30     return i;
31 }
32 noInline(testJNEQB);
33
34 function testJEQB(a, b)
35 {
36     var i = 0;
37     do {
38         ++i;
39     } while (!(a != b));
40     return i;
41 }
42 noInline(testJEQB);
43
44 function testJNEQF(a, b)
45 {
46     var i = 0;
47     while (!(a == b))
48         ++i;
49     return i;
50 }
51 noInline(testJNEQF);
52
53 function testJEQF(a, b)
54 {
55     var i = 0;
56     while (!(a != b))
57         ++i;
58     return i;
59 }
60 noInline(testJEQF);
61
62 for (var i = 0; i < 1e4; ++i) {
63     shouldBe(testJNEQ(0, 42), 30);
64     shouldBe(testJEQ(0, 42), 42);
65     shouldBe(testJNEQB(0, 0), 1);
66     shouldBe(testJEQB(0, 1), 1);
67     shouldBe(testJNEQF(0, 0), 0);
68     shouldBe(testJEQF(0, 1), 0);
69 }