@grain/binaryen.ml 0.34.0 → 0.35.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/CHANGELOG.md +17 -0
- binaryen-archive/binaryen.opam +2 -2
- binaryen-archive/esy.lock/index.json +392 -293
- binaryen-archive/esy.lock/opam/base.v0.17.3/opam +4 -2
- binaryen-archive/esy.lock/opam/{chrome-trace.3.20.2 → chrome-trace.3.21.1}/opam +5 -5
- binaryen-archive/esy.lock/opam/{dune-build-info.3.20.2 → dune-build-info.3.21.1}/opam +5 -5
- binaryen-archive/esy.lock/opam/{dune-configurator.3.20.2 → dune-configurator.3.21.1}/opam +5 -5
- binaryen-archive/esy.lock/opam/{dune-rpc.3.20.2 → dune-rpc.3.21.1}/opam +5 -5
- binaryen-archive/esy.lock/opam/{dune.3.20.2 → dune.3.21.1}/opam +6 -5
- binaryen-archive/esy.lock/opam/{dyn.3.20.2 → dyn.3.21.1}/opam +6 -6
- binaryen-archive/esy.lock/opam/fs-io.3.21.1/opam +41 -0
- binaryen-archive/esy.lock/opam/{menhir.20250912 → menhir.20260209}/opam +6 -4
- binaryen-archive/esy.lock/opam/{menhirCST.20250912 → menhirCST.20260209}/opam +4 -3
- binaryen-archive/esy.lock/opam/menhirGLR.20260209/opam +30 -0
- binaryen-archive/esy.lock/opam/{menhirLib.20250912 → menhirLib.20260209}/opam +5 -4
- binaryen-archive/esy.lock/opam/{menhirSdk.20250912 → menhirSdk.20260209}/opam +5 -4
- binaryen-archive/esy.lock/opam/ocaml_intrinsics_kernel.v0.17.1/opam +2 -0
- binaryen-archive/esy.lock/opam/{ocamlc-loc.3.20.2 → ocamlc-loc.3.21.1}/opam +6 -6
- binaryen-archive/esy.lock/opam/ocamlfind.1.9.8/opam +1 -1
- binaryen-archive/esy.lock/opam/{ordering.3.20.2 → ordering.3.21.1}/opam +6 -6
- binaryen-archive/esy.lock/opam/ppx_yojson_conv_lib.v0.17.0/opam +2 -0
- binaryen-archive/esy.lock/opam/sexplib0.v0.17.0/opam +2 -0
- binaryen-archive/esy.lock/opam/stdio.v0.17.0/opam +3 -1
- binaryen-archive/esy.lock/opam/{stdune.3.20.2 → stdune.3.21.1}/opam +9 -7
- binaryen-archive/esy.lock/opam/top-closure.3.21.1/opam +40 -0
- binaryen-archive/esy.lock/opam/{xdg.3.20.2 → xdg.3.21.1}/opam +5 -5
- binaryen-archive/package.json +2 -2
- binaryen-archive/src/dune +2 -0
- binaryen-archive/src/export.c +10 -0
- binaryen-archive/src/export.js +13 -0
- binaryen-archive/src/export.ml +4 -0
- binaryen-archive/src/export.mli +1 -0
- binaryen-archive/src/expression.c +291 -0
- binaryen-archive/src/expression.js +182 -0
- binaryen-archive/src/expression.ml +118 -0
- binaryen-archive/src/expression.mli +87 -0
- binaryen-archive/src/import.c +32 -0
- binaryen-archive/src/import.js +47 -0
- binaryen-archive/src/import.ml +12 -0
- binaryen-archive/src/import.mli +5 -0
- binaryen-archive/src/module.js +2 -2
- binaryen-archive/src/ocaml_helpers.c +8 -0
- binaryen-archive/src/ocaml_helpers.h +4 -0
- binaryen-archive/src/passes.ml +3 -7
- binaryen-archive/src/passes.mli +3 -7
- binaryen-archive/src/tag.c +61 -0
- binaryen-archive/src/tag.js +43 -0
- binaryen-archive/src/tag.ml +11 -0
- binaryen-archive/src/tag.mli +8 -0
- binaryen-archive/src/type.js +4 -7
- binaryen-archive/test/test.expected +158 -31
- binaryen-archive/test/test.ml +89 -0
binaryen-archive/src/export.mli
CHANGED
|
@@ -4,6 +4,7 @@ val add_function_export : Module.t -> string -> string -> t
|
|
|
4
4
|
val add_table_export : Module.t -> string -> string -> t
|
|
5
5
|
val add_memory_export : Module.t -> string -> string -> t
|
|
6
6
|
val add_global_export : Module.t -> string -> string -> t
|
|
7
|
+
val add_tag_export : Module.t -> string -> string -> t
|
|
7
8
|
val get_export : Module.t -> string -> t
|
|
8
9
|
val remove_export : Module.t -> string -> unit
|
|
9
10
|
val get_num_exports : Module.t -> int
|
|
@@ -1883,6 +1883,297 @@ caml_binaryen_ref_eq(value _module, value _left, value _right) {
|
|
|
1883
1883
|
CAMLreturn(alloc_BinaryenExpressionRef(exp));
|
|
1884
1884
|
}
|
|
1885
1885
|
|
|
1886
|
+
// Exception handling operations
|
|
1887
|
+
CAMLprim value
|
|
1888
|
+
caml_binaryen_try(value _module, value _name, value _body, value _catchTags, value _catchBodies, value _delegateTarget) {
|
|
1889
|
+
CAMLparam5(_module, _name, _body, _catchTags, _catchBodies);
|
|
1890
|
+
CAMLxparam1(_delegateTarget);
|
|
1891
|
+
BinaryenModuleRef module = BinaryenModuleRef_val(_module);
|
|
1892
|
+
char *name;
|
|
1893
|
+
if (Is_none(_name)) {
|
|
1894
|
+
name = NULL;
|
|
1895
|
+
} else {
|
|
1896
|
+
name = Safe_String_val(Some_val(_name));
|
|
1897
|
+
}
|
|
1898
|
+
BinaryenExpressionRef body = BinaryenExpressionRef_val(_body);
|
|
1899
|
+
_catchTags = array_of_list(_catchTags);
|
|
1900
|
+
int catchTagsLen = array_length(_catchTags);
|
|
1901
|
+
const char* catchTags[catchTagsLen];
|
|
1902
|
+
for (int i = 0; i < catchTagsLen; i++) {
|
|
1903
|
+
catchTags[i] = Safe_String_val(Field(_catchTags, i));
|
|
1904
|
+
}
|
|
1905
|
+
_catchBodies = array_of_list(_catchBodies);
|
|
1906
|
+
int catchBodiesLen = array_length(_catchBodies);
|
|
1907
|
+
BinaryenExpressionRef catchBodies[catchBodiesLen];
|
|
1908
|
+
for (int i = 0; i < catchBodiesLen; i++) {
|
|
1909
|
+
catchBodies[i] = BinaryenExpressionRef_val(Field(_catchBodies, i));
|
|
1910
|
+
}
|
|
1911
|
+
char *delegateTarget;
|
|
1912
|
+
if (Is_none(_delegateTarget)) {
|
|
1913
|
+
delegateTarget = NULL;
|
|
1914
|
+
} else {
|
|
1915
|
+
delegateTarget = Safe_String_val(Some_val(_delegateTarget));
|
|
1916
|
+
}
|
|
1917
|
+
BinaryenExpressionRef exp = BinaryenTry(
|
|
1918
|
+
module,
|
|
1919
|
+
name,
|
|
1920
|
+
body,
|
|
1921
|
+
catchTags,
|
|
1922
|
+
catchTagsLen,
|
|
1923
|
+
catchBodies,
|
|
1924
|
+
catchBodiesLen,
|
|
1925
|
+
delegateTarget
|
|
1926
|
+
);
|
|
1927
|
+
CAMLreturn(alloc_BinaryenExpressionRef(exp));
|
|
1928
|
+
}
|
|
1929
|
+
|
|
1930
|
+
CAMLprim value caml_binaryen_try__bytecode(value * argv) {
|
|
1931
|
+
return caml_binaryen_try(argv[0], argv[1], argv[2], argv[3], argv[4], argv[5]);
|
|
1932
|
+
}
|
|
1933
|
+
|
|
1934
|
+
CAMLprim value
|
|
1935
|
+
caml_binaryen_throw(value _module, value _tag, value _operands) {
|
|
1936
|
+
CAMLparam3(_module, _tag, _operands);
|
|
1937
|
+
BinaryenModuleRef module = BinaryenModuleRef_val(_module);
|
|
1938
|
+
char *tag = Safe_String_val(_tag);
|
|
1939
|
+
_operands = array_of_list(_operands);
|
|
1940
|
+
int operandsLen = array_length(_operands);
|
|
1941
|
+
BinaryenExpressionRef operands[operandsLen];
|
|
1942
|
+
for (int i = 0; i < operandsLen; i++) {
|
|
1943
|
+
operands[i] = BinaryenExpressionRef_val(Field(_operands, i));
|
|
1944
|
+
}
|
|
1945
|
+
BinaryenExpressionRef exp = BinaryenThrow(module, tag, operands, operandsLen);
|
|
1946
|
+
CAMLreturn(alloc_BinaryenExpressionRef(exp));
|
|
1947
|
+
}
|
|
1948
|
+
|
|
1949
|
+
CAMLprim value
|
|
1950
|
+
caml_binaryen_try_get_name(value _expr) {
|
|
1951
|
+
CAMLparam1(_expr);
|
|
1952
|
+
BinaryenExpressionRef expr = BinaryenExpressionRef_val(_expr);
|
|
1953
|
+
const char* name = BinaryenTryGetName(expr);
|
|
1954
|
+
if (name == NULL) {
|
|
1955
|
+
CAMLreturn(Val_none);
|
|
1956
|
+
} else {
|
|
1957
|
+
CAMLreturn(caml_alloc_some(caml_copy_string(name)));
|
|
1958
|
+
}
|
|
1959
|
+
}
|
|
1960
|
+
|
|
1961
|
+
CAMLprim value
|
|
1962
|
+
caml_binaryen_try_set_name(value _expr, value _name) {
|
|
1963
|
+
CAMLparam2(_expr, _name);
|
|
1964
|
+
BinaryenExpressionRef expr = BinaryenExpressionRef_val(_expr);
|
|
1965
|
+
const char* name = Safe_String_val(_name);
|
|
1966
|
+
BinaryenTrySetName(expr, name);
|
|
1967
|
+
CAMLreturn(Val_unit);
|
|
1968
|
+
}
|
|
1969
|
+
|
|
1970
|
+
CAMLprim value
|
|
1971
|
+
caml_binaryen_try_get_body(value _expr) {
|
|
1972
|
+
CAMLparam1(_expr);
|
|
1973
|
+
BinaryenExpressionRef expr = BinaryenExpressionRef_val(_expr);
|
|
1974
|
+
BinaryenExpressionRef binaryenRetVal = BinaryenTryGetBody(expr);
|
|
1975
|
+
CAMLreturn(alloc_BinaryenExpressionRef(binaryenRetVal));
|
|
1976
|
+
}
|
|
1977
|
+
|
|
1978
|
+
CAMLprim value
|
|
1979
|
+
caml_binaryen_try_set_body(value _expr, value _bodyExpr) {
|
|
1980
|
+
CAMLparam2(_expr, _bodyExpr);
|
|
1981
|
+
BinaryenExpressionRef expr = BinaryenExpressionRef_val(_expr);
|
|
1982
|
+
BinaryenExpressionRef bodyExpr = BinaryenExpressionRef_val(_bodyExpr);
|
|
1983
|
+
BinaryenTrySetBody(expr, bodyExpr);
|
|
1984
|
+
CAMLreturn(Val_unit);
|
|
1985
|
+
}
|
|
1986
|
+
|
|
1987
|
+
CAMLprim value
|
|
1988
|
+
caml_binaryen_try_get_num_catch_tags(value _expr) {
|
|
1989
|
+
CAMLparam1(_expr);
|
|
1990
|
+
BinaryenExpressionRef expr = BinaryenExpressionRef_val(_expr);
|
|
1991
|
+
BinaryenIndex binaryenRetVal = BinaryenTryGetNumCatchTags(expr);
|
|
1992
|
+
CAMLreturn(Val_int(binaryenRetVal));
|
|
1993
|
+
}
|
|
1994
|
+
|
|
1995
|
+
CAMLprim value
|
|
1996
|
+
caml_binaryen_try_get_num_catch_bodies(value _expr) {
|
|
1997
|
+
CAMLparam1(_expr);
|
|
1998
|
+
BinaryenExpressionRef expr = BinaryenExpressionRef_val(_expr);
|
|
1999
|
+
BinaryenIndex binaryenRetVal = BinaryenTryGetNumCatchBodies(expr);
|
|
2000
|
+
CAMLreturn(Val_int(binaryenRetVal));
|
|
2001
|
+
}
|
|
2002
|
+
|
|
2003
|
+
CAMLprim value
|
|
2004
|
+
caml_binaryen_try_get_catch_tag_at(value _expr, value _index) {
|
|
2005
|
+
CAMLparam2(_expr, _index);
|
|
2006
|
+
BinaryenExpressionRef expr = BinaryenExpressionRef_val(_expr);
|
|
2007
|
+
BinaryenIndex index = Int_val(_index);
|
|
2008
|
+
const char* binaryenRetVal = BinaryenTryGetCatchTagAt(expr, index);
|
|
2009
|
+
CAMLreturn(caml_copy_string(binaryenRetVal));
|
|
2010
|
+
}
|
|
2011
|
+
|
|
2012
|
+
CAMLprim value
|
|
2013
|
+
caml_binaryen_try_set_catch_tag_at(value _expr, value _index, value _catchTag) {
|
|
2014
|
+
CAMLparam3(_expr, _index, _catchTag);
|
|
2015
|
+
BinaryenExpressionRef expr = BinaryenExpressionRef_val(_expr);
|
|
2016
|
+
BinaryenIndex index = Int_val(_index);
|
|
2017
|
+
const char* catchTag = Safe_String_val(_catchTag);
|
|
2018
|
+
BinaryenTrySetCatchTagAt(expr, index, catchTag);
|
|
2019
|
+
CAMLreturn(Val_unit);
|
|
2020
|
+
}
|
|
2021
|
+
|
|
2022
|
+
CAMLprim value
|
|
2023
|
+
caml_binaryen_try_append_catch_tag(value _expr, value _catchTag) {
|
|
2024
|
+
CAMLparam2(_expr, _catchTag);
|
|
2025
|
+
BinaryenExpressionRef expr = BinaryenExpressionRef_val(_expr);
|
|
2026
|
+
const char* catchTag = Safe_String_val(_catchTag);
|
|
2027
|
+
BinaryenIndex binaryenRetVal = BinaryenTryAppendCatchTag(expr, catchTag);
|
|
2028
|
+
CAMLreturn(Val_int(binaryenRetVal));
|
|
2029
|
+
}
|
|
2030
|
+
|
|
2031
|
+
CAMLprim value
|
|
2032
|
+
caml_binaryen_try_insert_catch_tag_at(value _expr, value _index, value _catchTag) {
|
|
2033
|
+
CAMLparam3(_expr, _index, _catchTag);
|
|
2034
|
+
BinaryenExpressionRef expr = BinaryenExpressionRef_val(_expr);
|
|
2035
|
+
BinaryenIndex index = Int_val(_index);
|
|
2036
|
+
const char* catchTag = Safe_String_val(_catchTag);
|
|
2037
|
+
BinaryenTryInsertCatchTagAt(expr, index, catchTag);
|
|
2038
|
+
CAMLreturn(Val_unit);
|
|
2039
|
+
}
|
|
2040
|
+
|
|
2041
|
+
CAMLprim value
|
|
2042
|
+
caml_binaryen_try_remove_catch_tag_at(value _expr, value _index) {
|
|
2043
|
+
CAMLparam2(_expr, _index);
|
|
2044
|
+
BinaryenExpressionRef expr = BinaryenExpressionRef_val(_expr);
|
|
2045
|
+
BinaryenIndex index = Int_val(_index);
|
|
2046
|
+
const char* binaryenRetVal = BinaryenTryRemoveCatchTagAt(expr, index);
|
|
2047
|
+
CAMLreturn(caml_copy_string(binaryenRetVal));
|
|
2048
|
+
}
|
|
2049
|
+
|
|
2050
|
+
CAMLprim value
|
|
2051
|
+
caml_binaryen_try_get_catch_body_at(value _expr, value _index) {
|
|
2052
|
+
CAMLparam2(_expr, _index);
|
|
2053
|
+
BinaryenExpressionRef expr = BinaryenExpressionRef_val(_expr);
|
|
2054
|
+
BinaryenIndex index = Int_val(_index);
|
|
2055
|
+
BinaryenExpressionRef binaryenRetVal = BinaryenTryGetCatchBodyAt(expr, index);
|
|
2056
|
+
CAMLreturn(alloc_BinaryenExpressionRef(binaryenRetVal));
|
|
2057
|
+
}
|
|
2058
|
+
|
|
2059
|
+
CAMLprim value
|
|
2060
|
+
caml_binaryen_try_set_catch_body_at(value _expr, value _index, value _catchExpr) {
|
|
2061
|
+
CAMLparam3(_expr, _index, _catchExpr);
|
|
2062
|
+
BinaryenExpressionRef expr = BinaryenExpressionRef_val(_expr);
|
|
2063
|
+
BinaryenIndex index = Int_val(_index);
|
|
2064
|
+
BinaryenExpressionRef catchExpr = BinaryenExpressionRef_val(_catchExpr);
|
|
2065
|
+
BinaryenTrySetCatchBodyAt(expr, index, catchExpr);
|
|
2066
|
+
CAMLreturn(Val_unit);
|
|
2067
|
+
}
|
|
2068
|
+
|
|
2069
|
+
CAMLprim value
|
|
2070
|
+
caml_binaryen_try_append_catch_body(value _expr, value _catchExpr) {
|
|
2071
|
+
CAMLparam2(_expr, _catchExpr);
|
|
2072
|
+
BinaryenExpressionRef expr = BinaryenExpressionRef_val(_expr);
|
|
2073
|
+
BinaryenExpressionRef catchExpr = BinaryenExpressionRef_val(_catchExpr);
|
|
2074
|
+
BinaryenIndex binaryenRetVal = BinaryenTryAppendCatchBody(expr, catchExpr);
|
|
2075
|
+
CAMLreturn(Val_int(binaryenRetVal));
|
|
2076
|
+
}
|
|
2077
|
+
|
|
2078
|
+
CAMLprim value
|
|
2079
|
+
caml_binaryen_try_insert_catch_body_at(value _expr, value _index, value _catchExpr) {
|
|
2080
|
+
CAMLparam3(_expr, _index, _catchExpr);
|
|
2081
|
+
BinaryenExpressionRef expr = BinaryenExpressionRef_val(_expr);
|
|
2082
|
+
BinaryenIndex index = Int_val(_index);
|
|
2083
|
+
BinaryenExpressionRef catchExpr = BinaryenExpressionRef_val(_catchExpr);
|
|
2084
|
+
BinaryenTryInsertCatchBodyAt(expr, index, catchExpr);
|
|
2085
|
+
CAMLreturn(Val_unit);
|
|
2086
|
+
}
|
|
2087
|
+
|
|
2088
|
+
CAMLprim value
|
|
2089
|
+
caml_binaryen_try_remove_catch_body_at(value _expr, value _index) {
|
|
2090
|
+
CAMLparam2(_expr, _index);
|
|
2091
|
+
BinaryenExpressionRef expr = BinaryenExpressionRef_val(_expr);
|
|
2092
|
+
BinaryenIndex index = Int_val(_index);
|
|
2093
|
+
BinaryenExpressionRef binaryenRetVal = BinaryenTryRemoveCatchBodyAt(expr, index);
|
|
2094
|
+
CAMLreturn(alloc_BinaryenExpressionRef(binaryenRetVal));
|
|
2095
|
+
}
|
|
2096
|
+
|
|
2097
|
+
CAMLprim value
|
|
2098
|
+
caml_binaryen_try_has_catch_all(value _expr) {
|
|
2099
|
+
CAMLparam1(_expr);
|
|
2100
|
+
BinaryenExpressionRef expr = BinaryenExpressionRef_val(_expr);
|
|
2101
|
+
bool binaryenRetVal = BinaryenTryHasCatchAll(expr);
|
|
2102
|
+
CAMLreturn(Val_bool(binaryenRetVal));
|
|
2103
|
+
}
|
|
2104
|
+
|
|
2105
|
+
CAMLprim value
|
|
2106
|
+
caml_binaryen_throw_get_tag(value _expr) {
|
|
2107
|
+
CAMLparam1(_expr);
|
|
2108
|
+
BinaryenExpressionRef expr = BinaryenExpressionRef_val(_expr);
|
|
2109
|
+
const char* binaryenRetVal = BinaryenThrowGetTag(expr);
|
|
2110
|
+
CAMLreturn(caml_copy_string(binaryenRetVal));
|
|
2111
|
+
}
|
|
2112
|
+
|
|
2113
|
+
CAMLprim value
|
|
2114
|
+
caml_binaryen_throw_set_tag(value _expr, value _tagName) {
|
|
2115
|
+
CAMLparam2(_expr, _tagName);
|
|
2116
|
+
BinaryenExpressionRef expr = BinaryenExpressionRef_val(_expr);
|
|
2117
|
+
const char* tagName = Safe_String_val(_tagName);
|
|
2118
|
+
BinaryenThrowSetTag(expr, tagName);
|
|
2119
|
+
CAMLreturn(Val_unit);
|
|
2120
|
+
}
|
|
2121
|
+
|
|
2122
|
+
CAMLprim value
|
|
2123
|
+
caml_binaryen_throw_get_num_operands(value _expr) {
|
|
2124
|
+
CAMLparam1(_expr);
|
|
2125
|
+
BinaryenExpressionRef expr = BinaryenExpressionRef_val(_expr);
|
|
2126
|
+
BinaryenIndex binaryenRetVal = BinaryenThrowGetNumOperands(expr);
|
|
2127
|
+
CAMLreturn(Val_int(binaryenRetVal));
|
|
2128
|
+
}
|
|
2129
|
+
|
|
2130
|
+
CAMLprim value
|
|
2131
|
+
caml_binaryen_throw_get_operand_at(value _expr, value _index) {
|
|
2132
|
+
CAMLparam2(_expr, _index);
|
|
2133
|
+
BinaryenExpressionRef expr = BinaryenExpressionRef_val(_expr);
|
|
2134
|
+
BinaryenIndex index = Int_val(_index);
|
|
2135
|
+
BinaryenExpressionRef binaryenRetVal = BinaryenThrowGetOperandAt(expr, index);
|
|
2136
|
+
CAMLreturn(alloc_BinaryenExpressionRef(binaryenRetVal));
|
|
2137
|
+
}
|
|
2138
|
+
|
|
2139
|
+
CAMLprim value
|
|
2140
|
+
caml_binaryen_throw_set_operand_at(value _expr, value _index, value _operandExpr) {
|
|
2141
|
+
CAMLparam3(_expr, _index, _operandExpr);
|
|
2142
|
+
BinaryenExpressionRef expr = BinaryenExpressionRef_val(_expr);
|
|
2143
|
+
BinaryenIndex index = Int_val(_index);
|
|
2144
|
+
BinaryenExpressionRef operandExpr = BinaryenExpressionRef_val(_operandExpr);
|
|
2145
|
+
BinaryenThrowSetOperandAt(expr, index, operandExpr);
|
|
2146
|
+
CAMLreturn(Val_unit);
|
|
2147
|
+
}
|
|
2148
|
+
|
|
2149
|
+
CAMLprim value
|
|
2150
|
+
caml_binaryen_throw_append_operand(value _expr, value _operandExpr) {
|
|
2151
|
+
CAMLparam2(_expr, _operandExpr);
|
|
2152
|
+
BinaryenExpressionRef expr = BinaryenExpressionRef_val(_expr);
|
|
2153
|
+
BinaryenExpressionRef operandExpr = BinaryenExpressionRef_val(_operandExpr);
|
|
2154
|
+
BinaryenIndex binaryenRetVal = BinaryenThrowAppendOperand(expr, operandExpr);
|
|
2155
|
+
CAMLreturn(Val_int(binaryenRetVal));
|
|
2156
|
+
}
|
|
2157
|
+
|
|
2158
|
+
CAMLprim value
|
|
2159
|
+
caml_binaryen_throw_insert_operand_at(value _expr, value _index, value _operandExpr) {
|
|
2160
|
+
CAMLparam3(_expr, _index, _operandExpr);
|
|
2161
|
+
BinaryenExpressionRef expr = BinaryenExpressionRef_val(_expr);
|
|
2162
|
+
BinaryenIndex index = Int_val(_index);
|
|
2163
|
+
BinaryenExpressionRef operandExpr = BinaryenExpressionRef_val(_operandExpr);
|
|
2164
|
+
BinaryenThrowInsertOperandAt(expr, index, operandExpr);
|
|
2165
|
+
CAMLreturn(Val_unit);
|
|
2166
|
+
}
|
|
2167
|
+
|
|
2168
|
+
CAMLprim value
|
|
2169
|
+
caml_binaryen_throw_remove_operand_at(value _expr, value _index) {
|
|
2170
|
+
CAMLparam2(_expr, _index);
|
|
2171
|
+
BinaryenExpressionRef expr = BinaryenExpressionRef_val(_expr);
|
|
2172
|
+
BinaryenIndex index = Int_val(_index);
|
|
2173
|
+
BinaryenExpressionRef binaryenRetVal = BinaryenThrowRemoveOperandAt(expr, index);
|
|
2174
|
+
CAMLreturn(alloc_BinaryenExpressionRef(binaryenRetVal));
|
|
2175
|
+
}
|
|
2176
|
+
|
|
1886
2177
|
// Table operations
|
|
1887
2178
|
CAMLprim value
|
|
1888
2179
|
caml_binaryen_table_get(value _module, value _name, value _index, value _ty) {
|
|
@@ -1707,6 +1707,188 @@ function caml_binaryen_ref_eq(wasm_mod, left, right) {
|
|
|
1707
1707
|
return wasm_mod.ref.func(left, right);
|
|
1708
1708
|
}
|
|
1709
1709
|
|
|
1710
|
+
// Exception handling operations
|
|
1711
|
+
|
|
1712
|
+
//Provides: caml_binaryen_try
|
|
1713
|
+
//Requires: caml_jsstring_of_string, caml_list_to_js_array
|
|
1714
|
+
function caml_binaryen_try(wasm_mod, name, body, catch_tags, catch_bodies, delegate_target) {
|
|
1715
|
+
return wasm_mod.try(
|
|
1716
|
+
name ? caml_jsstring_of_string(name[1]) : null,
|
|
1717
|
+
body,
|
|
1718
|
+
caml_list_to_js_array(catch_tags).map(caml_jsstring_of_string),
|
|
1719
|
+
caml_list_to_js_array(catch_bodies),
|
|
1720
|
+
delegate_target ? caml_jsstring_of_string(delegate_target[1]) : null,
|
|
1721
|
+
);
|
|
1722
|
+
}
|
|
1723
|
+
|
|
1724
|
+
//Provides: caml_binaryen_try__bytecode
|
|
1725
|
+
//Requires: caml_binaryen_try
|
|
1726
|
+
function caml_binaryen_try__bytecode() {
|
|
1727
|
+
return caml_binaryen_try(arguments[0], arguments[1], arguments[2], arguments[3], arguments[4], arguments[5]);
|
|
1728
|
+
}
|
|
1729
|
+
|
|
1730
|
+
//Provides: caml_binaryen_throw
|
|
1731
|
+
//Requires: caml_jsstring_of_string, caml_list_to_js_array
|
|
1732
|
+
function caml_binaryen_throw(wasm_mod, tag, operands) {
|
|
1733
|
+
return wasm_mod.throw(
|
|
1734
|
+
caml_jsstring_of_string(tag),
|
|
1735
|
+
caml_list_to_js_array(operands),
|
|
1736
|
+
);
|
|
1737
|
+
}
|
|
1738
|
+
|
|
1739
|
+
//Provides: caml_binaryen_try_get_name
|
|
1740
|
+
//Requires: Binaryen, caml_string_of_jsstring, to_option
|
|
1741
|
+
function caml_binaryen_try_get_name(expr) {
|
|
1742
|
+
var name = Binaryen.Try.getName(expr);
|
|
1743
|
+
var str = name != null ? caml_string_of_jsstring(name) : null;
|
|
1744
|
+
return to_option(str);
|
|
1745
|
+
}
|
|
1746
|
+
|
|
1747
|
+
//Provides: caml_binaryen_try_set_name
|
|
1748
|
+
//Requires: Binaryen, caml_jsstring_of_string
|
|
1749
|
+
function caml_binaryen_try_set_name(expr, name) {
|
|
1750
|
+
Binaryen.Try.setName(expr, caml_jsstring_of_string(name));
|
|
1751
|
+
}
|
|
1752
|
+
|
|
1753
|
+
//Provides: caml_binaryen_try_get_body
|
|
1754
|
+
//Requires: Binaryen
|
|
1755
|
+
function caml_binaryen_try_get_body(expr) {
|
|
1756
|
+
return Binaryen.Try.getBody(expr);
|
|
1757
|
+
}
|
|
1758
|
+
|
|
1759
|
+
//Provides: caml_binaryen_try_set_body
|
|
1760
|
+
//Requires: Binaryen
|
|
1761
|
+
function caml_binaryen_try_set_body(expr, bodyExpr) {
|
|
1762
|
+
Binaryen.Try.setBody(expr, bodyExpr);
|
|
1763
|
+
}
|
|
1764
|
+
|
|
1765
|
+
//Provides: caml_binaryen_try_get_num_catch_tags
|
|
1766
|
+
//Requires: Binaryen
|
|
1767
|
+
function caml_binaryen_try_get_num_catch_tags(expr) {
|
|
1768
|
+
return Binaryen.Try.getNumCatchTags(expr);
|
|
1769
|
+
}
|
|
1770
|
+
|
|
1771
|
+
//Provides: caml_binaryen_try_get_num_catch_bodies
|
|
1772
|
+
//Requires: Binaryen
|
|
1773
|
+
function caml_binaryen_try_get_num_catch_bodies(expr) {
|
|
1774
|
+
return Binaryen.Try.getNumCatchBodies(expr);
|
|
1775
|
+
}
|
|
1776
|
+
|
|
1777
|
+
//Provides: caml_binaryen_try_get_catch_tag_at
|
|
1778
|
+
//Requires: Binaryen, caml_string_of_jsstring
|
|
1779
|
+
function caml_binaryen_try_get_catch_tag_at(expr, index) {
|
|
1780
|
+
return caml_string_of_jsstring(Binaryen.Try.getCatchTagAt(expr, index));
|
|
1781
|
+
}
|
|
1782
|
+
|
|
1783
|
+
//Provides: caml_binaryen_try_set_catch_tag_at
|
|
1784
|
+
//Requires: Binaryen, caml_jsstring_of_string
|
|
1785
|
+
function caml_binaryen_try_set_catch_tag_at(expr, index, catchTag) {
|
|
1786
|
+
Binaryen.Try.setCatchTagAt(expr, index, caml_jsstring_of_string(catchTag));
|
|
1787
|
+
}
|
|
1788
|
+
|
|
1789
|
+
//Provides: caml_binaryen_try_append_catch_tag
|
|
1790
|
+
//Requires: Binaryen, caml_jsstring_of_string
|
|
1791
|
+
function caml_binaryen_try_append_catch_tag(expr, catchTag) {
|
|
1792
|
+
return Binaryen.Try.appendCatchTag(expr, caml_jsstring_of_string(catchTag));
|
|
1793
|
+
}
|
|
1794
|
+
|
|
1795
|
+
//Provides: caml_binaryen_try_insert_catch_tag_at
|
|
1796
|
+
//Requires: Binaryen, caml_jsstring_of_string
|
|
1797
|
+
function caml_binaryen_try_insert_catch_tag_at(expr, index, catchTag) {
|
|
1798
|
+
Binaryen.Try.insertCatchTagAt(expr, index, caml_jsstring_of_string(catchTag));
|
|
1799
|
+
}
|
|
1800
|
+
|
|
1801
|
+
//Provides: caml_binaryen_try_remove_catch_tag_at
|
|
1802
|
+
//Requires: Binaryen, caml_string_of_jsstring
|
|
1803
|
+
function caml_binaryen_try_remove_catch_tag_at(expr, index) {
|
|
1804
|
+
return caml_string_of_jsstring(Binaryen.Try.removeCatchTagAt(expr, index));
|
|
1805
|
+
}
|
|
1806
|
+
|
|
1807
|
+
//Provides: caml_binaryen_try_get_catch_body_at
|
|
1808
|
+
//Requires: Binaryen
|
|
1809
|
+
function caml_binaryen_try_get_catch_body_at(expr, index) {
|
|
1810
|
+
return Binaryen.Try.getCatchBodyAt(expr, index);
|
|
1811
|
+
}
|
|
1812
|
+
|
|
1813
|
+
//Provides: caml_binaryen_try_set_catch_body_at
|
|
1814
|
+
//Requires: Binaryen
|
|
1815
|
+
function caml_binaryen_try_set_catch_body_at(expr, index, catchExpr) {
|
|
1816
|
+
Binaryen.Try.setCatchBodyAt(expr, index, catchExpr);
|
|
1817
|
+
}
|
|
1818
|
+
|
|
1819
|
+
//Provides: caml_binaryen_try_append_catch_body
|
|
1820
|
+
//Requires: Binaryen
|
|
1821
|
+
function caml_binaryen_try_append_catch_body(expr, catchExpr) {
|
|
1822
|
+
return Binaryen.Try.appendCatchBody(expr, catchExpr);
|
|
1823
|
+
}
|
|
1824
|
+
|
|
1825
|
+
//Provides: caml_binaryen_try_insert_catch_body_at
|
|
1826
|
+
//Requires: Binaryen
|
|
1827
|
+
function caml_binaryen_try_insert_catch_body_at(expr, index, catchExpr) {
|
|
1828
|
+
Binaryen.Try.insertCatchBodyAt(expr, index, catchExpr);
|
|
1829
|
+
}
|
|
1830
|
+
|
|
1831
|
+
//Provides: caml_binaryen_try_remove_catch_body_at
|
|
1832
|
+
//Requires: Binaryen
|
|
1833
|
+
function caml_binaryen_try_remove_catch_body_at(expr, index) {
|
|
1834
|
+
return Binaryen.Try.removeCatchBodyAt(expr, index);
|
|
1835
|
+
}
|
|
1836
|
+
|
|
1837
|
+
//Provides: caml_binaryen_try_has_catch_all
|
|
1838
|
+
//Requires: Binaryen
|
|
1839
|
+
//Requires: caml_js_to_bool
|
|
1840
|
+
function caml_binaryen_try_has_catch_all(expr) {
|
|
1841
|
+
return caml_js_to_bool(Binaryen.Try.hasCatchAll(expr));
|
|
1842
|
+
}
|
|
1843
|
+
|
|
1844
|
+
//Provides: caml_binaryen_throw_get_tag
|
|
1845
|
+
//Requires: Binaryen, caml_string_of_jsstring
|
|
1846
|
+
function caml_binaryen_throw_get_tag(expr) {
|
|
1847
|
+
return caml_string_of_jsstring(Binaryen.Throw.getTag(expr));
|
|
1848
|
+
}
|
|
1849
|
+
|
|
1850
|
+
//Provides: caml_binaryen_throw_set_tag
|
|
1851
|
+
//Requires: Binaryen, caml_jsstring_of_string
|
|
1852
|
+
function caml_binaryen_throw_set_tag(expr, tagName) {
|
|
1853
|
+
Binaryen.Throw.setTag(expr, caml_jsstring_of_string(tagName));
|
|
1854
|
+
}
|
|
1855
|
+
|
|
1856
|
+
//Provides: caml_binaryen_throw_get_num_operands
|
|
1857
|
+
//Requires: Binaryen
|
|
1858
|
+
function caml_binaryen_throw_get_num_operands(expr) {
|
|
1859
|
+
return Binaryen.Throw.getNumOperands(expr);
|
|
1860
|
+
}
|
|
1861
|
+
|
|
1862
|
+
//Provides: caml_binaryen_throw_get_operand_at
|
|
1863
|
+
//Requires: Binaryen
|
|
1864
|
+
function caml_binaryen_throw_get_operand_at(expr, index) {
|
|
1865
|
+
return Binaryen.Throw.getOperandAt(expr, index);
|
|
1866
|
+
}
|
|
1867
|
+
|
|
1868
|
+
//Provides: caml_binaryen_throw_set_operand_at
|
|
1869
|
+
//Requires: Binaryen
|
|
1870
|
+
function caml_binaryen_throw_set_operand_at(expr, index, operandExpr) {
|
|
1871
|
+
Binaryen.Throw.setOperandAt(expr, index, operandExpr);
|
|
1872
|
+
}
|
|
1873
|
+
|
|
1874
|
+
//Provides: caml_binaryen_throw_append_operand
|
|
1875
|
+
//Requires: Binaryen
|
|
1876
|
+
function caml_binaryen_throw_append_operand(expr, operandExpr) {
|
|
1877
|
+
return Binaryen.Throw.appendOperand(expr, operandExpr);
|
|
1878
|
+
}
|
|
1879
|
+
|
|
1880
|
+
//Provides: caml_binaryen_throw_insert_operand_at
|
|
1881
|
+
//Requires: Binaryen
|
|
1882
|
+
function caml_binaryen_throw_insert_operand_at(expr, index, operandExpr) {
|
|
1883
|
+
Binaryen.Throw.insertOperandAt(expr, index, operandExpr);
|
|
1884
|
+
}
|
|
1885
|
+
|
|
1886
|
+
//Provides: caml_binaryen_throw_remove_operand_at
|
|
1887
|
+
//Requires: Binaryen
|
|
1888
|
+
function caml_binaryen_throw_remove_operand_at(expr, index) {
|
|
1889
|
+
return Binaryen.Throw.removeOperandAt(expr, index);
|
|
1890
|
+
}
|
|
1891
|
+
|
|
1710
1892
|
// Table operations
|
|
1711
1893
|
|
|
1712
1894
|
//Provides: caml_binaryen_table_get
|
|
@@ -832,6 +832,124 @@ module Ref = struct
|
|
|
832
832
|
(** Module, left, right *)
|
|
833
833
|
end
|
|
834
834
|
|
|
835
|
+
(** Bindings for `try_table` instruction. *)
|
|
836
|
+
module Try = struct
|
|
837
|
+
external make :
|
|
838
|
+
Module.t ->
|
|
839
|
+
string option ->
|
|
840
|
+
t ->
|
|
841
|
+
string list ->
|
|
842
|
+
t list ->
|
|
843
|
+
string option ->
|
|
844
|
+
t = "caml_binaryen_try__bytecode" "caml_binaryen_try"
|
|
845
|
+
(** Module, name, body, catch tags, catch bodies, delegate target *)
|
|
846
|
+
|
|
847
|
+
(** Module, name, body, catch clauses, catch all *)
|
|
848
|
+
let make wasm_mod name body catch_clauses catch_all =
|
|
849
|
+
let catch_tags, catch_bodies = List.split catch_clauses in
|
|
850
|
+
let catch_bodies =
|
|
851
|
+
match catch_all with
|
|
852
|
+
| Some target -> List.append catch_bodies [ target ]
|
|
853
|
+
| None -> catch_bodies
|
|
854
|
+
in
|
|
855
|
+
make wasm_mod name body catch_tags catch_bodies None
|
|
856
|
+
|
|
857
|
+
external get_name : t -> string option = "caml_binaryen_try_get_name"
|
|
858
|
+
(** expr *)
|
|
859
|
+
|
|
860
|
+
external set_name : t -> string -> unit = "caml_binaryen_try_set_name"
|
|
861
|
+
(** expr, name *)
|
|
862
|
+
|
|
863
|
+
external get_body : t -> t = "caml_binaryen_try_get_body"
|
|
864
|
+
(** expr *)
|
|
865
|
+
|
|
866
|
+
external set_body : t -> t -> unit = "caml_binaryen_try_set_body"
|
|
867
|
+
(** expr, bodyExpr *)
|
|
868
|
+
|
|
869
|
+
external get_num_catch_tags : t -> int
|
|
870
|
+
= "caml_binaryen_try_get_num_catch_tags"
|
|
871
|
+
(** expr *)
|
|
872
|
+
|
|
873
|
+
external get_num_catch_bodies : t -> int
|
|
874
|
+
= "caml_binaryen_try_get_num_catch_bodies"
|
|
875
|
+
(** expr *)
|
|
876
|
+
|
|
877
|
+
external get_catch_tag_at : t -> int -> string
|
|
878
|
+
= "caml_binaryen_try_get_catch_tag_at"
|
|
879
|
+
(** expr, index *)
|
|
880
|
+
|
|
881
|
+
external set_catch_tag_at : t -> int -> string -> unit
|
|
882
|
+
= "caml_binaryen_try_set_catch_tag_at"
|
|
883
|
+
(** expr, index, catchTag *)
|
|
884
|
+
|
|
885
|
+
external append_catch_tag : t -> string -> int
|
|
886
|
+
= "caml_binaryen_try_append_catch_tag"
|
|
887
|
+
(** expr, catchTag *)
|
|
888
|
+
|
|
889
|
+
external insert_catch_tag_at : t -> int -> string -> unit
|
|
890
|
+
= "caml_binaryen_try_insert_catch_tag_at"
|
|
891
|
+
(** expr, index, catchTag *)
|
|
892
|
+
|
|
893
|
+
external remove_catch_tag_at : t -> int -> string
|
|
894
|
+
= "caml_binaryen_try_remove_catch_tag_at"
|
|
895
|
+
(** expr, index *)
|
|
896
|
+
|
|
897
|
+
external get_catch_body_at : t -> int -> t
|
|
898
|
+
= "caml_binaryen_try_get_catch_body_at"
|
|
899
|
+
(** expr, index *)
|
|
900
|
+
|
|
901
|
+
external set_catch_body_at : t -> int -> t -> unit
|
|
902
|
+
= "caml_binaryen_try_set_catch_body_at"
|
|
903
|
+
(** expr, index, catchExpr *)
|
|
904
|
+
|
|
905
|
+
external append_catch_body : t -> t -> int
|
|
906
|
+
= "caml_binaryen_try_append_catch_body"
|
|
907
|
+
(** expr, catchExpr *)
|
|
908
|
+
|
|
909
|
+
external insert_catch_body_at : t -> int -> t -> unit
|
|
910
|
+
= "caml_binaryen_try_insert_catch_body_at"
|
|
911
|
+
(** expr, index, catchExpr *)
|
|
912
|
+
|
|
913
|
+
external remove_catch_body_at : t -> int -> t
|
|
914
|
+
= "caml_binaryen_try_remove_catch_body_at"
|
|
915
|
+
(** expr, index *)
|
|
916
|
+
|
|
917
|
+
external has_catch_all : t -> bool = "caml_binaryen_try_has_catch_all"
|
|
918
|
+
(** expr *)
|
|
919
|
+
end
|
|
920
|
+
|
|
921
|
+
module Throw = struct
|
|
922
|
+
external make : Module.t -> string -> t list -> t = "caml_binaryen_throw"
|
|
923
|
+
(** Module, tag, operands *)
|
|
924
|
+
|
|
925
|
+
external get_tag : t -> string = "caml_binaryen_throw_get_tag"
|
|
926
|
+
(** expr *)
|
|
927
|
+
|
|
928
|
+
external set_tag : t -> string -> unit = "caml_binaryen_throw_set_tag"
|
|
929
|
+
(** expr, tagName *)
|
|
930
|
+
|
|
931
|
+
external get_num_operands : t -> int = "caml_binaryen_throw_get_num_operands"
|
|
932
|
+
(** expr *)
|
|
933
|
+
|
|
934
|
+
external get_operand_at : t -> int -> t = "caml_binaryen_throw_get_operand_at"
|
|
935
|
+
(** expr, index *)
|
|
936
|
+
|
|
937
|
+
external set_operand_at : t -> int -> t -> unit
|
|
938
|
+
= "caml_binaryen_throw_set_operand_at"
|
|
939
|
+
(** expr, index, operandExpr *)
|
|
940
|
+
|
|
941
|
+
external append_operand : t -> t -> int = "caml_binaryen_throw_append_operand"
|
|
942
|
+
(** expr, operandExpr *)
|
|
943
|
+
|
|
944
|
+
external insert_operand_at : t -> int -> t -> unit
|
|
945
|
+
= "caml_binaryen_throw_insert_operand_at"
|
|
946
|
+
(** expr, index, operandExpr *)
|
|
947
|
+
|
|
948
|
+
external remove_operand_at : t -> int -> t
|
|
949
|
+
= "caml_binaryen_throw_remove_operand_at"
|
|
950
|
+
(** expr, index *)
|
|
951
|
+
end
|
|
952
|
+
|
|
835
953
|
module Table = struct
|
|
836
954
|
external get : Module.t -> string -> t -> Type.t -> t
|
|
837
955
|
= "caml_binaryen_table_get"
|