| // We don't need N versions of this simultaneously filling up RAM. |
| //@ skip |
| |
| const verbose = false; |
| |
| // Use a full 4GiB so that exhaustion is likely to occur faster. We're not |
| // guaranteed that we'll get that much virtually allocated to the memory so we |
| // can't actually check that exhaustion occurs at a particular number of |
| // memories. |
| const maximumPages = 65536; |
| |
| let memories = []; |
| try { |
| while (true) { |
| let m = new WebAssembly.Memory({ initial: 64, maximum: maximumPages }); |
| memories.push(m); |
| if (verbose) |
| print(`${WebAssemblyMemoryMode(m)} ${memories.length}`); |
| } |
| } catch (e) { |
| if (verbose) |
| print(`Caught: ${e}`); |
| if (e.message !== "Out of memory") |
| throw new Error(`Expected an out of memory error, got ${e} of type ${typeof e}`); |
| } |