1 // Put early out-of-bound data.
2 function opaquePutByValOnInt32ArrayEarlyOutOfBounds(array
, index
, value
)
6 noInline(opaquePutByValOnInt32ArrayEarlyOutOfBounds
);
8 function testInt32ArrayEarlyOutOfBounds()
10 // Warm up with an immediate out of bounds.
11 var int32Array
= new Array(10);
12 for (var i
= 0; i
< 10; ++i
) {
13 opaquePutByValOnInt32ArrayEarlyOutOfBounds(int32Array
, i
, i
);
14 var value
= int32Array
[i
];
16 throw "Failed opaquePutByValOnInt32ArrayEarlyOutOfBounds(int32Array, i, i) warmup with i = " + i
+ " value = " + value
;
18 opaquePutByValOnInt32ArrayEarlyOutOfBounds(int32Array
, 1042, 1);
19 var value
= int32Array
[1042];
21 throw "Failed opaquePutByValOnInt32ArrayEarlyOutOfBounds(int32Array, 1042, 1) value = " + value
;
23 var length
= int32Array
.length
;
24 if (int32Array
.length
!== 1043)
25 throw "Incorrect int32Array.length, length = " + length
;
28 // We then do plenty of in-bounds accesses.
29 for (var i
= 0; i
< 1e4
; ++i
) {
30 for (var j
= 0; j
< 10; ++j
) {
31 opaquePutByValOnInt32ArrayEarlyOutOfBounds(int32Array
, j
, i
);
32 var value
= int32Array
[j
];
34 throw "Failed opaquePutByValOnInt32ArrayEarlyOutOfBounds(int32Array, j, i) in-bounds with i = " + i
+ " j = " + j
+ " value = " + value
;
38 testInt32ArrayEarlyOutOfBounds();
41 // Get out-of-bound data after a thousand run.
42 function opaquePutByValOnStringArrayHotOutOfBounds(array
, index
, value
)
46 noInline(opaquePutByValOnStringArrayHotOutOfBounds
);
48 function testStringArrayHotOutOfBounds()
50 // Warm up with in bounds access.
51 var stringArray
= new Array(10);
52 for (var i
= 0; i
< 1e2
; ++i
) {
53 for (var j
= 0; j
< 10; ++j
) {
54 opaquePutByValOnStringArrayHotOutOfBounds(stringArray
, j
, "" + i
);
55 var value
= stringArray
[j
];
57 throw "Failed opaquePutByValOnStringArrayHotOutOfBounds(stringArray, j, i) in-bounds with i = " + i
+ " j = " + j
+ " value = " + value
;
61 // Do a single out of bounds after warmup.
62 opaquePutByValOnStringArrayHotOutOfBounds(stringArray
, 513, 42);
63 var value
= stringArray
[513];
65 throw "Failed opaquePutByValOnStringArrayHotOutOfBounds(stringArray, 513, 42), value = " + value
;
67 // We then do plenty of in-bounds accesses.
68 for (var i
= 0; i
< 1e3
; ++i
) {
69 for (var j
= 0; j
< 10; ++j
) {
70 opaquePutByValOnStringArrayHotOutOfBounds(stringArray
, j
, "" + i
);
71 var value
= stringArray
[j
];
73 throw "Failed opaquePutByValOnStringArrayHotOutOfBounds(stringArray, j, i) in-bounds with i = " + i
+ " j = " + j
+ " value = " + value
;
77 // Followed by plenty of out-of-bounds accesses.
78 for (var j
= 514; j
<= 1025; ++j
)
79 opaquePutByValOnStringArrayHotOutOfBounds(stringArray
, j
, "" + j
);
81 for (var j
= 514; j
<= 1025; ++j
) {
82 var value
= stringArray
[j
];
84 throw "Failed opaquePutByValOnStringArrayHotOutOfBounds(stringArray, j, j) in-bounds with j = " + j
+ " value = " + value
;
87 testStringArrayHotOutOfBounds();