@grain/binaryen.ml 0.12.0 → 0.14.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.
Files changed (143) hide show
  1. {binaryen-archive-v0.12.0 → binaryen-archive}/.gitattributes +0 -0
  2. {binaryen-archive-v0.12.0 → binaryen-archive}/.gitignore +0 -0
  3. {binaryen-archive-v0.12.0 → binaryen-archive}/.gitmodules +0 -0
  4. {binaryen-archive-v0.12.0 → binaryen-archive}/CHANGELOG.md +42 -0
  5. {binaryen-archive-v0.12.0 → binaryen-archive}/LICENSE +0 -0
  6. {binaryen-archive-v0.12.0 → binaryen-archive}/README.md +24 -0
  7. {binaryen-archive-v0.12.0 → binaryen-archive}/binaryen.opam +7 -7
  8. {binaryen-archive-v0.12.0 → binaryen-archive}/dune +0 -0
  9. {binaryen-archive-v0.12.0 → binaryen-archive}/dune-project +0 -0
  10. {binaryen-archive-v0.12.0 → binaryen-archive}/dune-workspace +0 -0
  11. {binaryen-archive-v0.12.0 → binaryen-archive}/esy.lock/.gitattributes +0 -0
  12. {binaryen-archive-v0.12.0 → binaryen-archive}/esy.lock/.gitignore +0 -0
  13. {binaryen-archive-v0.12.0 → binaryen-archive}/esy.lock/index.json +355 -338
  14. {binaryen-archive-v0.12.0 → binaryen-archive}/esy.lock/opam/astring.0.8.5/opam +0 -0
  15. binaryen-archive/esy.lock/opam/base-bytes.base/opam +9 -0
  16. {binaryen-archive-v0.12.0 → binaryen-archive}/esy.lock/opam/base-threads.base/opam +0 -0
  17. {binaryen-archive-v0.12.0 → binaryen-archive}/esy.lock/opam/base-unix.base/opam +0 -0
  18. {binaryen-archive-v0.12.0/esy.lock/opam/base.v0.14.2 → binaryen-archive/esy.lock/opam/base.v0.14.3}/opam +2 -2
  19. {binaryen-archive-v0.12.0 → binaryen-archive}/esy.lock/opam/biniou.1.2.1/opam +0 -0
  20. {binaryen-archive-v0.12.0/esy.lock/opam/cmdliner.1.0.4 → binaryen-archive/esy.lock/opam/cmdliner.1.1.0}/opam +17 -20
  21. {binaryen-archive-v0.12.0 → binaryen-archive}/esy.lock/opam/cppo.1.6.8/opam +0 -0
  22. {binaryen-archive-v0.12.0 → binaryen-archive}/esy.lock/opam/csexp.1.5.1/opam +0 -0
  23. {binaryen-archive-v0.12.0/esy.lock/opam/dune-build-info.2.9.1 → binaryen-archive/esy.lock/opam/dune-build-info.2.9.3}/opam +5 -4
  24. {binaryen-archive-v0.12.0/esy.lock/opam/dune-configurator.2.9.1 → binaryen-archive/esy.lock/opam/dune-configurator.2.9.3}/opam +5 -4
  25. {binaryen-archive-v0.12.0/esy.lock/opam/dune.2.9.2 → binaryen-archive/esy.lock/opam/dune.2.9.3}/opam +4 -4
  26. {binaryen-archive-v0.12.0 → binaryen-archive}/esy.lock/opam/easy-format.1.3.2/opam +0 -0
  27. binaryen-archive/esy.lock/opam/either.1.0.0/opam +40 -0
  28. {binaryen-archive-v0.12.0 → binaryen-archive}/esy.lock/opam/fix.20220121/opam +0 -0
  29. {binaryen-archive-v0.12.0 → binaryen-archive}/esy.lock/opam/fpath.0.7.3/opam +0 -0
  30. {binaryen-archive-v0.12.0 → binaryen-archive}/esy.lock/opam/js_of_ocaml-compiler.3.11.0/opam +0 -0
  31. {binaryen-archive-v0.12.0 → binaryen-archive}/esy.lock/opam/js_of_ocaml-ppx.3.11.0/opam +0 -0
  32. {binaryen-archive-v0.12.0 → binaryen-archive}/esy.lock/opam/js_of_ocaml.3.11.0/opam +0 -0
  33. {binaryen-archive-v0.12.0 → binaryen-archive}/esy.lock/opam/menhir.20211128/opam +0 -0
  34. {binaryen-archive-v0.12.0 → binaryen-archive}/esy.lock/opam/menhirLib.20211128/opam +0 -0
  35. {binaryen-archive-v0.12.0 → binaryen-archive}/esy.lock/opam/menhirSdk.20211128/opam +0 -0
  36. {binaryen-archive-v0.12.0 → binaryen-archive}/esy.lock/opam/ocaml-compiler-libs.v0.12.4/opam +0 -0
  37. {binaryen-archive-v0.12.0/esy.lock/opam/ocaml-lsp-server.1.9.0 → binaryen-archive/esy.lock/opam/ocaml-lsp-server.1.10.3}/opam +5 -5
  38. {binaryen-archive-v0.12.0 → binaryen-archive}/esy.lock/opam/ocaml-version.3.4.0/opam +0 -0
  39. {binaryen-archive-v0.12.0/esy.lock/opam/ocamlbuild.0.14.0 → binaryen-archive/esy.lock/opam/ocamlbuild.0.14.1}/opam +18 -15
  40. {binaryen-archive-v0.12.0/esy.lock/opam/ocamlfind.1.9.2 → binaryen-archive/esy.lock/opam/ocamlfind.1.9.3}/opam +3 -3
  41. {binaryen-archive-v0.12.0 → binaryen-archive}/esy.lock/opam/ocamlformat-rpc-lib.0.19.0/opam +0 -0
  42. {binaryen-archive-v0.12.0/esy.lock/opam/ocamlformat.0.18.0 → binaryen-archive/esy.lock/opam/ocamlformat.0.20.1}/opam +16 -15
  43. binaryen-archive/esy.lock/opam/ocp-indent.1.7.0/opam +57 -0
  44. binaryen-archive/esy.lock/opam/odoc-parser.1.0.0/opam +46 -0
  45. {binaryen-archive-v0.12.0 → binaryen-archive}/esy.lock/opam/pp.1.1.2/opam +0 -0
  46. {binaryen-archive-v0.12.0 → binaryen-archive}/esy.lock/opam/ppx_derivers.1.2.1/opam +0 -0
  47. {binaryen-archive-v0.12.0 → binaryen-archive}/esy.lock/opam/ppx_yojson_conv_lib.v0.14.0/opam +0 -0
  48. {binaryen-archive-v0.12.0/esy.lock/opam/ppxlib.0.22.2 → binaryen-archive/esy.lock/opam/ppxlib.0.25.0}/opam +9 -6
  49. {binaryen-archive-v0.12.0 → binaryen-archive}/esy.lock/opam/re.1.10.3/opam +0 -0
  50. {binaryen-archive-v0.12.0 → binaryen-archive}/esy.lock/opam/result.1.5/opam +0 -0
  51. {binaryen-archive-v0.12.0 → binaryen-archive}/esy.lock/opam/seq.base/files/META.seq +0 -0
  52. {binaryen-archive-v0.12.0 → binaryen-archive}/esy.lock/opam/seq.base/files/seq.install +0 -0
  53. {binaryen-archive-v0.12.0 → binaryen-archive}/esy.lock/opam/seq.base/opam +0 -0
  54. {binaryen-archive-v0.12.0 → binaryen-archive}/esy.lock/opam/sexplib0.v0.14.0/opam +0 -0
  55. {binaryen-archive-v0.12.0 → binaryen-archive}/esy.lock/opam/spawn.v0.15.0/opam +0 -0
  56. {binaryen-archive-v0.12.0 → binaryen-archive}/esy.lock/opam/stdio.v0.14.0/opam +0 -0
  57. {binaryen-archive-v0.12.0 → binaryen-archive}/esy.lock/opam/stdlib-shims.0.3.0/opam +1 -1
  58. {binaryen-archive-v0.12.0/esy.lock/opam/topkg.1.0.4 → binaryen-archive/esy.lock/opam/topkg.1.0.5}/opam +3 -3
  59. {binaryen-archive-v0.12.0 → binaryen-archive}/esy.lock/opam/uchar.0.0.2/opam +1 -1
  60. {binaryen-archive-v0.12.0 → binaryen-archive}/esy.lock/opam/uucp.14.0.0/opam +0 -0
  61. {binaryen-archive-v0.12.0 → binaryen-archive}/esy.lock/opam/uuseg.14.0.0/opam +0 -0
  62. binaryen-archive/esy.lock/opam/uutf.1.0.3/opam +36 -0
  63. {binaryen-archive-v0.12.0 → binaryen-archive}/esy.lock/opam/yojson.1.7.0/opam +0 -0
  64. binaryen-archive/esy.lock/overrides/opam__s__ocamlbuild_opam__c__0.14.1_opam_override/files/winpatch.patch +11 -0
  65. {binaryen-archive-v0.12.0/esy.lock/overrides/opam__s__ocamlbuild_opam__c__0.14.0_opam_override → binaryen-archive/esy.lock/overrides/opam__s__ocamlbuild_opam__c__0.14.1_opam_override}/package.json +5 -3
  66. binaryen-archive-v0.12.0/esy.lock/overrides/opam__s__ocamlfind_opam__c__1.9.2_opam_override/files/findlib-1.9.2.patch → binaryen-archive/esy.lock/overrides/opam__s__ocamlfind_opam__c__1.9.3_opam_override/files/findlib.patch +14 -0
  67. {binaryen-archive-v0.12.0/esy.lock/overrides/opam__s__ocamlfind_opam__c__1.9.2_opam_override → binaryen-archive/esy.lock/overrides/opam__s__ocamlfind_opam__c__1.9.3_opam_override}/package.json +1 -1
  68. binaryen-archive/esy.lock/overrides/opam__s__uchar_opam__c__0.0.2_opam_override/files/winpatch.patch +11 -0
  69. binaryen-archive/esy.lock/overrides/opam__s__uchar_opam__c__0.0.2_opam_override/package.json +11 -0
  70. binaryen-archive/js/binaryen.es5.js +363 -0
  71. {binaryen-archive-v0.12.0 → binaryen-archive}/js/dune +1 -1
  72. {binaryen-archive-v0.12.0 → binaryen-archive}/js/element_segment.ml +0 -0
  73. {binaryen-archive-v0.12.0 → binaryen-archive}/js/export.ml +0 -3
  74. {binaryen-archive-v0.12.0 → binaryen-archive}/js/expression.ml +161 -0
  75. {binaryen-archive-v0.12.0 → binaryen-archive}/js/function.ml +0 -0
  76. {binaryen-archive-v0.12.0 → binaryen-archive}/js/global.ml +0 -0
  77. {binaryen-archive-v0.12.0 → binaryen-archive}/js/import.ml +0 -0
  78. {binaryen-archive-v0.12.0 → binaryen-archive}/js/literal.ml +0 -1
  79. {binaryen-archive-v0.12.0 → binaryen-archive}/js/memory.ml +0 -0
  80. {binaryen-archive-v0.12.0 → binaryen-archive}/js/module.ml +6 -9
  81. {binaryen-archive-v0.12.0 → binaryen-archive}/js/op.ml +0 -223
  82. binaryen-archive/js/prelude.js +2 -0
  83. {binaryen-archive-v0.12.0 → binaryen-archive}/js/settings.ml +0 -0
  84. {binaryen-archive-v0.12.0 → binaryen-archive}/js/stubs.c +0 -0
  85. {binaryen-archive-v0.12.0 → binaryen-archive}/js/table.ml +0 -0
  86. {binaryen-archive-v0.12.0 → binaryen-archive}/js/type.ml +0 -9
  87. {binaryen-archive-v0.12.0 → binaryen-archive}/package.json +13 -10
  88. {binaryen-archive-v0.12.0 → binaryen-archive}/src/binaryen_stubs_exports.c +0 -0
  89. {binaryen-archive-v0.12.0 → binaryen-archive}/src/binaryen_stubs_expressions.c +250 -0
  90. {binaryen-archive-v0.12.0 → binaryen-archive}/src/binaryen_stubs_features.c +24 -0
  91. {binaryen-archive-v0.12.0 → binaryen-archive}/src/binaryen_stubs_functions.c +0 -0
  92. {binaryen-archive-v0.12.0 → binaryen-archive}/src/binaryen_stubs_globals.c +0 -0
  93. {binaryen-archive-v0.12.0 → binaryen-archive}/src/binaryen_stubs_imports.c +0 -0
  94. {binaryen-archive-v0.12.0 → binaryen-archive}/src/binaryen_stubs_literals.c +0 -0
  95. {binaryen-archive-v0.12.0 → binaryen-archive}/src/binaryen_stubs_memory.c +0 -0
  96. {binaryen-archive-v0.12.0 → binaryen-archive}/src/binaryen_stubs_modules.c +0 -0
  97. {binaryen-archive-v0.12.0 → binaryen-archive}/src/binaryen_stubs_ops.c +0 -0
  98. {binaryen-archive-v0.12.0 → binaryen-archive}/src/binaryen_stubs_settings.c +0 -0
  99. {binaryen-archive-v0.12.0 → binaryen-archive}/src/binaryen_stubs_tables.c +0 -0
  100. {binaryen-archive-v0.12.0 → binaryen-archive}/src/binaryen_stubs_types.c +0 -0
  101. {binaryen-archive-v0.12.0 → binaryen-archive}/src/dune +0 -0
  102. {binaryen-archive-v0.12.0 → binaryen-archive}/src/element_segment.ml +0 -1
  103. {binaryen-archive-v0.12.0 → binaryen-archive}/src/export.ml +0 -2
  104. {binaryen-archive-v0.12.0 → binaryen-archive}/src/expression.ml +94 -63
  105. {binaryen-archive-v0.12.0 → binaryen-archive}/src/function.ml +0 -6
  106. {binaryen-archive-v0.12.0 → binaryen-archive}/src/global.ml +0 -2
  107. {binaryen-archive-v0.12.0 → binaryen-archive}/src/import.ml +0 -0
  108. {binaryen-archive-v0.12.0 → binaryen-archive}/src/literal.ml +0 -3
  109. {binaryen-archive-v0.12.0 → binaryen-archive}/src/memory.ml +0 -0
  110. {binaryen-archive-v0.12.0 → binaryen-archive}/src/module.ml +17 -9
  111. {binaryen-archive-v0.12.0 → binaryen-archive}/src/ocaml_helpers.c +0 -0
  112. {binaryen-archive-v0.12.0 → binaryen-archive}/src/ocaml_helpers.h +0 -0
  113. {binaryen-archive-v0.12.0 → binaryen-archive}/src/op.ml +0 -0
  114. {binaryen-archive-v0.12.0 → binaryen-archive}/src/settings.ml +0 -6
  115. {binaryen-archive-v0.12.0 → binaryen-archive}/src/table.ml +0 -0
  116. {binaryen-archive-v0.12.0 → binaryen-archive}/src/type.ml +0 -1
  117. {binaryen-archive-v0.12.0 → binaryen-archive}/test/config/dune +0 -0
  118. {binaryen-archive-v0.12.0 → binaryen-archive}/test/config/ocamlopt_flags.ml +8 -1
  119. {binaryen-archive-v0.12.0 → binaryen-archive}/test/dune +0 -0
  120. {binaryen-archive-v0.12.0 → binaryen-archive}/test/test.expected +8 -0
  121. {binaryen-archive-v0.12.0 → binaryen-archive}/test/test.ml +44 -22
  122. {binaryen-archive-v0.12.0 → binaryen-archive}/virtual/dune +0 -0
  123. {binaryen-archive-v0.12.0 → binaryen-archive}/virtual/element_segment.mli +0 -4
  124. {binaryen-archive-v0.12.0 → binaryen-archive}/virtual/export.mli +0 -15
  125. {binaryen-archive-v0.12.0 → binaryen-archive}/virtual/expression.mli +93 -115
  126. {binaryen-archive-v0.12.0 → binaryen-archive}/virtual/function.mli +0 -12
  127. {binaryen-archive-v0.12.0 → binaryen-archive}/virtual/global.mli +0 -8
  128. {binaryen-archive-v0.12.0 → binaryen-archive}/virtual/import.mli +0 -4
  129. {binaryen-archive-v0.12.0 → binaryen-archive}/virtual/literal.mli +0 -5
  130. {binaryen-archive-v0.12.0 → binaryen-archive}/virtual/memory.mli +0 -0
  131. {binaryen-archive-v0.12.0 → binaryen-archive}/virtual/module.mli +4 -29
  132. {binaryen-archive-v0.12.0 → binaryen-archive}/virtual/op.mli +0 -315
  133. {binaryen-archive-v0.12.0 → binaryen-archive}/virtual/settings.mli +0 -17
  134. {binaryen-archive-v0.12.0 → binaryen-archive}/virtual/table.mli +0 -3
  135. {binaryen-archive-v0.12.0 → binaryen-archive}/virtual/type.mli +0 -11
  136. binaryen-archive-v0.12.0/esy.lock/opam/ocaml-migrate-parsetree.2.3.0/opam +0 -39
  137. binaryen-archive-v0.12.0/esy.lock/opam/odoc.1.5.3/opam +0 -53
  138. binaryen-archive-v0.12.0/esy.lock/opam/tyxml.4.5.0/opam +0 -42
  139. binaryen-archive-v0.12.0/esy.lock/opam/uutf.1.0.2/opam +0 -40
  140. binaryen-archive-v0.12.0/esy.lock/overrides/opam__s__ocamlbuild_opam__c__0.14.0_opam_override/files/ocamlbuild-0.14.0.patch +0 -463
  141. binaryen-archive-v0.12.0/js/binaryen.es5.js +0 -5
  142. binaryen-archive-v0.12.0/js/postlude.js +0 -2
  143. binaryen-archive-v0.12.0/js/prelude.js +0 -11
@@ -10,4 +10,4 @@
10
10
  (names stubs))
11
11
  (js_of_ocaml
12
12
  (flags --no-sourcemap)
13
- (javascript_files prelude.js binaryen.es5.js postlude.js)))
13
+ (javascript_files prelude.js binaryen.es5.js)))
@@ -46,11 +46,8 @@ let external_function =
46
46
  meth_call global##.binaryen "_BinaryenExternalFunction" [||]
47
47
 
48
48
  let external_table = meth_call global##.binaryen "_BinaryenExternalTable" [||]
49
-
50
49
  let external_memory = meth_call global##.binaryen "_BinaryenExternalMemory" [||]
51
-
52
50
  let external_global = meth_call global##.binaryen "_BinaryenExternalGlobal" [||]
53
-
54
51
  let external_tag = meth_call global##.binaryen "_BinaryenExternalTag" [||]
55
52
 
56
53
  let export_get_kind export =
@@ -942,3 +942,164 @@ end
942
942
  module Null = struct
943
943
  let make () = pure_js_expr "null"
944
944
  end
945
+
946
+ module Ref = struct
947
+ (** Module, type *)
948
+ let null wasm_mod typ =
949
+ let scope = get wasm_mod "ref" in
950
+ meth_call scope "null" [| inject typ |]
951
+
952
+ (** Module, op, value *)
953
+ let is wasm_mod op value =
954
+ meth_call global##.binaryen "_BinaryenRefIs"
955
+ [| inject wasm_mod; inject op; inject value |]
956
+
957
+ (** Module, op, value *)
958
+ let as_ wasm_mod op value =
959
+ meth_call global##.binaryen "_BinaryenRefAs"
960
+ [| inject wasm_mod; inject op; inject value |]
961
+
962
+ (** Module, func, type *)
963
+ let func wasm_mod func typ =
964
+ let scope = get wasm_mod "ref" in
965
+ meth_call scope "func" [| inject (string func); inject typ |]
966
+
967
+ (** Module, left, right *)
968
+ let eq wasm_mod left right =
969
+ let scope = get wasm_mod "ref" in
970
+ meth_call scope "func" [| inject left; inject right |]
971
+ end
972
+
973
+ module Table = struct
974
+ (** Module, name, index, type *)
975
+ let get wasm_mod name index typ =
976
+ let scope = Js_of_ocaml.Js.Unsafe.get wasm_mod "table" in
977
+ meth_call scope "get" [| inject (string name); inject index; inject typ |]
978
+
979
+ (** Module, name, index, value *)
980
+ let set wasm_mod name index value =
981
+ let scope = Js_of_ocaml.Js.Unsafe.get wasm_mod "table" in
982
+ meth_call scope "set" [| inject (string name); inject index; inject value |]
983
+
984
+ (** Module, name *)
985
+ let size wasm_mod name =
986
+ let scope = Js_of_ocaml.Js.Unsafe.get wasm_mod "table" in
987
+ meth_call scope "size" [| inject (string name) |]
988
+
989
+ (** Module, name, value, delta *)
990
+ let grow wasm_mod name value delta =
991
+ let scope = Js_of_ocaml.Js.Unsafe.get wasm_mod "table" in
992
+ meth_call scope "grow"
993
+ [| inject (string name); inject value; inject delta |]
994
+ end
995
+
996
+ module Table_get = struct
997
+ (** Gets the name of the table being accessed by a `Table.get` expression. *)
998
+ let get_table exp =
999
+ to_string
1000
+ (meth_call global ##. binaryen ##. TableGet "getTable" [| inject exp |])
1001
+
1002
+ (** Gets the name of the table being accessed by a `Table.get` expression. *)
1003
+ let set_table exp name =
1004
+ meth_call
1005
+ global ##. binaryen ##. TableGet
1006
+ "setTable"
1007
+ [| inject exp; inject (string name) |]
1008
+
1009
+ (** Gets the index expression of a `Table.get` expression. *)
1010
+ let get_index exp =
1011
+ meth_call global ##. binaryen ##. TableGet "getIndex" [| inject exp |]
1012
+
1013
+ (** Gets the index expression of a `Table.get` expression. *)
1014
+ let set_index exp index =
1015
+ meth_call
1016
+ global ##. binaryen ##. TableGet
1017
+ "setIndex"
1018
+ [| inject exp; inject index |]
1019
+ end
1020
+
1021
+ module Table_set = struct
1022
+ (** Gets the name of the table being accessed by a `Table.set` expression. *)
1023
+ let get_table exp =
1024
+ to_string
1025
+ (meth_call global ##. binaryen ##. TableSet "getTable" [| inject exp |])
1026
+
1027
+ (** Sets the name of the table being accessed by a `Table.set` expression. *)
1028
+ let set_table exp name =
1029
+ meth_call
1030
+ global ##. binaryen ##. TableSet
1031
+ "setTable"
1032
+ [| inject exp; inject (string name) |]
1033
+
1034
+ (** Gets the index expression of a `Table.set` expression. *)
1035
+ let get_index exp =
1036
+ meth_call global ##. binaryen ##. TableSet "getIndex" [| inject exp |]
1037
+
1038
+ (** Sets the index expression of a `Table.set` expression. *)
1039
+ let set_index exp index =
1040
+ meth_call
1041
+ global ##. binaryen ##. TableSet
1042
+ "setIndex"
1043
+ [| inject exp; inject index |]
1044
+
1045
+ (** Gets the value expression of a `Table.set` expression. *)
1046
+ let get_value exp =
1047
+ meth_call global ##. binaryen ##. TableSet "getValue" [| inject exp |]
1048
+
1049
+ (** Sets the value expression of a `Table.set` expression. *)
1050
+ let set_value exp value =
1051
+ meth_call
1052
+ global ##. binaryen ##. TableSet
1053
+ "setValue"
1054
+ [| inject exp; inject value |]
1055
+ end
1056
+
1057
+ module Table_size = struct
1058
+ (** Gets the name of the table being accessed by a `Table.size` expression. *)
1059
+ let get_table exp =
1060
+ to_string
1061
+ (meth_call global ##. binaryen ##. TableSize "getTable" [| inject exp |])
1062
+
1063
+ (** Sets the name of the table being accessed by a `Table.size` expression. *)
1064
+ let set_table exp name =
1065
+ meth_call
1066
+ global ##. binaryen ##. TableSize
1067
+ "setTable"
1068
+ [| inject exp; inject (string name) |]
1069
+ end
1070
+
1071
+ module Table_grow = struct
1072
+ (** Gets the name of the table being accessed by a `Table.grow` expression. *)
1073
+ let get_table exp =
1074
+ to_string
1075
+ (meth_call global ##. binaryen ##. TableGrow "getTable" [| inject exp |])
1076
+
1077
+ (** Gets the name of the table being accessed by a `Table.grow` expression. *)
1078
+ let set_table exp name =
1079
+ meth_call
1080
+ global ##. binaryen ##. TableGrow
1081
+ "setTable"
1082
+ [| inject exp; inject (string name) |]
1083
+
1084
+ (** Gets the value expression of a `Table.grow` expression. *)
1085
+ let get_value exp =
1086
+ meth_call global ##. binaryen ##. TableGrow "getValue" [| inject exp |]
1087
+
1088
+ (** Sets the value expression of a `Table.grow` expression. *)
1089
+ let set_value exp value =
1090
+ meth_call
1091
+ global ##. binaryen ##. TableGrow
1092
+ "setValue"
1093
+ [| inject exp; inject value |]
1094
+
1095
+ (** Gets the delta of a `Table.grow` expression. *)
1096
+ let get_delta exp =
1097
+ meth_call global ##. binaryen ##. TableGrow "getDelta" [| inject exp |]
1098
+
1099
+ (** Sets the delta of a `Table.grow` expression. *)
1100
+ let set_delta exp delta =
1101
+ meth_call
1102
+ global ##. binaryen ##. TableGrow
1103
+ "setDelta"
1104
+ [| inject exp; inject delta |]
1105
+ end
@@ -22,7 +22,6 @@ let float64_bits value =
22
22
  (Int64.to_int32 value, Int64.to_int32 (Int64.shift_right_logical value 32))
23
23
 
24
24
  let float32 value = Float32 value
25
-
26
25
  let float64 value = Float64 value
27
26
 
28
27
  (* This makes our `t` public so we can match on it *)
@@ -5,29 +5,29 @@ module Feature = struct
5
5
  type t = int
6
6
 
7
7
  let mvp : t = global ##. binaryen ##. Features ##. MVP
8
-
9
8
  let atomics : t = global ##. binaryen ##. Features ##. Atomics
10
-
11
9
  let bulk_memory : t = global ##. binaryen ##. Features ##. BulkMemory
12
-
13
10
  let mutable_globals : t = global ##. binaryen ##. Features ##. MutableGlobals
14
11
 
15
12
  let nontrapping_fp_to_int : t =
16
13
  global ##. binaryen ##. Features ##. NontrappingFPToInt
17
14
 
18
15
  let sign_ext : t = global ##. binaryen ##. Features ##. SignExt
19
-
20
16
  let simd128 : t = global ##. binaryen ##. Features ##. SIMD128
21
17
 
22
18
  let exception_handling : t =
23
19
  global ##. binaryen ##. Features ##. ExceptionHandling
24
20
 
25
21
  let tail_call : t = global ##. binaryen ##. Features ##. TailCall
26
-
27
22
  let reference_types : t = global ##. binaryen ##. Features ##. ReferenceTypes
28
-
29
23
  let multivalue : t = global ##. binaryen ##. Features ##. Multivalue
24
+ let gc : t = global ##. binaryen ##. Features ##. GC
25
+ let memory64 : t = global ##. binaryen ##. Features ##. Memory64
26
+
27
+ let typed_function_references : t =
28
+ global ##. binaryen ##. Features ##. TypedFunctionReferences
30
29
 
30
+ let relaxed_simd : t = global ##. binaryen ##. Features ##. RelaxedSIMD
31
31
  let all : t = global ##. binaryen ##. Features ##. All
32
32
  end
33
33
 
@@ -35,13 +35,11 @@ external u8a_to_bytes : 'a -> bytes = "caml_bytes_of_array"
35
35
 
36
36
  (* TODO: Verify this converts to bytes correctly? *)
37
37
  external bytes_to_u8a : bytes -> 'a = "caml_array_of_bytes"
38
-
39
38
  external string_to_u8a : string -> 'a = "caml_array_of_string"
40
39
 
41
40
  type t
42
41
 
43
42
  let create () = new_obj global ##. binaryen ##. Module [||]
44
-
45
43
  let dispose wasm_mod = ignore (meth_call wasm_mod "dispose" [||])
46
44
 
47
45
  (* TODO: Check the unit8Array conversion *)
@@ -63,7 +61,6 @@ let print_asmjs wasm_mod =
63
61
  print_string (to_string asm)
64
62
 
65
63
  let validate wasm_mod = meth_call wasm_mod "validate" [||]
66
-
67
64
  let optimize wasm_mod = meth_call wasm_mod "optimize" [||]
68
65
 
69
66
  let get_features wasm_mod =