[JSC] Do not use asArrayModes() with Structures because it discards TypedArray inform...
[WebKit-https.git] / JSTests / stress / get-by-val-on-undecided-sane-chain-2.js
1 "use strict"
2
3 // Test in-bounds access.
4 function opaqueGetByVal1(array, index) {
5     return array[index];
6 }
7 noInline(opaqueGetByVal1);
8
9 function testAccessInBounds() {
10     const target = new Array(100);
11
12     // We start with an original array. Those GetByVal can be eliminated.
13     for (let i = 0; i < 1e4; ++i) {
14         const value = opaqueGetByVal1(target, i % 100);
15         if (value !== undefined)
16             throw "opaqueGetByVal1() case 1 failed for i = " + i + " value = " + value;
17     }
18
19     Object.prototype[42] = "Uh!";
20
21     for (let i = 0; i < 1e4; ++i) {
22         const index = i % 100;
23         const value = opaqueGetByVal1(target, index);
24         if (index == 42) {
25             if (value !== "Uh!")
26                 throw "opaqueGetByVal1() case 2 failed on 42, value = " + value;
27         } else if (value !== undefined)
28             throw "opaqueGetByVal1() case 2 failed for i = " + i + " value = " + value;
29     }
30 }
31 testAccessInBounds();
32
33 // Test in-bounds access.
34 function opaqueGetByVal2(array, index) {
35     return array[index];
36 }
37 noInline(opaqueGetByVal2);
38
39 function testAccessOnEmpty() {
40     const target = new Array();
41
42     for (let i = 0; i < 1e4; ++i) {
43         const index = i % 100;
44         const value = opaqueGetByVal2(target, index);
45         if (index == 42) {
46             if (value !== "Uh!")
47                 throw "opaqueGetByVal2() case 2 failed on 42, value = " + value;
48         } else if (value !== undefined)
49             throw "opaqueGetByVal2() case 2 failed for i = " + i + " value = " + value;
50     }
51 }
52 testAccessOnEmpty();