test262-automation e9a5a7f918 [javascriptcore-test262-automation] changes from git@github.com:WebKit/webkit.git at sha 949e26452cfa153a7f4afe593da97e2fe9e1b706 on Tue Jul 03 2018 14:35:15 GMT-0400 (Eastern Daylight Time) (#1620)
* [javascriptcore-test262-automation] changes from git@github.com:WebKit/webkit.git at sha 949e26452cfa153a7f4afe593da97e2fe9e1b706 on Tue Jul 03 2018 14:35:15 GMT-0400 (Eastern Daylight Time)
2018-07-03 15:59:58 -04:00

52 lines
1.6 KiB
JavaScript

import { eq as assertEq, throws as assertThrows } from "../assert.js";
const pageSize = 64*1024;
let buffers = [];
for (let i = 0; i < 100; i++) {
const max = 5;
let pageCount = 1;
let x = new WebAssembly.Memory({initial: 1, maximum: max});
for (let i = 0; i < (max - 1); i++) {
let int8Array = new Uint8Array(x.buffer);
for (let i = 0; i < pageSize; i++) {
assertEq(int8Array[pageSize*(pageCount - 1) + i], 0);
int8Array[pageSize*(pageCount - 1) + i] = pageCount;
}
for (let i = 0; i < pageCount; i++) {
for (let j = 0; j < pageSize; j++) {
assertEq(int8Array[i * pageSize + j], i + 1);
}
}
let buffer = x.buffer;
assertEq(buffer.byteLength, pageCount * pageSize);
buffers.push(buffer);
let previousPageSize = x.grow(1);
assertEq(buffer.byteLength, 0);
assertEq(previousPageSize, pageCount);
++pageCount;
}
}
for (let buffer of buffers) {
assertEq(buffer.byteLength, 0);
}
{
const memory = new WebAssembly.Memory({initial: 1, maximum: 5});
let buffer = memory.buffer;
assertEq(buffer.byteLength, 1*64*1024);
memory.grow(1);
assertEq(buffer.byteLength, 0);
buffer = memory.buffer;
assertEq(buffer.byteLength, 2*64*1024);
// This shouldn't neuter the buffer since it fails.
assertThrows(() => memory.grow(1000), RangeError, "WebAssembly.Memory.grow would exceed the memory's declared maximum size");
assertEq(buffer.byteLength, 2*64*1024);
assertEq(memory.buffer, buffer);
}