Source code

Revision control

Copy as Markdown

Other Tools

// |jit-test| skip-if: !wasmStackSwitchingEnabled()
// Regression test: Ion MIR emitters for suspend/resume omitted
// mirGen().ensureBallast() in per-parameter loops, causing a LifoAlloc
// assertion failure in debug builds when a tag carried many parameters.
const N = 500;
const tagParams = new Array(N).fill("i64").join(" ");
const pushes = "(i64.const 0) ".repeat(N);
const blockResults = new Array(N).fill("i64").join(" ") + " (ref $ct)";
const drops = "drop ".repeat(N + 1);
wasmEvalText(`(module
(type $ft (func))
(type $ct (cont $ft))
(tag $tag (param ${tagParams}))
(func $f (type $ft) ${pushes} suspend $tag)
(elem declare func $f)
(func (export "run")
(block (result ${blockResults})
ref.func $f
cont.new $ct
resume $ct (on $tag 0)
unreachable)
${drops}))`);