// We can go back if we choose.
let ab2 = mem.toFixedLengthBuffer();
assertEq(ab2.resizable, false);
assertEq(mem.buffer, ab2);
assertEq(ab2 !== ab, true);
assertEq(rab.detached, true);
assertEq(ab2.byteLength, 20 << 16);
assertEq(ab2.maxByteLength, 20 << 16);
// RAB#resize throws when trying to shrink or grow by non-page multiples // for WebAssembly.Memory-vended RABs.
assertThrowsInstanceOf(() => rab.resize(rab.byteLength - 65536), RangeError);
assertThrowsInstanceOf(() => rab.resize(rab.byteLength + 10), RangeError);
// No allow to make buffer resizable when max in not specified.
mem = new WebAssembly.Memory({initial: 20});
assertThrowsInstanceOf(() => mem.toResizableBuffer(), TypeError);
// Test the JS API with a resizable and shared buffer.
a = new WebAssembly.Memory({
initial: 2,
maximum: 4,
shared: true
})
a.toResizableBuffer();
setSharedObject(a);
// Testing the limits of our implementation.
let big_memory = new WebAssembly.Memory({address: 'i64', initial: 0n, maximum: BigInt(MaxMemory64PagesValidation), shared: false});
let buffer = big_memory.toResizableBuffer();
// Asserts that buffer.maxByteLength is less than MAX_SAFE_INTEGER.
assertEq(buffer.maxByteLength <= Number.MAX_SAFE_INTEGER, true);
// Create a new Memory without a maximum and accessing maxByteLength. new WebAssembly.Memory({ initial: 10 }).buffer.maxByteLength;
// toResizableBuffer and toFixedLengthBuffer throw when the buffer length is pinned.
mem = new WebAssembly.Memory({initial: 1, maximum: 4});
pinArrayBufferOrViewLength(mem.buffer, true);
assertThrowsInstanceOf(() => mem.toResizableBuffer(), RangeError);
pinArrayBufferOrViewLength(mem.buffer, false);
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.