Source code

Revision control

Copy as Markdown

Other Tools

// |jit-test| allow-oom
// Test that OOM during wasm array OOL allocation leaves the object in a
// correct state.
// If OOM happens in the middle of OOL creation, the array can be left in an
// inconsistent state (its shape may not yet be initialized, or it could have a
// dangling data pointer). That would make GC trace it incorrectly and
// potentially crash.
const mod = new WebAssembly.Module(wasmTextToBinary(`(module
(type $arr (array (mut i64)))
(global (ref null $arr) (array.new_default $arr (i32.const 200)))
)`));
fullcompartmentchecks(true);
for (let y of [ 1,1]) {
for (let i = 1; i < 100; i++) {
oomAfterAllocations(i);
try { new WebAssembly.Instance(mod); } catch(e) {}
resetOOMFailure();
}
}
gc();