tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

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 }