Source code

Revision control

Copy as Markdown

Other Tools

for (let numLocals of [3, 4, 5, 6, 17, 18, 19]) {
for (let numParams of [1, 2, 3, 4, 5, 6, 7, 8]) {
let locals = ` (local `;
let setLocals = ``;
let getLocals = ``;
let adds = ``;
let sum = 0;
for (let i = 0; i < numLocals; i++) {
sum += i + 1;
locals += `i32 `;
setLocals += ` (local.set ${i + 1} (i32.add (local.get 0) (i32.const ${i + 1})))\n`;
getLocals += ` local.get ${i + 1}\n`;
if (i > 0)
adds += ` i32.add\n`;
}
locals += `)\n`;
var callee = ` (func $f (param `;
var caller = ` (call $f `;
for (let i = 0; i < numParams; i++) {
callee += `f32 `;
caller += `(f32.const ${i}) `;
}
callee += `))\n`;
caller += `)\n`;
var code = `(module \n` +
callee +
` (func (export "run") (param i32) (result i32)\n` +
locals +
setLocals +
caller +
getLocals +
adds +
` )\n` +
`)`;
wasmFullPass(code, numLocals * 100 + sum, undefined, 100);
}
}