Invalid flags in a RegExp literal should be an early SyntaxError
[WebKit-https.git] / JSTests / stress / get-array-length-on-undecided.js
1 function forceTransition() {
2     // We want to test the StructureCheck in testSparseArray(), not this watchpoint.
3     // We start with the transition so that it's nothing new.
4     let array = new Array();
5     array[100001] = "WebKit!";
6 }
7 forceTransition();
8
9 function opaqueGetArrayLength(array)
10 {
11     return array.length;
12 }
13 noInline(opaqueGetArrayLength);
14
15 function testEmptyArray()
16 {
17     let array = [];
18     for (let i = 0; i < 1e6; ++i) {
19         if (opaqueGetArrayLength(array) !== 0) {
20             throw "Failed testEmptyArray";
21         }
22     }
23
24     array = new Array();
25     for (let i = 0; i < 1e6; ++i) {
26         if (opaqueGetArrayLength(array) !== 0) {
27             throw "Failed testEmptyArray";
28         }
29     }
30 }
31 testEmptyArray();
32
33
34 function testUnitializedArray()
35 {
36     let array = new Array(32);
37     for (let i = 0; i < 1e6; ++i) {
38         if (opaqueGetArrayLength(array) !== 32) {
39             throw "Failed testUnitializedArray";
40         }
41     }
42
43     array = new Array();
44     array.length = 64
45     for (let i = 0; i < 1e6; ++i) {
46         if (opaqueGetArrayLength(array) !== 64) {
47             throw "Failed testUnitializedArray";
48         }
49     }
50 }
51 testUnitializedArray();
52
53 function testOversizedArray()
54 {
55     let array = new Array(100001);
56     for (let i = 0; i < 1e6; ++i) {
57         if (opaqueGetArrayLength(array) !== 100001) {
58             throw "Failed testOversizedArray";
59         }
60     }
61 }
62 testOversizedArray();
63
64 // This should OSR Exit and fallback to GetById to get the length.
65 function testSparseArray()
66 {
67     let array = new Array();
68     array[100001] = "WebKit!";
69     for (let i = 0; i < 1e6; ++i) {
70         if (opaqueGetArrayLength(array) !== 100002) {
71             throw "Failed testOversizedArray";
72         }
73     }
74 }
75 testSparseArray();
76