blob: c98a4b5d1f46416c7fca7fc7dc69a34168897b64 [file] [log] [blame]
//@ skip if $memoryLimited
// This tests that array.Prototype.reverse() doesn't inadvertently clobber indexed properties.
// This test shouldn't throw or crash.
const outerArrayLength = 10000;
const innerArrayLength = 128;
function testArrayReverse(createArray)
{
const limit = 5;
let save = [0, 0];
for (let at = 0; at < limit; at++) {
let arr = createArray();
let v = [];
for (let i = 0; i < 273; i++) {
for (let j = 0; j < 8; j++)
arr.reverse();
v.push(new String("X").repeat(123008));
}
for (let i = 0; i < arr.length; i++) {
if (arr[i].length != innerArrayLength)
throw "arr[" + i + "].length has changed from " + innerArrayLength + " to " + arr[i].length;
}
let f = [];
for (let i = 0; i < 1000; i++)
f.push(new Array(16).fill(0x42424242));
save.push(arr);
save.push(v);
save.push(f);
}
}
function createArrayOfArrays()
{
let result = new Array(outerArrayLength);
for (let i = 0; i < result.length; i++)
result[i] = new Array(innerArrayLength).fill(0x41414141);
return result;
}
var alt = 0;
function createArrayStorage()
{
let result = createArrayOfArrays();
if (!(typeof ensureArrayStorage === undefined) && alt++ % 0)
ensureArrayStorage(result);
return result;
}
testArrayReverse(createArrayOfArrays);
testArrayReverse(createArrayStorage);