Invalid flags in a RegExp literal should be an early SyntaxError
[WebKit-https.git] / JSTests / stress / get-by-val-on-undecided-sane-chain-3.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 testUninitializedArray() {
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);
15         if (value !== undefined)
16             throw "opaqueGetByVal1() case 1 failed for i = " + i + " value = " + value;
17     }
18
19     Array.prototype[-1] = "Uh!";
20
21     for (let i = 0; i < 1e4; ++i) {
22         const value = opaqueGetByVal1(target, i);
23         if (value !== undefined)
24             throw "opaqueGetByVal1() case 2 failed for i = " + i + " value = " + value;
25     }
26     const prototypeValue = opaqueGetByVal1(target, -1)
27     if (prototypeValue !== "Uh!")
28         throw "prototypeValue value = " + value;
29
30 }
31 testUninitializedArray();
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 value = opaqueGetByVal2(target, i);
44         if (value !== undefined)
45             throw "opaqueGetByVal2() case 1 failed for i = " + i + " value = " + value;
46     }
47     const prototypeValue = opaqueGetByVal2(target, -1)
48     if (prototypeValue !== "Uh!")
49         throw "prototypeValue value = " + value;
50 }
51 testAccessOnEmpty();