[ARM,MIPS] Skip slow tests
[WebKit-https.git] / JSTests / stress / has-indexed-property-slow-put-array-storage-ftl.js
1 //@ if isFTLEnabled then runFTLNoCJIT else skip end
2
3 function shouldBe(actual, expected) {
4     if (actual !== expected)
5         throw new Error('bad value: ' + actual);
6 }
7
8 var didFTLCompile = false;
9 var ftlTrue = $vm.ftlTrue;
10 function test1(array)
11 {
12     didFTLCompile = ftlTrue();
13     return 2 in array;
14 }
15 noInline(test1);
16
17 var object = { a: 10 };
18 Object.defineProperties(object, {
19     "0": {
20         get: function() { return this.a; },
21         set: function(x) { this.a = x; },
22     },
23 });
24
25 var array = [1, 2, 3, 4];
26 array.__proto__ = object;
27 ensureArrayStorage(array);
28 didFTLCompile = false;
29 for (var i = 0; i < 1e5; ++i)
30     shouldBe(test1(array), true);
31 shouldBe(didFTLCompile, true);
32
33 var array = [1, 2, , 4];
34 array.__proto__ = object;
35 ensureArrayStorage(array);
36 shouldBe(test1(array), false);
37
38 var array = [];
39 array.__proto__ = object;
40 ensureArrayStorage(array);
41 shouldBe(test1(array), false);
42
43 function test2(array)
44 {
45     didFTLCompile = ftlTrue();
46     return 9 in array;
47 }
48 noInline(test2);
49
50 var array1 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
51 array1.__proto__ = object;
52 ensureArrayStorage(array1);
53 var array2 = [1, 2];
54 array2.__proto__ = object;
55 ensureArrayStorage(array2);
56 didFTLCompile = false;
57 for (var i = 0; i < 1e5; ++i)
58     shouldBe(test2(array2), false);
59 shouldBe(didFTLCompile, true);
60 shouldBe(test2(array2), false);
61 shouldBe(test2(array1), true);