arraybuffer-transfer.js (806B)
1 let exp = wasmEvalText(`(module 2 (memory 1) 3 (export "mem" (memory 0)) 4 (func $f (result i32) (i32.load (i32.const 0))) 5 (export "zero" (func $f)) 6 )`).exports; 7 8 const byteLength = 65536; 9 let buffer = exp.mem.buffer; 10 let i32 = new Int32Array(buffer); 11 let zero = exp.zero; 12 13 const magic = 0xbadf00d; 14 15 assertEq(zero(), 0); 16 assertEq(i32[0], 0); 17 18 i32[0] = magic; 19 20 assertEq(zero(), magic); 21 assertEq(i32[0], magic); 22 23 assertEq(buffer.detached, false); 24 assertEq(buffer.byteLength, byteLength); 25 26 // Can't transfer Wasm prepared array buffers. 27 assertThrowsInstanceOf(() => buffer.transfer(), TypeError); 28 29 // |buffer| is still attached. 30 assertEq(buffer.detached, false); 31 assertEq(buffer.byteLength, byteLength); 32 33 // Access still returns the original value. 34 assertEq(zero(), magic); 35 assertEq(i32[0], magic);