forked from AssemblyScript/assemblyscript
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathconstant-indirect-arg.js
More file actions
26 lines (21 loc) · 845 Bytes
/
constant-indirect-arg.js
File metadata and controls
26 lines (21 loc) · 845 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
var binaryen = require("binaryen");
var mod = new binaryen.Module();
var ftype_v = mod.addFunctionType("v", binaryen.none, []);
var ftype_vi = mod.addFunctionType("vi", binaryen.none, [ binaryen.i32 ]);
mod.addFunction("callee-2", ftype_v, [], mod.block(null, [
]));
mod.addFunction("callee-1", ftype_vi, [], mod.block(null, [
mod.call_indirect(mod.getLocal(0, binaryen.i32), [], "v"),
]));
mod.setFunctionTable(2, 2, [ "callee-1", "callee-2" ]);
mod.addFunction("caller", ftype_vi, [ binaryen.i32 ], mod.block(null, [
mod.call_indirect(mod.getLocal(0, binaryen.i32), [ mod.i32.const(1) ], "vi"),
]));
mod.addFunctionExport("caller", "main");
binaryen.setOptimizeLevel(4);
binaryen.setShrinkLevel(0);
binaryen.setDebugInfo(false);
mod.optimize();
if (!mod.validate())
console.log("-> does not validate");
console.log(mod.emitText());