mirror of
https://github.com/tc39/test262.git
synced 2025-05-04 06:50:32 +02:00
* [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)
52 lines
1.6 KiB
JavaScript
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);
|
|
}
|