[JSC] AI should not propagate AbstractValue relying on constant folding phase
[WebKit-https.git] / JSTests / stress / get-by-val-with-string-exit.js
1 function shouldBe(actual, expected) {
2     if (actual !== expected)
3         throw new Error('bad value: ' + actual);
4 }
5
6 function getByVal(object, name)
7 {
8     return object[name];
9 }
10 noInline(getByVal);
11
12 function getStr1()
13 {
14     return "hello";
15 }
16 noInline(getStr1);
17
18 function getStr2()
19 {
20     return "hello";
21 }
22 noInline(getStr2);
23
24 var object = {
25     hello: 42
26 };
27
28 for (var i = 0; i < 100; ++i)
29     shouldBe(getByVal(object, i % 2 === 0 ? getStr1() : getStr2()), 42);
30 shouldBe(getByVal(object, { toString() { return 'hello'; } }), 42);
31
32 for (var i = 0; i < 10000; ++i)
33     shouldBe(getByVal(object, i % 2 === 0 ? getStr1() : getStr2()), 42);
34 shouldBe(getByVal(object, { toString() { return 'hello'; } }), 42);