Source code

Revision control

Copy as Markdown

Other Tools

// |jit-test| skip-if: !wasmJSPromiseIntegrationEnabled() || !wasmLazyTieringEnabled() || !getPrefValue("wasm_lazy_tiering_synchronous"); --setpref=wasm_lazy_tiering_level=9; --setpref=wasm_inlining_level=9
// Bug 2043040 - Crash [@ FunctionCompiler::emitInlineCall] with JSPI synchronous
// tier-up on continuation stack. GenerateRequestTierUpStub must switch to the main
// stack before calling into C++, so Ion compilation doesn't run on the small
// continuation stack.
// Build a chain of 64 small inlinable functions.
var funcs = "";
for (var i = 0; i < 64; i++) {
if (i === 0) {
funcs += `(func $f0 (result i32) (i32.const 1))\n`;
} else {
funcs += `(func $f${i} (result i32) (i32.add (call $f${i-1}) (i32.const 1)))\n`;
}
}
var ins = wasmEvalText(`(module
${funcs}
(func (export "run") (result i32)
call $f63
)
)`);
var run = WebAssembly.promising(ins.exports.run);
run().then(r => assertEq(r, 64));
drainJobQueue();