diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 19:33:14 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 19:33:14 +0000 |
commit | 36d22d82aa202bb199967e9512281e9a53db42c9 (patch) | |
tree | 105e8c98ddea1c1e4784a60a5a6410fa416be2de /js/src/jit-test/tests/wasm/memory64/data-active.js | |
parent | Initial commit. (diff) | |
download | firefox-esr-36d22d82aa202bb199967e9512281e9a53db42c9.tar.xz firefox-esr-36d22d82aa202bb199967e9512281e9a53db42c9.zip |
Adding upstream version 115.7.0esr.upstream/115.7.0esr
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'js/src/jit-test/tests/wasm/memory64/data-active.js')
-rw-r--r-- | js/src/jit-test/tests/wasm/memory64/data-active.js | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/js/src/jit-test/tests/wasm/memory64/data-active.js b/js/src/jit-test/tests/wasm/memory64/data-active.js new file mode 100644 index 0000000000..7f40861aba --- /dev/null +++ b/js/src/jit-test/tests/wasm/memory64/data-active.js @@ -0,0 +1,34 @@ +// |jit-test| allow-oom; skip-if: !canRunHugeMemoryTests() + +function testIt(s, addr) { + try { + var ins = new WebAssembly.Instance(new WebAssembly.Module(wasmTextToBinary(` +(module + (memory (export "mem") i64 65537) + (data (i64.const ${addr}) "${s}"))`))); + } catch (e) { + if (e instanceof WebAssembly.RuntimeError && String(e).match(/too many memory pages/)) { + return; + } + throw e; + } + var mem = new Uint8Array(ins.exports.mem.buffer); + assertEq(String.fromCodePoint(...mem.slice(addr, addr + s.length)), s) +} + +// Test that an active data segment targeting the area above 4GB works as expected +testIt("hello, world!", 0x100000020); + +// Ditto, but crosses the 4GB boundary +var s = "supercalifragilisticexpialidocious"; +testIt(s, 0x100000000 - Math.floor(s.length / 2)); + +// This is OOB above the 4GB boundary - throws OOB during instantiation. +// But can also throw for OOM when trying to create the memory. +assertErrorMessage(() => new WebAssembly.Instance(new WebAssembly.Module(wasmTextToBinary(` +(module + (memory (export "mem") i64 65537) + (data (i64.const ${65536*65537-10}) "supercalifragilisticexpialidocious"))`))), + WebAssembly.RuntimeError, + /(out of bounds)|(too many memory pages)/); + |