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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
let _ = Callback.register "array_of_list" Array.of_list
let _ = Callback.register "array_length" Array.length
type t
external create : unit -> t = "caml_binaryen_module_create"
external dispose : t -> unit = "caml_binaryen_module_dispose"
external add_custom_section : t -> string -> string -> unit
= "caml_binaryen_add_custom_section"
external parse : string -> t = "caml_binaryen_module_parse"
external print : t -> unit = "caml_binaryen_module_print"
external print_asmjs : t -> unit = "caml_binaryen_module_print_asmjs"
external validate : t -> int = "caml_binaryen_module_validate"
external optimize : t -> unit = "caml_binaryen_module_optimize"
external set_features : t -> int -> unit = "caml_binaryen_module_set_features"
let set_features wasm_mod features =
set_features wasm_mod (List.fold_left ( lor ) 0 features)
external get_optimize_level : unit -> int = "caml_binaryen_get_optimize_level"
external set_optimize_level : int -> unit = "caml_binaryen_set_optimize_level"
external get_shrink_level : unit -> int = "caml_binaryen_get_shrink_level"
external set_shrink_level : int -> unit = "caml_binaryen_set_shrink_level"
external get_debug_info : unit -> int = "caml_binaryen_get_debug_info"
external set_debug_info : int -> unit = "caml_binaryen_set_debug_info"
external get_low_memory_unused : unit -> int
= "caml_binaryen_get_low_memory_unused"
external set_low_memory_unused : int -> unit
= "caml_binaryen_set_low_memory_unused"
external get_pass_argument : string -> string
= "caml_binaryen_get_pass_argument"
external set_pass_argument : string -> string -> unit
= "caml_binaryen_set_pass_argument"
external get_always_inline_max_size : unit -> int
= "caml_binaryen_get_always_inline_max_size"
external set_always_inline_max_size : int -> unit
= "caml_binaryen_set_always_inline_max_size"
external get_flexible_inline_max_size : unit -> int
= "caml_binaryen_get_flexible_inline_max_size"
external set_flexible_inline_max_size : int -> unit
= "caml_binaryen_set_flexible_inline_max_size"
external get_one_caller_inline_max_size : unit -> int
= "caml_binaryen_get_one_caller_inline_max_size"
external set_one_caller_inline_max_size : int -> unit
= "caml_binaryen_set_one_caller_inline_max_size"
external run_passes : t -> string list -> unit
= "caml_binaryen_module_run_passes"
external auto_drop : t -> unit = "caml_binaryen_module_auto_drop"
external write : t -> string option -> bytes * string option
= "caml_binaryen_module_write"
external write_text : t -> string = "caml_binaryen_module_write_text"
external read : bytes -> t = "caml_binaryen_module_read"
external interpret : t -> unit = "caml_binaryen_module_interpret"
external add_debug_info_filename : t -> string -> int
= "caml_binaryen_module_add_debug_info_filename"
external get_debug_info_filename : t -> int -> string
= "caml_binaryen_module_get_debug_info_filename"