@grain/binaryen.ml 0.8.1 → 0.11.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- binaryen-archive/.gitignore +1 -0
- binaryen-archive/CHANGELOG.md +93 -0
- binaryen-archive/README.md +29 -11
- binaryen-archive/binaryen.opam +8 -8
- binaryen-archive/dune-project +1 -1
- binaryen-archive/dune-workspace +1 -1
- binaryen-archive/esy.lock/index.json +537 -460
- binaryen-archive/esy.lock/opam/{base.v0.14.1 → base.v0.14.2}/opam +4 -4
- binaryen-archive/esy.lock/opam/biniou.1.2.1/opam +1 -1
- binaryen-archive/esy.lock/opam/{cppo.1.6.7 → cppo.1.6.8}/opam +4 -6
- binaryen-archive/esy.lock/opam/{csexp.1.4.0 → csexp.1.5.1}/opam +11 -9
- binaryen-archive/esy.lock/opam/{dune-build-info.2.8.2 → dune-build-info.2.9.1}/opam +5 -5
- binaryen-archive/esy.lock/opam/{dune-configurator.2.8.2 → dune-configurator.2.9.1}/opam +5 -5
- binaryen-archive/esy.lock/opam/{dune.2.8.2 → dune.2.9.1}/opam +4 -4
- binaryen-archive/esy.lock/opam/easy-format.1.3.2/opam +1 -1
- binaryen-archive/esy.lock/opam/{fix.20201120 → fix.20211231}/opam +7 -5
- binaryen-archive/esy.lock/opam/js_of_ocaml-compiler.3.11.0/opam +54 -0
- binaryen-archive/esy.lock/opam/js_of_ocaml-ppx.3.11.0/opam +44 -0
- binaryen-archive/esy.lock/opam/js_of_ocaml.3.11.0/opam +45 -0
- binaryen-archive/esy.lock/opam/{menhir.20201216 → menhir.20211128}/opam +8 -6
- binaryen-archive/esy.lock/opam/{menhirLib.20201216 → menhirLib.20211128}/opam +8 -6
- binaryen-archive/esy.lock/opam/{menhirSdk.20201216 → menhirSdk.20211128}/opam +8 -6
- binaryen-archive/esy.lock/opam/ocaml-compiler-libs.v0.12.4/opam +39 -0
- binaryen-archive/esy.lock/opam/{ocaml-lsp-server.1.4.0 → ocaml-lsp-server.1.9.0}/opam +15 -12
- binaryen-archive/esy.lock/opam/{ocaml-migrate-parsetree.2.1.0 → ocaml-migrate-parsetree.2.3.0}/opam +13 -10
- binaryen-archive/esy.lock/opam/ocaml-version.3.4.0/opam +49 -0
- binaryen-archive/esy.lock/opam/ocamlbuild.0.14.0/opam +1 -1
- binaryen-archive/esy.lock/opam/{ocamlfind.1.8.1 → ocamlfind.1.9.1}/opam +19 -39
- binaryen-archive/esy.lock/opam/ocamlformat-rpc-lib.0.19.0/opam +40 -0
- binaryen-archive/esy.lock/opam/ocamlformat.0.18.0/opam +56 -0
- binaryen-archive/esy.lock/opam/{odoc.1.5.2 → odoc.1.5.3}/opam +12 -12
- binaryen-archive/esy.lock/opam/pp.1.1.2/opam +58 -0
- binaryen-archive/esy.lock/opam/ppx_derivers.1.2.1/opam +1 -1
- binaryen-archive/esy.lock/opam/ppx_yojson_conv_lib.v0.14.0/opam +2 -2
- binaryen-archive/esy.lock/opam/{ppxlib.0.21.0 → ppxlib.0.22.2}/opam +40 -32
- binaryen-archive/esy.lock/opam/{re.1.9.0 → re.1.10.3}/opam +8 -4
- binaryen-archive/esy.lock/opam/result.1.5/opam +2 -2
- binaryen-archive/esy.lock/opam/sexplib0.v0.14.0/opam +2 -2
- binaryen-archive/esy.lock/opam/spawn.v0.15.0/opam +56 -0
- binaryen-archive/esy.lock/opam/stdio.v0.14.0/opam +2 -2
- binaryen-archive/esy.lock/opam/{topkg.1.0.3 → topkg.1.0.4}/opam +18 -22
- binaryen-archive/esy.lock/opam/tyxml.4.5.0/opam +42 -0
- binaryen-archive/esy.lock/opam/uucp.14.0.0/opam +41 -0
- binaryen-archive/esy.lock/opam/{uuseg.13.0.0 → uuseg.14.0.0}/opam +22 -28
- binaryen-archive/esy.lock/opam/yojson.1.7.0/opam +1 -1
- binaryen-archive/esy.lock/overrides/{opam__s__ocamlfind_opam__c__1.8.1_opam_override/files/findlib-1.8.1.patch → opam__s__ocamlfind_opam__c__1.9.1_opam_override/files/findlib-1.9.1.patch} +0 -0
- binaryen-archive/esy.lock/overrides/{opam__s__ocamlfind_opam__c__1.8.1_opam_override → opam__s__ocamlfind_opam__c__1.9.1_opam_override}/package.json +1 -1
- binaryen-archive/js/binaryen.es5.js +5 -0
- binaryen-archive/js/dune +4 -6
- binaryen-archive/js/element_segment.ml +33 -0
- binaryen-archive/js/export.ml +37 -0
- binaryen-archive/js/expression.ml +935 -178
- binaryen-archive/js/function.ml +31 -0
- binaryen-archive/js/global.ml +29 -0
- binaryen-archive/js/import.ml +24 -0
- binaryen-archive/js/literal.ml +8 -4
- binaryen-archive/js/module.ml +40 -64
- binaryen-archive/js/op.ml +9 -78
- binaryen-archive/js/settings.ml +60 -0
- binaryen-archive/js/stubs.c +15 -0
- binaryen-archive/js/table.ml +29 -0
- binaryen-archive/js/type.ml +3 -0
- binaryen-archive/package.json +15 -21
- binaryen-archive/src/binaryen_stubs_exports.c +78 -0
- binaryen-archive/src/binaryen_stubs_expressions.c +1300 -0
- binaryen-archive/src/binaryen_stubs_features.c +7 -0
- binaryen-archive/src/binaryen_stubs_functions.c +78 -0
- binaryen-archive/src/binaryen_stubs_globals.c +63 -0
- binaryen-archive/src/binaryen_stubs_imports.c +29 -0
- binaryen-archive/src/binaryen_stubs_memory.c +1 -1
- binaryen-archive/src/binaryen_stubs_modules.c +0 -122
- binaryen-archive/src/binaryen_stubs_ops.c +19 -173
- binaryen-archive/src/binaryen_stubs_settings.c +145 -0
- binaryen-archive/src/binaryen_stubs_tables.c +145 -0
- binaryen-archive/src/binaryen_stubs_types.c +18 -0
- binaryen-archive/src/dune +5 -43
- binaryen-archive/src/element_segment.ml +13 -0
- binaryen-archive/src/export.ml +33 -0
- binaryen-archive/src/expression.ml +808 -73
- binaryen-archive/src/function.ml +18 -0
- binaryen-archive/src/global.ml +14 -0
- binaryen-archive/src/import.ml +12 -0
- binaryen-archive/src/literal.ml +2 -2
- binaryen-archive/src/module.ml +62 -38
- binaryen-archive/src/ocaml_helpers.c +0 -8
- binaryen-archive/src/ocaml_helpers.h +2 -3
- binaryen-archive/src/op.ml +18 -131
- binaryen-archive/src/settings.ml +45 -0
- binaryen-archive/src/table.ml +26 -0
- binaryen-archive/src/type.ml +2 -0
- binaryen-archive/test/config/dune +8 -0
- binaryen-archive/test/config/ocamlopt_flags.ml +16 -0
- binaryen-archive/test/dune +6 -9
- binaryen-archive/test/test.expected +76 -0
- binaryen-archive/test/test.ml +110 -8
- binaryen-archive/virtual/dune +2 -2
- binaryen-archive/virtual/element_segment.mli +11 -0
- binaryen-archive/virtual/export.mli +22 -0
- binaryen-archive/virtual/expression.mli +389 -33
- binaryen-archive/virtual/function.mli +16 -0
- binaryen-archive/virtual/global.mli +12 -0
- binaryen-archive/virtual/import.mli +8 -0
- binaryen-archive/virtual/literal.mli +2 -2
- binaryen-archive/virtual/module.mli +25 -27
- binaryen-archive/virtual/op.mli +9 -53
- binaryen-archive/virtual/settings.mli +35 -0
- binaryen-archive/virtual/table.mli +19 -0
- binaryen-archive/virtual/type.mli +2 -0
- binaryen-archive/esy.lock/opam/conf-m4.1/opam +0 -22
- binaryen-archive/esy.lock/opam/dot-merlin-reader.4.1/opam +0 -30
- binaryen-archive/esy.lock/opam/js_of_ocaml-compiler.3.9.1/opam +0 -40
- binaryen-archive/esy.lock/opam/js_of_ocaml-ppx.3.9.0/opam +0 -30
- binaryen-archive/esy.lock/opam/js_of_ocaml.3.9.0/opam +0 -31
- binaryen-archive/esy.lock/opam/ocaml-compiler-libs.v0.12.3/opam +0 -29
- binaryen-archive/esy.lock/opam/ocamlfind.1.8.1/files/ocaml-stub +0 -4
- binaryen-archive/esy.lock/opam/ocamlfind.1.8.1/files/ocamlfind.install +0 -6
- binaryen-archive/esy.lock/opam/ocamlformat.0.15.1/opam +0 -41
- binaryen-archive/esy.lock/opam/tyxml.4.4.0/opam +0 -47
- binaryen-archive/esy.lock/opam/uucp.13.0.0/opam +0 -44
- binaryen-archive/esy.lock/overrides/opam__s__conf_m4_opam__c__1_opam_override/package.json +0 -6
- binaryen-archive/js/features.ml +0 -27
- binaryen-archive/js/function_table.ml +0 -11
- binaryen-archive/src/binaryen_stubs_function_tables.c +0 -25
- binaryen-archive/src/config/dune +0 -8
- binaryen-archive/src/config/library_flags.ml +0 -17
- binaryen-archive/src/features.ml +0 -49
- binaryen-archive/src/function_table.ml +0 -4
- binaryen-archive/vendor/binaryen-c.h +0 -2647
- binaryen-archive/vendor/js/index.es5.js +0 -5
- binaryen-archive/vendor/linux/libbinaryen.a +0 -0
- binaryen-archive/vendor/linux/libbinaryen.so +0 -0
- binaryen-archive/vendor/macosx/libbinaryen.a +0 -0
- binaryen-archive/vendor/macosx/libbinaryen.dylib +0 -0
- binaryen-archive/vendor/mingw64/libbinaryen.a +0 -0
- binaryen-archive/vendor/mingw64/libbinaryen.dll +0 -0
- binaryen-archive/vendor/wasm-delegations.h +0 -85
- binaryen-archive/virtual/features.mli +0 -23
- binaryen-archive/virtual/function_table.mli +0 -2
|
@@ -1,109 +1,844 @@
|
|
|
1
1
|
type t
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
3
|
+
type kind =
|
|
4
|
+
| Invalid
|
|
5
|
+
| Nop
|
|
6
|
+
| Block
|
|
7
|
+
| If
|
|
8
|
+
| Loop
|
|
9
|
+
| Break
|
|
10
|
+
| Switch
|
|
11
|
+
| Call
|
|
12
|
+
| CallIndirect
|
|
13
|
+
| LocalGet
|
|
14
|
+
| LocalSet
|
|
15
|
+
| GlobalGet
|
|
16
|
+
| GlobalSet
|
|
17
|
+
| Load
|
|
18
|
+
| Store
|
|
19
|
+
| AtomicRMW
|
|
20
|
+
| AtomicCmpxchg
|
|
21
|
+
| AtomicWait
|
|
22
|
+
| AtomicNotify
|
|
23
|
+
| AtomicFence
|
|
24
|
+
| SIMDExtract
|
|
25
|
+
| SIMDReplace
|
|
26
|
+
| SIMDShuffle
|
|
27
|
+
| SIMDTernary
|
|
28
|
+
| SIMDShift
|
|
29
|
+
| SIMDLoad
|
|
30
|
+
| SIMDLoadStoreLane
|
|
31
|
+
| MemoryInit
|
|
32
|
+
| DataDrop
|
|
33
|
+
| MemoryCopy
|
|
34
|
+
| MemoryFill
|
|
35
|
+
| Const
|
|
36
|
+
| Unary
|
|
37
|
+
| Binary
|
|
38
|
+
| Select
|
|
39
|
+
| Drop
|
|
40
|
+
| Return
|
|
41
|
+
| MemorySize
|
|
42
|
+
| MemoryGrow
|
|
43
|
+
| Unreachable
|
|
44
|
+
| Pop
|
|
45
|
+
| RefNull
|
|
46
|
+
| RefIs
|
|
47
|
+
| RefFunc
|
|
48
|
+
| RefEq
|
|
49
|
+
| Try
|
|
50
|
+
| Throw
|
|
51
|
+
| Rethrow
|
|
52
|
+
| TupleMake
|
|
53
|
+
| TupleExtract
|
|
54
|
+
| I31New
|
|
55
|
+
| I31Get
|
|
56
|
+
| CallRef
|
|
57
|
+
| RefTest
|
|
58
|
+
| RefCast
|
|
59
|
+
| BrOn
|
|
60
|
+
| RttCanon
|
|
61
|
+
| RttSub
|
|
62
|
+
| StructNew
|
|
63
|
+
| StructGet
|
|
64
|
+
| StructSet
|
|
65
|
+
| ArrayNew
|
|
66
|
+
| ArrayGet
|
|
67
|
+
| ArraySet
|
|
68
|
+
| ArrayLen
|
|
69
|
+
| RefAs
|
|
7
70
|
|
|
8
|
-
external
|
|
9
|
-
(** Module, condition, true branch, false branch. False branch may be null. *)
|
|
71
|
+
external get_id : t -> int = "caml_binaryen_expression_get_id"
|
|
10
72
|
|
|
11
|
-
external
|
|
12
|
-
(** Module, loop name, body. *)
|
|
73
|
+
external id_invalid : unit -> int = "caml_binaryen_expression_id_invalid"
|
|
13
74
|
|
|
14
|
-
|
|
15
|
-
(** Module, block name, condition, result. Value and condition may be null. *)
|
|
75
|
+
let id_invalid = id_invalid ()
|
|
16
76
|
|
|
17
|
-
external
|
|
18
|
-
= "caml_binaryen_switch"
|
|
19
|
-
(** Module, branch names, default branch name, condition, value. Value may be null. *)
|
|
77
|
+
external id_nop : unit -> int = "caml_binaryen_expression_id_nop"
|
|
20
78
|
|
|
21
|
-
|
|
22
|
-
= "caml_binaryen_call"
|
|
23
|
-
(** Module, function name, params, return type. *)
|
|
79
|
+
let id_nop = id_nop ()
|
|
24
80
|
|
|
25
|
-
external
|
|
26
|
-
= "caml_binaryen_call_indirect__bytecode" "caml_binaryen_call_indirect"
|
|
27
|
-
(** Module, table, function value, params, params type, return type. *)
|
|
81
|
+
external id_block : unit -> int = "caml_binaryen_expression_id_block"
|
|
28
82
|
|
|
29
|
-
|
|
30
|
-
= "caml_binaryen_return_call"
|
|
31
|
-
(** Module, function name, params, return type. *)
|
|
83
|
+
let id_block = id_block ()
|
|
32
84
|
|
|
33
|
-
external
|
|
34
|
-
= "caml_binaryen_return_call_indirect__bytecode" "caml_binaryen_return_call_indirect"
|
|
35
|
-
(** Module, table, function value, params, params type, return type. *)
|
|
85
|
+
external id_if : unit -> int = "caml_binaryen_expression_id_if"
|
|
36
86
|
|
|
37
|
-
|
|
38
|
-
(** Module, slot, type. *)
|
|
87
|
+
let id_if = id_if ()
|
|
39
88
|
|
|
40
|
-
external
|
|
41
|
-
(** Module, slot, value. *)
|
|
89
|
+
external id_loop : unit -> int = "caml_binaryen_expression_id_loop"
|
|
42
90
|
|
|
43
|
-
|
|
44
|
-
= "caml_binaryen_local_tee"
|
|
45
|
-
(** Module, slot, value, type. *)
|
|
91
|
+
let id_loop = id_loop ()
|
|
46
92
|
|
|
47
|
-
external
|
|
48
|
-
= "caml_binaryen_global_get"
|
|
49
|
-
(** Module, name, type. *)
|
|
93
|
+
external id_break : unit -> int = "caml_binaryen_expression_id_break"
|
|
50
94
|
|
|
51
|
-
|
|
52
|
-
(** Module, name, value. *)
|
|
95
|
+
let id_break = id_break ()
|
|
53
96
|
|
|
54
|
-
external
|
|
55
|
-
= "caml_binaryen_load__bytecode" "caml_binaryen_load"
|
|
56
|
-
let load wasm_mod bytes ?(signed=false) offset align ty ptr =
|
|
57
|
-
load wasm_mod bytes signed offset align ty ptr
|
|
58
|
-
(** Module, num_bytes, ?signed, offset, align, type, ptr. *)
|
|
97
|
+
external id_switch : unit -> int = "caml_binaryen_expression_id_switch"
|
|
59
98
|
|
|
60
|
-
|
|
61
|
-
= "caml_binaryen_store__bytecode" "caml_binaryen_store"
|
|
62
|
-
(** Module, num_bytes, offset, align, ptr, value, type. *)
|
|
99
|
+
let id_switch = id_switch ()
|
|
63
100
|
|
|
64
|
-
external
|
|
101
|
+
external id_call : unit -> int = "caml_binaryen_expression_id_call"
|
|
65
102
|
|
|
66
|
-
|
|
103
|
+
let id_call = id_call ()
|
|
67
104
|
|
|
68
|
-
external
|
|
105
|
+
external id_call_indirect : unit -> int
|
|
106
|
+
= "caml_binaryen_expression_id_call_indirect"
|
|
69
107
|
|
|
70
|
-
|
|
71
|
-
let select wasm_mod cond tru fals =
|
|
72
|
-
select wasm_mod cond tru fals Type.auto
|
|
73
|
-
(** Module, condition, true branch, false branch. *)
|
|
108
|
+
let id_call_indirect = id_call_indirect ()
|
|
74
109
|
|
|
75
|
-
external
|
|
110
|
+
external id_local_get : unit -> int = "caml_binaryen_expression_id_local_get"
|
|
76
111
|
|
|
77
|
-
|
|
112
|
+
let id_local_get = id_local_get ()
|
|
78
113
|
|
|
79
|
-
external
|
|
114
|
+
external id_local_set : unit -> int = "caml_binaryen_expression_id_local_set"
|
|
80
115
|
|
|
81
|
-
|
|
116
|
+
let id_local_set = id_local_set ()
|
|
82
117
|
|
|
83
|
-
external
|
|
118
|
+
external id_global_get : unit -> int = "caml_binaryen_expression_id_global_get"
|
|
84
119
|
|
|
85
|
-
|
|
120
|
+
let id_global_get = id_global_get ()
|
|
86
121
|
|
|
87
|
-
external
|
|
88
|
-
= "caml_binaryen_memory_copy"
|
|
89
|
-
(** Module, destination, source, size. *)
|
|
122
|
+
external id_global_set : unit -> int = "caml_binaryen_expression_id_global_set"
|
|
90
123
|
|
|
91
|
-
|
|
92
|
-
= "caml_binaryen_memory_fill"
|
|
93
|
-
(** Module, destination, value, size. *)
|
|
124
|
+
let id_global_set = id_global_set ()
|
|
94
125
|
|
|
95
|
-
external
|
|
96
|
-
(** Module, items *)
|
|
126
|
+
external id_load : unit -> int = "caml_binaryen_expression_id_load"
|
|
97
127
|
|
|
98
|
-
|
|
99
|
-
= "caml_binaryen_tuple_extract"
|
|
100
|
-
(** Module, tuple, index *)
|
|
128
|
+
let id_load = id_load ()
|
|
101
129
|
|
|
102
|
-
external
|
|
103
|
-
(** Module, type *)
|
|
130
|
+
external id_store : unit -> int = "caml_binaryen_expression_id_store"
|
|
104
131
|
|
|
105
|
-
|
|
106
|
-
|
|
132
|
+
let id_store = id_store ()
|
|
133
|
+
|
|
134
|
+
external id_atomic_rmw : unit -> int = "caml_binaryen_expression_id_atomic_rmw"
|
|
135
|
+
|
|
136
|
+
let id_atomic_rmw = id_atomic_rmw ()
|
|
137
|
+
|
|
138
|
+
external id_atomic_cmpxchg : unit -> int
|
|
139
|
+
= "caml_binaryen_expression_id_atomic_cmpxchg"
|
|
140
|
+
|
|
141
|
+
let id_atomic_cmpxchg = id_atomic_cmpxchg ()
|
|
142
|
+
|
|
143
|
+
external id_atomic_wait : unit -> int
|
|
144
|
+
= "caml_binaryen_expression_id_atomic_wait"
|
|
145
|
+
|
|
146
|
+
let id_atomic_wait = id_atomic_wait ()
|
|
147
|
+
|
|
148
|
+
external id_atomic_notify : unit -> int
|
|
149
|
+
= "caml_binaryen_expression_id_atomic_notify"
|
|
150
|
+
|
|
151
|
+
let id_atomic_notify = id_atomic_notify ()
|
|
152
|
+
|
|
153
|
+
external id_atomic_fence : unit -> int
|
|
154
|
+
= "caml_binaryen_expression_id_atomic_fence"
|
|
155
|
+
|
|
156
|
+
let id_atomic_fence = id_atomic_fence ()
|
|
157
|
+
|
|
158
|
+
external id_simd_extract : unit -> int
|
|
159
|
+
= "caml_binaryen_expression_id_simd_extract"
|
|
160
|
+
|
|
161
|
+
let id_simd_extract = id_simd_extract ()
|
|
162
|
+
|
|
163
|
+
external id_simd_replace : unit -> int
|
|
164
|
+
= "caml_binaryen_expression_id_simd_replace"
|
|
165
|
+
|
|
166
|
+
let id_simd_replace = id_simd_replace ()
|
|
167
|
+
|
|
168
|
+
external id_simd_shuffle : unit -> int
|
|
169
|
+
= "caml_binaryen_expression_id_simd_shuffle"
|
|
170
|
+
|
|
171
|
+
let id_simd_shuffle = id_simd_shuffle ()
|
|
172
|
+
|
|
173
|
+
external id_simd_ternary : unit -> int
|
|
174
|
+
= "caml_binaryen_expression_id_simd_ternary"
|
|
175
|
+
|
|
176
|
+
let id_simd_ternary = id_simd_ternary ()
|
|
177
|
+
|
|
178
|
+
external id_simd_shift : unit -> int = "caml_binaryen_expression_id_simd_shift"
|
|
179
|
+
|
|
180
|
+
let id_simd_shift = id_simd_shift ()
|
|
181
|
+
|
|
182
|
+
external id_simd_load : unit -> int = "caml_binaryen_expression_id_simd_load"
|
|
183
|
+
|
|
184
|
+
let id_simd_load = id_simd_load ()
|
|
185
|
+
|
|
186
|
+
external id_simd_load_store_lane : unit -> int
|
|
187
|
+
= "caml_binaryen_expression_id_simd_load_store_lane"
|
|
188
|
+
|
|
189
|
+
let id_simd_load_store_lane = id_simd_load_store_lane ()
|
|
190
|
+
|
|
191
|
+
external id_memory_init : unit -> int
|
|
192
|
+
= "caml_binaryen_expression_id_memory_init"
|
|
193
|
+
|
|
194
|
+
let id_memory_init = id_memory_init ()
|
|
195
|
+
|
|
196
|
+
external id_data_drop : unit -> int = "caml_binaryen_expression_id_data_drop"
|
|
197
|
+
|
|
198
|
+
let id_data_drop = id_data_drop ()
|
|
199
|
+
|
|
200
|
+
external id_memory_copy : unit -> int
|
|
201
|
+
= "caml_binaryen_expression_id_memory_copy"
|
|
202
|
+
|
|
203
|
+
let id_memory_copy = id_memory_copy ()
|
|
204
|
+
|
|
205
|
+
external id_memory_fill : unit -> int
|
|
206
|
+
= "caml_binaryen_expression_id_memory_fill"
|
|
207
|
+
|
|
208
|
+
let id_memory_fill = id_memory_fill ()
|
|
209
|
+
|
|
210
|
+
external id_const : unit -> int = "caml_binaryen_expression_id_const"
|
|
211
|
+
|
|
212
|
+
let id_const = id_const ()
|
|
213
|
+
|
|
214
|
+
external id_unary : unit -> int = "caml_binaryen_expression_id_unary"
|
|
215
|
+
|
|
216
|
+
let id_unary = id_unary ()
|
|
217
|
+
|
|
218
|
+
external id_binary : unit -> int = "caml_binaryen_expression_id_binary"
|
|
219
|
+
|
|
220
|
+
let id_binary = id_binary ()
|
|
221
|
+
|
|
222
|
+
external id_select : unit -> int = "caml_binaryen_expression_id_select"
|
|
223
|
+
|
|
224
|
+
let id_select = id_select ()
|
|
225
|
+
|
|
226
|
+
external id_drop : unit -> int = "caml_binaryen_expression_id_drop"
|
|
227
|
+
|
|
228
|
+
let id_drop = id_drop ()
|
|
229
|
+
|
|
230
|
+
external id_return : unit -> int = "caml_binaryen_expression_id_return"
|
|
231
|
+
|
|
232
|
+
let id_return = id_return ()
|
|
233
|
+
|
|
234
|
+
external id_memory_size : unit -> int
|
|
235
|
+
= "caml_binaryen_expression_id_memory_size"
|
|
236
|
+
|
|
237
|
+
let id_memory_size = id_memory_size ()
|
|
238
|
+
|
|
239
|
+
external id_memory_grow : unit -> int
|
|
240
|
+
= "caml_binaryen_expression_id_memory_grow"
|
|
241
|
+
|
|
242
|
+
let id_memory_grow = id_memory_grow ()
|
|
243
|
+
|
|
244
|
+
external id_unreachable : unit -> int
|
|
245
|
+
= "caml_binaryen_expression_id_unreachable"
|
|
246
|
+
|
|
247
|
+
let id_unreachable = id_unreachable ()
|
|
248
|
+
|
|
249
|
+
external id_pop : unit -> int = "caml_binaryen_expression_id_pop"
|
|
250
|
+
|
|
251
|
+
let id_pop = id_pop ()
|
|
252
|
+
|
|
253
|
+
external id_ref_null : unit -> int = "caml_binaryen_expression_id_ref_null"
|
|
254
|
+
|
|
255
|
+
let id_ref_null = id_ref_null ()
|
|
256
|
+
|
|
257
|
+
external id_ref_is : unit -> int = "caml_binaryen_expression_id_ref_is"
|
|
258
|
+
|
|
259
|
+
let id_ref_is = id_ref_is ()
|
|
260
|
+
|
|
261
|
+
external id_ref_func : unit -> int = "caml_binaryen_expression_id_ref_func"
|
|
262
|
+
|
|
263
|
+
let id_ref_func = id_ref_func ()
|
|
264
|
+
|
|
265
|
+
external id_ref_eq : unit -> int = "caml_binaryen_expression_id_ref_eq"
|
|
266
|
+
|
|
267
|
+
let id_ref_eq = id_ref_eq ()
|
|
268
|
+
|
|
269
|
+
external id_try : unit -> int = "caml_binaryen_expression_id_try"
|
|
270
|
+
|
|
271
|
+
let id_try = id_try ()
|
|
272
|
+
|
|
273
|
+
external id_throw : unit -> int = "caml_binaryen_expression_id_throw"
|
|
274
|
+
|
|
275
|
+
let id_throw = id_throw ()
|
|
276
|
+
|
|
277
|
+
external id_rethrow : unit -> int = "caml_binaryen_expression_id_rethrow"
|
|
278
|
+
|
|
279
|
+
let id_rethrow = id_rethrow ()
|
|
280
|
+
|
|
281
|
+
external id_tuple_make : unit -> int = "caml_binaryen_expression_id_tuple_make"
|
|
282
|
+
|
|
283
|
+
let id_tuple_make = id_tuple_make ()
|
|
284
|
+
|
|
285
|
+
external id_tuple_extract : unit -> int
|
|
286
|
+
= "caml_binaryen_expression_id_tuple_extract"
|
|
287
|
+
|
|
288
|
+
let id_tuple_extract = id_tuple_extract ()
|
|
289
|
+
|
|
290
|
+
external id_i31_new : unit -> int = "caml_binaryen_expression_id_i31_new"
|
|
291
|
+
|
|
292
|
+
let id_i31_new = id_i31_new ()
|
|
293
|
+
|
|
294
|
+
external id_i31_get : unit -> int = "caml_binaryen_expression_id_i31_get"
|
|
295
|
+
|
|
296
|
+
let id_i31_get = id_i31_get ()
|
|
297
|
+
|
|
298
|
+
external id_call_ref : unit -> int = "caml_binaryen_expression_id_call_ref"
|
|
299
|
+
|
|
300
|
+
let id_call_ref = id_call_ref ()
|
|
301
|
+
|
|
302
|
+
external id_ref_test : unit -> int = "caml_binaryen_expression_id_ref_test"
|
|
303
|
+
|
|
304
|
+
let id_ref_test = id_ref_test ()
|
|
305
|
+
|
|
306
|
+
external id_ref_cast : unit -> int = "caml_binaryen_expression_id_ref_cast"
|
|
307
|
+
|
|
308
|
+
let id_ref_cast = id_ref_cast ()
|
|
309
|
+
|
|
310
|
+
external id_br_on : unit -> int = "caml_binaryen_expression_id_br_on"
|
|
311
|
+
|
|
312
|
+
let id_br_on = id_br_on ()
|
|
313
|
+
|
|
314
|
+
external id_rtt_canon : unit -> int = "caml_binaryen_expression_id_rtt_canon"
|
|
315
|
+
|
|
316
|
+
let id_rtt_canon = id_rtt_canon ()
|
|
317
|
+
|
|
318
|
+
external id_rtt_sub : unit -> int = "caml_binaryen_expression_id_rtt_sub"
|
|
319
|
+
|
|
320
|
+
let id_rtt_sub = id_rtt_sub ()
|
|
321
|
+
|
|
322
|
+
external id_struct_new : unit -> int = "caml_binaryen_expression_id_struct_new"
|
|
323
|
+
|
|
324
|
+
let id_struct_new = id_struct_new ()
|
|
325
|
+
|
|
326
|
+
external id_struct_get : unit -> int = "caml_binaryen_expression_id_struct_get"
|
|
327
|
+
|
|
328
|
+
let id_struct_get = id_struct_get ()
|
|
329
|
+
|
|
330
|
+
external id_struct_set : unit -> int = "caml_binaryen_expression_id_struct_set"
|
|
331
|
+
|
|
332
|
+
let id_struct_set = id_struct_set ()
|
|
333
|
+
|
|
334
|
+
external id_array_new : unit -> int = "caml_binaryen_expression_id_array_new"
|
|
335
|
+
|
|
336
|
+
let id_array_new = id_array_new ()
|
|
337
|
+
|
|
338
|
+
external id_array_get : unit -> int = "caml_binaryen_expression_id_array_get"
|
|
339
|
+
|
|
340
|
+
let id_array_get = id_array_get ()
|
|
341
|
+
|
|
342
|
+
external id_array_set : unit -> int = "caml_binaryen_expression_id_array_set"
|
|
343
|
+
|
|
344
|
+
let id_array_set = id_array_set ()
|
|
345
|
+
|
|
346
|
+
external id_array_len : unit -> int = "caml_binaryen_expression_id_array_len"
|
|
347
|
+
|
|
348
|
+
let id_array_len = id_array_len ()
|
|
349
|
+
|
|
350
|
+
external id_ref_as : unit -> int = "caml_binaryen_expression_id_ref_as"
|
|
351
|
+
|
|
352
|
+
let id_ref_as = id_ref_as ()
|
|
353
|
+
|
|
354
|
+
let get_kind expr =
|
|
355
|
+
let id = get_id expr in
|
|
356
|
+
match id with
|
|
357
|
+
| n when n = id_invalid -> Invalid
|
|
358
|
+
| n when n = id_nop -> Nop
|
|
359
|
+
| n when n = id_block -> Block
|
|
360
|
+
| n when n = id_if -> If
|
|
361
|
+
| n when n = id_loop -> Loop
|
|
362
|
+
| n when n = id_break -> Break
|
|
363
|
+
| n when n = id_switch -> Switch
|
|
364
|
+
| n when n = id_call -> Call
|
|
365
|
+
| n when n = id_call_indirect -> CallIndirect
|
|
366
|
+
| n when n = id_local_get -> LocalGet
|
|
367
|
+
| n when n = id_local_set -> LocalSet
|
|
368
|
+
| n when n = id_global_get -> GlobalGet
|
|
369
|
+
| n when n = id_global_set -> GlobalSet
|
|
370
|
+
| n when n = id_load -> Load
|
|
371
|
+
| n when n = id_store -> Store
|
|
372
|
+
| n when n = id_atomic_rmw -> AtomicRMW
|
|
373
|
+
| n when n = id_atomic_cmpxchg -> AtomicCmpxchg
|
|
374
|
+
| n when n = id_atomic_wait -> AtomicWait
|
|
375
|
+
| n when n = id_atomic_notify -> AtomicNotify
|
|
376
|
+
| n when n = id_atomic_fence -> AtomicFence
|
|
377
|
+
| n when n = id_simd_extract -> SIMDExtract
|
|
378
|
+
| n when n = id_simd_replace -> SIMDReplace
|
|
379
|
+
| n when n = id_simd_shuffle -> SIMDShuffle
|
|
380
|
+
| n when n = id_simd_ternary -> SIMDTernary
|
|
381
|
+
| n when n = id_simd_shift -> SIMDShift
|
|
382
|
+
| n when n = id_simd_load -> SIMDLoad
|
|
383
|
+
| n when n = id_simd_load_store_lane -> SIMDLoadStoreLane
|
|
384
|
+
| n when n = id_memory_init -> MemoryInit
|
|
385
|
+
| n when n = id_data_drop -> DataDrop
|
|
386
|
+
| n when n = id_memory_copy -> MemoryCopy
|
|
387
|
+
| n when n = id_memory_fill -> MemoryFill
|
|
388
|
+
| n when n = id_const -> Const
|
|
389
|
+
| n when n = id_unary -> Unary
|
|
390
|
+
| n when n = id_binary -> Binary
|
|
391
|
+
| n when n = id_select -> Select
|
|
392
|
+
| n when n = id_drop -> Drop
|
|
393
|
+
| n when n = id_return -> Return
|
|
394
|
+
| n when n = id_memory_size -> MemorySize
|
|
395
|
+
| n when n = id_memory_grow -> MemoryGrow
|
|
396
|
+
| n when n = id_unreachable -> Unreachable
|
|
397
|
+
| n when n = id_pop -> Pop
|
|
398
|
+
| n when n = id_ref_null -> RefNull
|
|
399
|
+
| n when n = id_ref_is -> RefIs
|
|
400
|
+
| n when n = id_ref_func -> RefFunc
|
|
401
|
+
| n when n = id_ref_eq -> RefEq
|
|
402
|
+
| n when n = id_try -> Try
|
|
403
|
+
| n when n = id_throw -> Throw
|
|
404
|
+
| n when n = id_rethrow -> Rethrow
|
|
405
|
+
| n when n = id_tuple_make -> TupleMake
|
|
406
|
+
| n when n = id_tuple_extract -> TupleExtract
|
|
407
|
+
| n when n = id_i31_new -> I31New
|
|
408
|
+
| n when n = id_i31_get -> I31Get
|
|
409
|
+
| n when n = id_call_ref -> CallRef
|
|
410
|
+
| n when n = id_ref_test -> RefTest
|
|
411
|
+
| n when n = id_ref_cast -> RefCast
|
|
412
|
+
| n when n = id_br_on -> BrOn
|
|
413
|
+
| n when n = id_rtt_canon -> RttCanon
|
|
414
|
+
| n when n = id_rtt_sub -> RttSub
|
|
415
|
+
| n when n = id_struct_new -> StructNew
|
|
416
|
+
| n when n = id_struct_get -> StructGet
|
|
417
|
+
| n when n = id_struct_set -> StructSet
|
|
418
|
+
| n when n = id_array_new -> ArrayNew
|
|
419
|
+
| n when n = id_array_get -> ArrayGet
|
|
420
|
+
| n when n = id_array_set -> ArraySet
|
|
421
|
+
| n when n = id_array_len -> ArrayLen
|
|
422
|
+
| n when n = id_ref_as -> RefAs
|
|
423
|
+
| _ -> failwith "unknown expression kind"
|
|
107
424
|
|
|
108
425
|
external print : t -> unit = "caml_binaryen_expression_print"
|
|
109
426
|
(** Print an expression to the console. *)
|
|
427
|
+
|
|
428
|
+
external finalize : t -> unit = "caml_binaryen_expression_finalize"
|
|
429
|
+
|
|
430
|
+
external copy : t -> Module.t -> t = "caml_binaryen_expression_copy"
|
|
431
|
+
|
|
432
|
+
(** Expression manipulation *)
|
|
433
|
+
|
|
434
|
+
module Block = struct
|
|
435
|
+
external make : Module.t -> string -> t list -> Type.t -> t
|
|
436
|
+
= "caml_binaryen_block"
|
|
437
|
+
(** Module, block name, expression list. *)
|
|
438
|
+
|
|
439
|
+
let make ?(return_type = Type.auto) wasm_mod name exprs =
|
|
440
|
+
make wasm_mod name exprs return_type
|
|
441
|
+
|
|
442
|
+
external get_name : t -> string option = "caml_binaryen_block_get_name"
|
|
443
|
+
|
|
444
|
+
external set_name : t -> string -> unit = "caml_binaryen_block_set_name"
|
|
445
|
+
|
|
446
|
+
external get_num_children : t -> int = "caml_binaryen_block_get_num_children"
|
|
447
|
+
|
|
448
|
+
external get_child_at : t -> int -> t = "caml_binaryen_block_get_child_at"
|
|
449
|
+
|
|
450
|
+
external set_child_at : t -> int -> t -> unit
|
|
451
|
+
= "caml_binaryen_block_set_child_at"
|
|
452
|
+
|
|
453
|
+
external append_child : t -> t -> int = "caml_binaryen_block_append_child"
|
|
454
|
+
|
|
455
|
+
external insert_child_at : t -> int -> t -> unit
|
|
456
|
+
= "caml_binaryen_block_insert_child_at"
|
|
457
|
+
|
|
458
|
+
external remove_child_at : t -> int -> t
|
|
459
|
+
= "caml_binaryen_block_remove_child_at"
|
|
460
|
+
end
|
|
461
|
+
|
|
462
|
+
module If = struct
|
|
463
|
+
external make : Module.t -> t -> t -> t -> t = "caml_binaryen_if"
|
|
464
|
+
(** Module, condition, true branch, false branch. False branch may be null. *)
|
|
465
|
+
|
|
466
|
+
external get_condition : t -> t = "caml_binaryen_if_get_condition"
|
|
467
|
+
|
|
468
|
+
external set_condition : t -> t -> unit = "caml_binaryen_if_set_condition"
|
|
469
|
+
|
|
470
|
+
external get_if_true : t -> t = "caml_binaryen_if_get_if_true"
|
|
471
|
+
|
|
472
|
+
external set_if_true : t -> t -> unit = "caml_binaryen_if_set_if_true"
|
|
473
|
+
|
|
474
|
+
external get_if_false : t -> t option = "caml_binaryen_if_get_if_false"
|
|
475
|
+
|
|
476
|
+
external set_if_false : t -> t -> unit = "caml_binaryen_if_set_if_false"
|
|
477
|
+
end
|
|
478
|
+
|
|
479
|
+
module Loop = struct
|
|
480
|
+
external make : Module.t -> string -> t -> t = "caml_binaryen_loop"
|
|
481
|
+
(** Module, loop name, body. *)
|
|
482
|
+
|
|
483
|
+
external get_name : t -> string = "caml_binaryen_loop_get_name"
|
|
484
|
+
|
|
485
|
+
external set_name : t -> string -> unit = "caml_binaryen_loop_set_name"
|
|
486
|
+
|
|
487
|
+
external get_body : t -> t = "caml_binaryen_loop_get_body"
|
|
488
|
+
|
|
489
|
+
external set_body : t -> t -> unit = "caml_binaryen_loop_set_body"
|
|
490
|
+
end
|
|
491
|
+
|
|
492
|
+
module Break = struct
|
|
493
|
+
external make : Module.t -> string -> t -> t -> t = "caml_binaryen_break"
|
|
494
|
+
(** Module, block name, condition, result. Value and condition may be null. *)
|
|
495
|
+
|
|
496
|
+
external get_name : t -> string = "caml_binaryen_break_get_name"
|
|
497
|
+
|
|
498
|
+
external set_name : t -> string -> unit = "caml_binaryen_break_set_name"
|
|
499
|
+
|
|
500
|
+
external get_condition : t -> t option = "caml_binaryen_break_get_condition"
|
|
501
|
+
|
|
502
|
+
external set_condition : t -> t -> unit = "caml_binaryen_break_set_condition"
|
|
503
|
+
|
|
504
|
+
external get_value : t -> t option = "caml_binaryen_break_get_value"
|
|
505
|
+
|
|
506
|
+
external set_value : t -> t -> unit = "caml_binaryen_break_set_value"
|
|
507
|
+
end
|
|
508
|
+
|
|
509
|
+
module Switch = struct
|
|
510
|
+
external make : Module.t -> string list -> string -> t -> t -> t
|
|
511
|
+
= "caml_binaryen_switch"
|
|
512
|
+
(** Module, branch names, default branch name, condition, value. Value may be null. *)
|
|
513
|
+
|
|
514
|
+
external get_num_names : t -> int = "caml_binaryen_switch_get_num_names"
|
|
515
|
+
|
|
516
|
+
external get_name_at : t -> int -> string = "caml_binaryen_switch_get_name_at"
|
|
517
|
+
|
|
518
|
+
external set_name_at : t -> int -> string -> unit
|
|
519
|
+
= "caml_binaryen_switch_set_name_at"
|
|
520
|
+
|
|
521
|
+
external append_name : t -> string -> int = "caml_binaryen_switch_append_name"
|
|
522
|
+
|
|
523
|
+
external insert_name_at : t -> int -> string -> unit
|
|
524
|
+
= "caml_binaryen_switch_insert_name_at"
|
|
525
|
+
|
|
526
|
+
external remove_name_at : t -> int -> string
|
|
527
|
+
= "caml_binaryen_switch_remove_name_at"
|
|
528
|
+
|
|
529
|
+
external get_default_name : t -> string option
|
|
530
|
+
= "caml_binaryen_switch_get_default_name"
|
|
531
|
+
|
|
532
|
+
external set_default_name : t -> string -> unit
|
|
533
|
+
= "caml_binaryen_switch_set_default_name"
|
|
534
|
+
|
|
535
|
+
external get_condition : t -> t = "caml_binaryen_switch_get_condition"
|
|
536
|
+
|
|
537
|
+
external set_condition : t -> t -> unit = "caml_binaryen_switch_set_condition"
|
|
538
|
+
|
|
539
|
+
external get_value : t -> t option = "caml_binaryen_switch_get_value"
|
|
540
|
+
|
|
541
|
+
external set_value : t -> t -> unit = "caml_binaryen_switch_set_value"
|
|
542
|
+
end
|
|
543
|
+
|
|
544
|
+
module Call = struct
|
|
545
|
+
external make : Module.t -> string -> t list -> Type.t -> t
|
|
546
|
+
= "caml_binaryen_call"
|
|
547
|
+
(** Module, function name, params, return type. *)
|
|
548
|
+
|
|
549
|
+
external make_return : Module.t -> string -> t list -> Type.t -> t
|
|
550
|
+
= "caml_binaryen_return_call"
|
|
551
|
+
(** Module, function name, params, return type. *)
|
|
552
|
+
|
|
553
|
+
external get_target : t -> string = "caml_binaryen_call_get_target"
|
|
554
|
+
|
|
555
|
+
external set_target : t -> string -> unit = "caml_binaryen_call_set_target"
|
|
556
|
+
|
|
557
|
+
external get_num_operands : t -> int = "caml_binaryen_call_get_num_operands"
|
|
558
|
+
|
|
559
|
+
external get_operand_at : t -> int -> t = "caml_binaryen_call_get_operand_at"
|
|
560
|
+
|
|
561
|
+
external set_operand_at : t -> int -> t -> unit
|
|
562
|
+
= "caml_binaryen_call_set_operand_at"
|
|
563
|
+
|
|
564
|
+
external append_operand : t -> t -> int = "caml_binaryen_call_append_operand"
|
|
565
|
+
|
|
566
|
+
external insert_operand_at : t -> int -> t -> unit
|
|
567
|
+
= "caml_binaryen_call_insert_operand_at"
|
|
568
|
+
|
|
569
|
+
external remove_operand_at : t -> int -> t
|
|
570
|
+
= "caml_binaryen_call_remove_operand_at"
|
|
571
|
+
|
|
572
|
+
external is_return : t -> bool = "caml_binaryen_call_is_return"
|
|
573
|
+
|
|
574
|
+
external set_return : t -> bool -> unit = "caml_binaryen_call_set_return"
|
|
575
|
+
end
|
|
576
|
+
|
|
577
|
+
module Call_indirect = struct
|
|
578
|
+
external make : Module.t -> string -> t -> t list -> Type.t -> Type.t -> t
|
|
579
|
+
= "caml_binaryen_call_indirect__bytecode" "caml_binaryen_call_indirect"
|
|
580
|
+
(** Module, table, function value, params, params type, return type. *)
|
|
581
|
+
|
|
582
|
+
external make_return :
|
|
583
|
+
Module.t -> string -> t -> t list -> Type.t -> Type.t -> t
|
|
584
|
+
= "caml_binaryen_return_call_indirect__bytecode" "caml_binaryen_return_call_indirect"
|
|
585
|
+
(** Module, table, function value, params, params type, return type. *)
|
|
586
|
+
|
|
587
|
+
external get_target : t -> t = "caml_binaryen_call_indirect_get_target"
|
|
588
|
+
|
|
589
|
+
external set_target : t -> t -> unit
|
|
590
|
+
= "caml_binaryen_call_indirect_set_target"
|
|
591
|
+
|
|
592
|
+
external get_table : t -> string = "caml_binaryen_call_indirect_get_table"
|
|
593
|
+
|
|
594
|
+
external set_table : t -> string -> unit
|
|
595
|
+
= "caml_binaryen_call_indirect_set_table"
|
|
596
|
+
|
|
597
|
+
external get_num_operands : t -> int
|
|
598
|
+
= "caml_binaryen_call_indirect_get_num_operands"
|
|
599
|
+
|
|
600
|
+
external get_operand_at : t -> int -> t
|
|
601
|
+
= "caml_binaryen_call_indirect_get_operand_at"
|
|
602
|
+
|
|
603
|
+
external set_operand_at : t -> int -> t -> unit
|
|
604
|
+
= "caml_binaryen_call_indirect_set_operand_at"
|
|
605
|
+
|
|
606
|
+
external append_operand : t -> t -> int
|
|
607
|
+
= "caml_binaryen_call_indirect_append_operand"
|
|
608
|
+
|
|
609
|
+
external insert_operand_at : t -> int -> t -> unit
|
|
610
|
+
= "caml_binaryen_call_indirect_insert_operand_at"
|
|
611
|
+
|
|
612
|
+
external remove_operand_at : t -> int -> t
|
|
613
|
+
= "caml_binaryen_call_indirect_remove_operand_at"
|
|
614
|
+
|
|
615
|
+
external is_return : t -> bool = "caml_binaryen_call_indirect_is_return"
|
|
616
|
+
|
|
617
|
+
external set_return : t -> bool -> unit
|
|
618
|
+
= "caml_binaryen_call_indirect_set_return"
|
|
619
|
+
end
|
|
620
|
+
|
|
621
|
+
module Local_get = struct
|
|
622
|
+
external make : Module.t -> int -> Type.t -> t = "caml_binaryen_local_get"
|
|
623
|
+
(** Module, slot, type. *)
|
|
624
|
+
end
|
|
625
|
+
|
|
626
|
+
module Local_set = struct
|
|
627
|
+
external make : Module.t -> int -> t -> t = "caml_binaryen_local_set"
|
|
628
|
+
(** Module, slot, value. *)
|
|
629
|
+
|
|
630
|
+
external get_value : t -> t = "caml_binaryen_local_set_get_value"
|
|
631
|
+
|
|
632
|
+
external set_value : t -> t -> unit = "caml_binaryen_local_set_set_value"
|
|
633
|
+
end
|
|
634
|
+
|
|
635
|
+
module Local_tee = struct
|
|
636
|
+
external make : Module.t -> int -> t -> Type.t -> t
|
|
637
|
+
= "caml_binaryen_local_tee"
|
|
638
|
+
(** Module, slot, value, type. *)
|
|
639
|
+
end
|
|
640
|
+
|
|
641
|
+
module Global_get = struct
|
|
642
|
+
external make : Module.t -> string -> Type.t -> t = "caml_binaryen_global_get"
|
|
643
|
+
(** Module, name, type. *)
|
|
644
|
+
|
|
645
|
+
external get_name : t -> string = "caml_binaryen_global_get_get_name"
|
|
646
|
+
|
|
647
|
+
external set_name : t -> string -> unit = "caml_binaryen_global_get_set_name"
|
|
648
|
+
end
|
|
649
|
+
|
|
650
|
+
module Global_set = struct
|
|
651
|
+
external make : Module.t -> string -> t -> t = "caml_binaryen_global_set"
|
|
652
|
+
(** Module, name, value. *)
|
|
653
|
+
|
|
654
|
+
external get_name : t -> string = "caml_binaryen_global_set_get_name"
|
|
655
|
+
|
|
656
|
+
external set_name : t -> string -> unit = "caml_binaryen_global_set_set_name"
|
|
657
|
+
|
|
658
|
+
external get_value : t -> t = "caml_binaryen_global_set_get_value"
|
|
659
|
+
|
|
660
|
+
external set_value : t -> t -> unit = "caml_binaryen_global_set_set_value"
|
|
661
|
+
end
|
|
662
|
+
|
|
663
|
+
module Load = struct
|
|
664
|
+
external make : Module.t -> int -> bool -> int -> int -> Type.t -> t -> t
|
|
665
|
+
= "caml_binaryen_load__bytecode" "caml_binaryen_load"
|
|
666
|
+
|
|
667
|
+
(** Module, num_bytes, ?signed, offset, align, type, ptr. *)
|
|
668
|
+
let make wasm_mod bytes ?(signed = false) offset align ty ptr =
|
|
669
|
+
make wasm_mod bytes signed offset align ty ptr
|
|
670
|
+
|
|
671
|
+
external get_ptr : t -> t = "caml_binaryen_load_get_ptr"
|
|
672
|
+
|
|
673
|
+
external set_ptr : t -> t -> unit = "caml_binaryen_load_set_ptr"
|
|
674
|
+
end
|
|
675
|
+
|
|
676
|
+
module Store = struct
|
|
677
|
+
external make : Module.t -> int -> int -> int -> t -> t -> Type.t -> t
|
|
678
|
+
= "caml_binaryen_store__bytecode" "caml_binaryen_store"
|
|
679
|
+
(** Module, num_bytes, offset, align, ptr, value, type. *)
|
|
680
|
+
|
|
681
|
+
external get_ptr : t -> t = "caml_binaryen_store_get_ptr"
|
|
682
|
+
|
|
683
|
+
external set_ptr : t -> t -> unit = "caml_binaryen_store_set_ptr"
|
|
684
|
+
|
|
685
|
+
external get_value : t -> t = "caml_binaryen_store_get_value"
|
|
686
|
+
|
|
687
|
+
external set_value : t -> t -> unit = "caml_binaryen_store_set_value"
|
|
688
|
+
end
|
|
689
|
+
|
|
690
|
+
module Const = struct
|
|
691
|
+
external make : Module.t -> Literal.t -> t = "caml_binaryen_const"
|
|
692
|
+
end
|
|
693
|
+
|
|
694
|
+
module Unary = struct
|
|
695
|
+
external make : Module.t -> Op.t -> t -> t = "caml_binaryen_unary"
|
|
696
|
+
|
|
697
|
+
external get_value : t -> t = "caml_binaryen_unary_get_value"
|
|
698
|
+
|
|
699
|
+
external set_value : t -> t -> unit = "caml_binaryen_unary_set_value"
|
|
700
|
+
end
|
|
701
|
+
|
|
702
|
+
module Binary = struct
|
|
703
|
+
external make : Module.t -> Op.t -> t -> t -> t = "caml_binaryen_binary"
|
|
704
|
+
|
|
705
|
+
external get_left : t -> t = "caml_binaryen_binary_get_left"
|
|
706
|
+
|
|
707
|
+
external set_left : t -> t -> unit = "caml_binaryen_binary_set_left"
|
|
708
|
+
|
|
709
|
+
external get_right : t -> t = "caml_binaryen_binary_get_right"
|
|
710
|
+
|
|
711
|
+
external set_right : t -> t -> unit = "caml_binaryen_binary_set_right"
|
|
712
|
+
end
|
|
713
|
+
|
|
714
|
+
module Select = struct
|
|
715
|
+
external make : Module.t -> t -> t -> t -> Type.t -> t
|
|
716
|
+
= "caml_binaryen_select"
|
|
717
|
+
|
|
718
|
+
(** Module, condition, true branch, false branch. *)
|
|
719
|
+
let make wasm_mod cond tru fals = make wasm_mod cond tru fals Type.auto
|
|
720
|
+
|
|
721
|
+
external get_if_true : t -> t = "caml_binaryen_select_get_if_true"
|
|
722
|
+
|
|
723
|
+
external set_if_true : t -> t -> unit = "caml_binaryen_select_set_if_true"
|
|
724
|
+
|
|
725
|
+
external get_if_false : t -> t = "caml_binaryen_select_get_if_false"
|
|
726
|
+
|
|
727
|
+
external set_if_false : t -> t -> unit = "caml_binaryen_select_set_if_false"
|
|
728
|
+
|
|
729
|
+
external get_condition : t -> t = "caml_binaryen_select_get_condition"
|
|
730
|
+
|
|
731
|
+
external set_condition : t -> t -> unit = "caml_binaryen_select_set_condition"
|
|
732
|
+
end
|
|
733
|
+
|
|
734
|
+
module Drop = struct
|
|
735
|
+
external make : Module.t -> t -> t = "caml_binaryen_drop"
|
|
736
|
+
|
|
737
|
+
external get_value : t -> t = "caml_binaryen_drop_get_value"
|
|
738
|
+
|
|
739
|
+
external set_value : t -> t -> unit = "caml_binaryen_drop_set_value"
|
|
740
|
+
end
|
|
741
|
+
|
|
742
|
+
module Return = struct
|
|
743
|
+
external make : Module.t -> t -> t = "caml_binaryen_return"
|
|
744
|
+
|
|
745
|
+
external get_value : t -> t = "caml_binaryen_return_get_value"
|
|
746
|
+
|
|
747
|
+
external set_value : t -> t -> unit = "caml_binaryen_return_set_value"
|
|
748
|
+
end
|
|
749
|
+
|
|
750
|
+
module Memory_size = struct
|
|
751
|
+
external make : Module.t -> t = "caml_binaryen_memory_size"
|
|
752
|
+
end
|
|
753
|
+
|
|
754
|
+
module Memory_grow = struct
|
|
755
|
+
external make : Module.t -> t -> t = "caml_binaryen_memory_grow"
|
|
756
|
+
|
|
757
|
+
external get_delta : t -> t = "caml_binaryen_memory_grow_get_delta"
|
|
758
|
+
|
|
759
|
+
external set_delta : t -> t -> unit = "caml_binaryen_memory_grow_set_delta"
|
|
760
|
+
end
|
|
761
|
+
|
|
762
|
+
module Memory_copy = struct
|
|
763
|
+
external make : Module.t -> t -> t -> t -> t = "caml_binaryen_memory_copy"
|
|
764
|
+
(** Module, destination, source, size. *)
|
|
765
|
+
|
|
766
|
+
external get_dest : t -> t = "caml_binaryen_memory_copy_get_dest"
|
|
767
|
+
|
|
768
|
+
external set_dest : t -> t -> unit = "caml_binaryen_memory_copy_set_dest"
|
|
769
|
+
|
|
770
|
+
external get_source : t -> t = "caml_binaryen_memory_copy_get_source"
|
|
771
|
+
|
|
772
|
+
external set_source : t -> t -> unit = "caml_binaryen_memory_copy_set_source"
|
|
773
|
+
|
|
774
|
+
external get_size : t -> t = "caml_binaryen_memory_copy_get_size"
|
|
775
|
+
|
|
776
|
+
external set_size : t -> t -> unit = "caml_binaryen_memory_copy_set_size"
|
|
777
|
+
end
|
|
778
|
+
|
|
779
|
+
module Memory_fill = struct
|
|
780
|
+
external make : Module.t -> t -> t -> t -> t = "caml_binaryen_memory_fill"
|
|
781
|
+
(** Module, destination, value, size. *)
|
|
782
|
+
|
|
783
|
+
external get_dest : t -> t = "caml_binaryen_memory_fill_get_dest"
|
|
784
|
+
|
|
785
|
+
external set_dest : t -> t -> unit = "caml_binaryen_memory_fill_set_dest"
|
|
786
|
+
|
|
787
|
+
external get_value : t -> t = "caml_binaryen_memory_fill_get_value"
|
|
788
|
+
|
|
789
|
+
external set_value : t -> t -> unit = "caml_binaryen_memory_fill_set_value"
|
|
790
|
+
|
|
791
|
+
external get_size : t -> t = "caml_binaryen_memory_fill_get_size"
|
|
792
|
+
|
|
793
|
+
external set_size : t -> t -> unit = "caml_binaryen_memory_fill_set_size"
|
|
794
|
+
end
|
|
795
|
+
|
|
796
|
+
module Tuple_make = struct
|
|
797
|
+
external make : Module.t -> t list -> t = "caml_binaryen_tuple_make"
|
|
798
|
+
(** Module, items *)
|
|
799
|
+
|
|
800
|
+
external get_num_operands : t -> int
|
|
801
|
+
= "caml_binaryen_tuple_make_get_num_operands"
|
|
802
|
+
|
|
803
|
+
external get_operand_at : t -> int -> t
|
|
804
|
+
= "caml_binaryen_tuple_make_get_operand_at"
|
|
805
|
+
|
|
806
|
+
external set_operand_at : t -> int -> t -> unit
|
|
807
|
+
= "caml_binaryen_tuple_make_set_operand_at"
|
|
808
|
+
|
|
809
|
+
external append_operand : t -> t -> int
|
|
810
|
+
= "caml_binaryen_tuple_make_append_operand"
|
|
811
|
+
|
|
812
|
+
external insert_operand_at : t -> int -> t -> unit
|
|
813
|
+
= "caml_binaryen_tuple_make_insert_operand_at"
|
|
814
|
+
|
|
815
|
+
external remove_operand_at : t -> int -> t
|
|
816
|
+
= "caml_binaryen_tuple_make_remove_operand_at"
|
|
817
|
+
end
|
|
818
|
+
|
|
819
|
+
module Tuple_extract = struct
|
|
820
|
+
external make : Module.t -> t -> int -> t = "caml_binaryen_tuple_extract"
|
|
821
|
+
(** Module, tuple, index *)
|
|
822
|
+
|
|
823
|
+
external get_tuple : t -> t = "caml_binaryen_tuple_extract_get_tuple"
|
|
824
|
+
|
|
825
|
+
external set_tuple : t -> t -> unit = "caml_binaryen_tuple_extract_set_tuple"
|
|
826
|
+
end
|
|
827
|
+
|
|
828
|
+
module Nop = struct
|
|
829
|
+
external make : Module.t -> t = "caml_binaryen_nop"
|
|
830
|
+
end
|
|
831
|
+
|
|
832
|
+
module Unreachable = struct
|
|
833
|
+
external make : Module.t -> t = "caml_binaryen_unreachable"
|
|
834
|
+
end
|
|
835
|
+
|
|
836
|
+
module Pop = struct
|
|
837
|
+
external make : Module.t -> Type.t -> t = "caml_binaryen_pop"
|
|
838
|
+
(** Module, type *)
|
|
839
|
+
end
|
|
840
|
+
|
|
841
|
+
module Null = struct
|
|
842
|
+
external make : unit -> t = "caml_binaryen_null_expression"
|
|
843
|
+
(** A null reference. *)
|
|
844
|
+
end
|