[JSC] AI should not propagate AbstractValue relying on constant folding phase
[WebKit-https.git] / JSTests / stress / constant-fold-multi-get-by-offset-to-get-by-offset-on-prototype-and-sink-allocation.js
1 function ThingA() {
2 }
3
4 ThingA.prototype = {f:1};
5
6 function ThingB() {
7 }
8
9 ThingB.prototype = {f:2};
10
11 function foo(o, p) {
12     return p ? o.f : -1;
13 }
14
15 for (var i = 0; i < 10000; ++i) {
16     foo(new ThingA(), true);
17     foo(new ThingB(), true);
18     ThingA.prototype.f = i;
19     ThingB.prototype.f = i + 1;
20 }
21
22 function bar(p) {
23     return foo(new ThingA(), p);
24 }
25
26 ThingA.prototype.f = 42;
27
28 for (var i = 0; i < 10000; ++i) {
29     var result = bar(false);
30     if (result != -1)
31         throw new Error("Bad result in loop: " + result);
32 }
33
34 var result = bar(true);
35 if (result != 42)
36     throw new Error("Bad result: " + result);
37
38