[JSC] AI should not propagate AbstractValue relying on constant folding phase
[WebKit-https.git] / JSTests / stress / array-indexof-other.js
1 function shouldBe(actual, expected)
2 {
3     if (actual !== expected)
4         throw new Error('bad value: ' + actual);
5 }
6
7 (function () {
8     function indexOfInt32(array, value, index)
9     {
10         return array.indexOf(value, index);
11     }
12     noInline(indexOfInt32);
13
14     function indexOfDouble(array, value, index)
15     {
16         return array.indexOf(value, index);
17     }
18     noInline(indexOfDouble);
19
20     function indexOfString(array, value, index)
21     {
22         return array.indexOf(value, index);
23     }
24     noInline(indexOfString);
25
26     function indexOfObject(array, value, index)
27     {
28         return array.indexOf(value, index);
29     }
30     noInline(indexOfObject);
31
32     var key = {};
33     var int32Array = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12];
34     var doubleArray = [0, 1, 2, 3, 4.2, 5, 6, 7, 8, 9, 10.5, 11, 12];
35     var stringArray = [ "cocoa", "cappuccino", "matcha", "rize", "kilimanjaro" ];
36     var objectArray = [ {}, {}, {}, {}, {}, key, {}, {}, {}, null, undefined ];
37
38     for (var i = 0; i < 1e5; ++i) {
39         shouldBe(indexOfInt32(int32Array, null, 0), -1);
40         shouldBe(indexOfInt32(int32Array, undefined, 0), -1);
41         shouldBe(indexOfDouble(doubleArray, null, 0), -1);
42         shouldBe(indexOfDouble(doubleArray, undefined, 0), -1);
43         shouldBe(indexOfDouble(doubleArray, null, 0), -1);
44         shouldBe(indexOfDouble(doubleArray, undefined, 0), -1);
45         shouldBe(indexOfString(stringArray, null, 0), -1);
46         shouldBe(indexOfString(stringArray, undefined, 0), -1);
47         shouldBe(indexOfObject(objectArray, null, 0), 9);
48         shouldBe(indexOfObject(objectArray, undefined, 0), 10);
49     }
50 }());