memory-grow.js (953B)
1 // |jit-test| heavy; allow-oom; skip-if: !canRunHugeMemoryTests() 2 3 // This tests that we can grow the heap by more than 4GB. Other grow tests are 4 // in basic.js. 5 6 for (let shared of ['', 'shared']) { 7 try { 8 var ins = new WebAssembly.Instance(new WebAssembly.Module(wasmTextToBinary(` 9 (module 10 (memory (export "mem") i64 0 65540 ${shared}) 11 (func (export "f") (param $delta i64) (result i64) 12 (memory.grow (local.get $delta))))`))); 13 } catch (e) { 14 if (e instanceof WebAssembly.RuntimeError && String(e).match(/too many memory pages/)) { 15 quit(0); 16 } 17 throw e; 18 } 19 20 let res = ins.exports.f(65537n); 21 if (res === -1n) { 22 quit(0); // OOM 23 } 24 assertEq(ins.exports.mem.buffer.byteLength, 65537*65536); 25 let mem = new Uint8Array(ins.exports.mem.buffer); 26 mem[65537*65536-1] = 37; 27 assertEq(mem[65537*65536-1], 37); 28 29 assertEq(ins.exports.f(4n), -1n); 30 }