blob: eb415ff60ca60040541da77bfa576685157380cf [file] [edit]
import { instantiate } from "../wabt-wrapper.js"
import * as assert from "../assert.js"
let wat = `
(module
(func $func (param i32 i32 i32 i32 i32 i32 i32 i32 i32 i32 i32 i32 i32 i32 i32 i32) (result i32)
(local.get 0)
(local.get 1)
(local.get 2)
(local.get 3)
(local.get 4)
(local.get 5)
(local.get 6)
(local.get 7)
(local.get 8)
(local.get 9)
(local.get 10)
(local.get 11)
(local.get 12)
(local.get 13)
(local.get 14)
(local.get 15)
(i32.add)
(i32.add)
(i32.add)
(i32.add)
(i32.add)
(i32.add)
(i32.add)
(i32.add)
(i32.add)
(i32.add)
(i32.add)
(i32.add)
(i32.add)
(i32.add)
(i32.add)
)
(func $main (export "main") (param i32 i32 i32 i32 i32 i32 i32 i32 i32 i32 i32 i32) (result i32)
(local.get 0)
(local.get 1)
(local.get 2)
(local.get 3)
(local.get 4)
(local.get 5)
(local.get 6)
(local.get 7)
(local.get 8)
(local.get 9)
(local.get 10)
(local.get 11)
(local.get 8)
(local.get 9)
(local.get 10)
(local.get 11)
(return_call $func)
)
)
`
async function test() {
const instance = await instantiate(wat, {}, { tail_call: true });
const { main } = instance.exports
assert.eq(main(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1), 16);
assert.eq(main(1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2), 24);
}
await assert.asyncTest(test())