Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
feat!: Bump to Binaryen 98
chore!: memory_size and memory_grow are now toplevel functions in `Expression`.
chore!: removed `Type.nullref`, `Type.exnref`
chore!: removed `Op.any_true_vec_i64x2` and `Op.all_true_vec_i64x2`

Co-authored-by: Blaine Bublitz <blaine.bublitz@gmail.com>
  • Loading branch information
ospencer and phated committed Feb 24, 2021
1 parent d339608 commit 9a52a07
Show file tree
Hide file tree
Showing 23 changed files with 908 additions and 424 deletions.
2 changes: 1 addition & 1 deletion js/dune
Expand Up @@ -12,4 +12,4 @@
(rule
(target binaryen.js)
(action
(copy ../vendor/js/index.js binaryen.js)))
(copy ../vendor/js/index.es5.js binaryen.js)))
8 changes: 8 additions & 0 deletions js/expression.ml
Expand Up @@ -146,6 +146,14 @@ let drop wasm_mod value = meth_call wasm_mod "drop" [| inject value |]

let return wasm_mod value = meth_call wasm_mod "return" [| inject value |]

let memory_size wasm_mod =
let scope = get wasm_mod "memory" in
meth_call scope "size" [||]

let memory_grow wasm_mod value =
let scope = get wasm_mod "memory" in
meth_call scope "grow" [| inject value |]

let nop wasm_mod = meth_call wasm_mod "nop" [||]

let unreachable wasm_mod = meth_call wasm_mod "unreachable" [||]
Expand Down
10 changes: 0 additions & 10 deletions js/op.ml
Expand Up @@ -280,10 +280,6 @@ let gt_float64 : t = global ##. binaryen ##. Operations ##. GtFloat64

let ge_float64 : t = global ##. binaryen ##. Operations ##. GeFloat64

let memory_size : t = global ##. binaryen ##. Operations ##. MemorySize

let memory_grow : t = global ##. binaryen ##. Operations ##. MemoryGrow

let atomic_rmw_add : t = global ##. binaryen ##. Operations ##. AtomicRMWAdd

let atomic_rmw_sub : t = global ##. binaryen ##. Operations ##. AtomicRMWSub
Expand Down Expand Up @@ -603,12 +599,6 @@ let dot_s_vec_i16x8_to_vec_i32x4 : t =

let neg_vec_i64x2 : t = global ##. binaryen ##. Operations ##. NegVecI64x2

let any_true_vec_i64x2 : t =
global ##. binaryen ##. Operations ##. AnyTrueVecI64x2

let all_true_vec_i64x2 : t =
global ##. binaryen ##. Operations ##. AllTrueVecI64x2

let shl_vec_i64x2 : t = global ##. binaryen ##. Operations ##. ShlVecI64x2

let shr_s_vec_i64x2 : t = global ##. binaryen ##. Operations ##. ShrSVecI64x2
Expand Down
4 changes: 0 additions & 4 deletions js/type.ml
Expand Up @@ -19,10 +19,6 @@ let funcref : t = global##.binaryen##.funcref

let externref : t = global##.binaryen##.externref

let nullref : t = global##.binaryen##.nullref

let exnref : t = global##.binaryen##.exnref

let unreachable : t = global##.binaryen##.unreachable

let auto : t = global##.binaryen##.auto
Expand Down
17 changes: 17 additions & 0 deletions src/binaryen_stubs_expressions.c
Expand Up @@ -301,6 +301,23 @@ caml_binaryen_return(value _module, value _p1) {
CAMLreturn(alloc_BinaryenExpressionRef(exp));
}

CAMLprim value
caml_binaryen_memory_size(value _module) {
CAMLparam1(_module);
BinaryenModuleRef module = BinaryenModuleRef_val(_module);
BinaryenExpressionRef exp = BinaryenMemorySize(module);
CAMLreturn(alloc_BinaryenExpressionRef(exp));
}

CAMLprim value
caml_binaryen_memory_grow(value _module, value _p1) {
CAMLparam2(_module, _p1);
BinaryenModuleRef module = BinaryenModuleRef_val(_module);
BinaryenExpressionRef p1 = BinaryenExpressionRef_val(_p1);
BinaryenExpressionRef exp = BinaryenMemoryGrow(module, p1);
CAMLreturn(alloc_BinaryenExpressionRef(exp));
}

CAMLprim value
caml_binaryen_nop(value _module) {
CAMLparam1(_module);
Expand Down
28 changes: 0 additions & 28 deletions src/binaryen_stubs_ops.c
Expand Up @@ -911,20 +911,6 @@ caml_binaryen_binaryen_ge_float64(value unit) {
CAMLreturn(alloc_BinaryenOp(op));
}

CAMLprim value
caml_binaryen_binaryen_memory_size(value unit) {
CAMLparam1(unit);
BinaryenOp op = BinaryenMemorySize();
CAMLreturn(alloc_BinaryenOp(op));
}

CAMLprim value
caml_binaryen_binaryen_memory_grow(value unit) {
CAMLparam1(unit);
BinaryenOp op = BinaryenMemoryGrow();
CAMLreturn(alloc_BinaryenOp(op));
}

CAMLprim value
caml_binaryen_binaryen_atomic_rmw_add(value unit) {
CAMLparam1(unit);
Expand Down Expand Up @@ -1898,20 +1884,6 @@ caml_binaryen_binaryen_neg_vec_i64x2(value unit) {
CAMLreturn(alloc_BinaryenOp(op));
}

CAMLprim value
caml_binaryen_binaryen_any_true_vec_i64x2(value unit) {
CAMLparam1(unit);
BinaryenOp op = BinaryenAnyTrueVecI64x2();
CAMLreturn(alloc_BinaryenOp(op));
}

CAMLprim value
caml_binaryen_binaryen_all_true_vec_i64x2(value unit) {
CAMLparam1(unit);
BinaryenOp op = BinaryenAllTrueVecI64x2();
CAMLreturn(alloc_BinaryenOp(op));
}

CAMLprim value
caml_binaryen_binaryen_shl_vec_i64x2(value unit) {
CAMLparam1(unit);
Expand Down
14 changes: 0 additions & 14 deletions src/binaryen_stubs_types.c
Expand Up @@ -72,20 +72,6 @@ caml_binaryen_type_externref(value unit) {
CAMLreturn(alloc_BinaryenType(ty));
}

CAMLprim value
caml_binaryen_type_nullref(value unit) {
CAMLparam1(unit);
BinaryenType ty = BinaryenTypeNullref();
CAMLreturn(alloc_BinaryenType(ty));
}

CAMLprim value
caml_binaryen_type_exnref(value unit) {
CAMLparam1(unit);
BinaryenType ty = BinaryenTypeExnref();
CAMLreturn(alloc_BinaryenType(ty));
}

CAMLprim value
caml_binaryen_type_unreachable(value unit) {
CAMLparam1(unit);
Expand Down
4 changes: 4 additions & 0 deletions src/expression.ml
Expand Up @@ -76,6 +76,10 @@ external drop : Module.t -> t -> t = "caml_binaryen_drop"

external return : Module.t -> t -> t = "caml_binaryen_return"

external memory_size : Module.t -> t = "caml_binaryen_memory_size"

external memory_grow : Module.t -> t -> t = "caml_binaryen_memory_grow"

external nop : Module.t -> t = "caml_binaryen_nop"

external unreachable : Module.t -> t = "caml_binaryen_unreachable"
Expand Down
18 changes: 0 additions & 18 deletions src/op.ml
Expand Up @@ -537,14 +537,6 @@ external ge_float64 : unit -> t = "caml_binaryen_binaryen_ge_float64"

let ge_float64 = ge_float64 ()

external memory_size : unit -> t = "caml_binaryen_binaryen_memory_size"

let memory_size = memory_size ()

external memory_grow : unit -> t = "caml_binaryen_binaryen_memory_grow"

let memory_grow = memory_grow ()

external atomic_rmw_add : unit -> t = "caml_binaryen_binaryen_atomic_rmw_add"

let atomic_rmw_add = atomic_rmw_add ()
Expand Down Expand Up @@ -1144,16 +1136,6 @@ external neg_vec_i64x2 : unit -> t = "caml_binaryen_binaryen_neg_vec_i64x2"

let neg_vec_i64x2 = neg_vec_i64x2 ()

external any_true_vec_i64x2 : unit -> t
= "caml_binaryen_binaryen_any_true_vec_i64x2"

let any_true_vec_i64x2 = any_true_vec_i64x2 ()

external all_true_vec_i64x2 : unit -> t
= "caml_binaryen_binaryen_all_true_vec_i64x2"

let all_true_vec_i64x2 = all_true_vec_i64x2 ()

external shl_vec_i64x2 : unit -> t = "caml_binaryen_binaryen_shl_vec_i64x2"

let shl_vec_i64x2 = shl_vec_i64x2 ()
Expand Down
8 changes: 0 additions & 8 deletions src/type.ml
Expand Up @@ -32,14 +32,6 @@ external externref : unit -> t = "caml_binaryen_type_externref"

let externref = externref ()

external nullref : unit -> t = "caml_binaryen_type_nullref"

let nullref = nullref ()

external exnref : unit -> t = "caml_binaryen_type_exnref"

let exnref = exnref ()

external unreachable : unit -> t = "caml_binaryen_type_unreachable"

let unreachable = unreachable ()
Expand Down
4 changes: 3 additions & 1 deletion test/test.ml
Expand Up @@ -15,7 +15,9 @@ let load = Expression.load wasm_mod 1 ~signed:true 0 0 Type.int32 (y ())

let select = Expression.select wasm_mod (Expression.const wasm_mod (Literal.int32 1l)) (x ()) load

let add = Expression.block wasm_mod ~return_type:Type.int32 "add" [Expression.binary wasm_mod Op.add_int32 select (y ())]
let bin = Expression.binary wasm_mod Op.add_int32 select (y ())

let add = Expression.block wasm_mod ~return_type:Type.int32 "add" [bin]

(* Create the add function *)
let adder = Function.add_function wasm_mod "adder" params results [||] add
Expand Down

0 comments on commit 9a52a07

Please sign in to comment.