Skip to content

Commit 73bac49

Browse files
committed
Node wrapper: support for using alternative Wasm engines
1 parent 29f552f commit 73bac49

File tree

1 file changed

+37
-7
lines changed

1 file changed

+37
-7
lines changed

tools/node_wrapper.ml

Lines changed: 37 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,20 @@
1+
let wizard_args = [ "-ext:stack-switching"; "-stack-size=2M"; "--dir=."; "--dir=/tmp" ]
2+
3+
let wasmtime_args =
4+
[ (* "-C"; "collector=null"; *) "-W=all-proposals=y"; "--dir=."; "--dir=/tmp" ]
5+
6+
let wasmedge_args =
7+
[ "--enable-gc"
8+
; "--enable-exception-handling"
9+
; "--enable-tail-call"
10+
; "--dir=."
11+
; "--dir=/tmp"
12+
]
13+
114
let extra_args_for_wasoo =
215
[ "--experimental-wasm-imported-strings"
316
; "--experimental-wasm-stack-switching"
17+
; "--experimental-wasm-exnref"
418
; "--stack-size=10000"
519
]
620

@@ -23,16 +37,32 @@ let env =
2337
else e)
2438
env
2539

26-
let args =
40+
let environment_args () =
41+
List.filter
42+
(fun e -> not (String.contains e ','))
43+
(Array.to_list (Array.map (fun e -> "--env=" ^ e) env))
44+
45+
let wasm_file file =
46+
Filename.concat (Filename.chop_extension file ^ ".assets") "code.wasm"
47+
48+
let common_args file argv = environment_args () @ (wasm_file file :: List.tl argv)
49+
50+
let exe, args =
2751
match Array.to_list Sys.argv with
2852
| exe :: argv ->
29-
let argv =
53+
let exe', argv =
3054
match argv with
31-
| file :: _ when Filename.check_suffix file ".wasm.js" ->
32-
extra_args_for_wasoo @ argv
33-
| _ -> extra_args_for_jsoo @ argv
55+
| file :: _ when Filename.check_suffix file ".wasm.js" -> (
56+
match Sys.getenv_opt "WASM_ENGINE" with
57+
| Some "wizard" -> "wizeng.x86-linux", wizard_args @ common_args file argv
58+
| Some "wizard-fast" ->
59+
"wizeng.x86-64-linux", wizard_args @ common_args file argv
60+
| Some "wasmtime" -> "wasmtime", wasmtime_args @ common_args file argv
61+
| Some "wasmedge" -> "wasmedge", wasmedge_args @ common_args file argv
62+
| _ -> "node", extra_args_for_wasoo @ argv)
63+
| _ -> "node", extra_args_for_jsoo @ argv
3464
in
35-
Array.of_list (exe :: argv)
65+
exe', Array.of_list (exe :: argv)
3666
| [] -> assert false
3767

3868
let () =
@@ -45,4 +75,4 @@ let () =
4575
| _, WEXITED n -> exit n
4676
| _, WSIGNALED _ -> exit 9
4777
| _, WSTOPPED _ -> exit 9
48-
else Unix.execvpe "node" args env
78+
else Unix.execvpe exe args env

0 commit comments

Comments
 (0)