to-resizable-buffer-shared.any.js (1543B)
1 // META: global=window,dedicatedworker,jsshell 2 // META: script=/wasm/jsapi/wasm-module-builder.js 3 4 test(() => { 5 const memory = new WebAssembly.Memory({ initial: 0, maximum: 4, shared: true }); 6 const buffer1 = memory.buffer; 7 8 assert_false(buffer1.growable, "By default the SAB is initially not growable"); 9 10 const buffer2 = memory.toResizableBuffer(); 11 assert_true(buffer2.growable); 12 assert_not_equals(buffer1, buffer2, "Changing resizability makes a new object"); 13 assert_equals(memory.buffer, buffer2, "The buffer created by the most recent toFooBuffer call is cached"); 14 15 const buffer3 = memory.toResizableBuffer(); 16 assert_equals(buffer2, buffer3, "toResizableBuffer does nothing if buffer is already resizable") 17 assert_equals(memory.buffer, buffer3); 18 }, "toResizableBuffer caching behavior"); 19 20 test(() => { 21 const maxNumPages = 4; 22 const memory = new WebAssembly.Memory({ initial: 0, maximum: maxNumPages, shared: true }); 23 const buffer = memory.toResizableBuffer(); 24 assert_equals(buffer.maxByteLength, kPageSize * maxNumPages, "Memory maximum is same as maxByteLength"); 25 }, "toResizableBuffer max size"); 26 27 test(() => { 28 const memory = new WebAssembly.Memory({ initial: 0, maximum: 4, shared: true }); 29 const buffer = memory.toResizableBuffer(); 30 31 assert_equals(buffer.byteLength, 0); 32 buffer.grow(2 * kPageSize); 33 assert_equals(buffer.byteLength, 2 * kPageSize); 34 35 assert_throws_js(RangeError, () => buffer.grow(3 * kPageSize - 1), "Can only grow by page multiples"); 36 }, "Resizing a Memory's resizable buffer");