Skip to content

Commit

Permalink
feat!: Upgrade Binaryen to v101 (#99)
Browse files Browse the repository at this point in the history
feat!: Move expressions into namespaces
feat: Add operations on expressions
feat: Add operations on functions
feat: Add operations on globals
feat: Add operations on imports
feat: Add operations on exports
feat!: Move element segment into own module
feat: Add operations on element segments
feat: Add `Type.expandType`
feat: Add `Module.get_features`
feat!: Move `Features` into `Module.Feature`
feat!: Create Settings modules & move global functions
feat!: Convert some Settings from ints to bools
chore!: Remove SIMD methods that Binaryen replaced
feat: Build vendored Binaryen with GCC 7 instead of 9

Co-authored-by: Oscar Spencer <oscar@grain-lang.org>
Co-authored-by: Blaine Bublitz <blaine.bublitz@gmail.com>
Co-authored-by: Josiah Savary <hello@jsavary.com>
  • Loading branch information
3 people committed May 9, 2021
1 parent 61cf08f commit 3de1b28
Show file tree
Hide file tree
Showing 66 changed files with 4,864 additions and 1,323 deletions.
33 changes: 33 additions & 0 deletions js/element_segment.ml
@@ -0,0 +1,33 @@
open Js_of_ocaml.Js
open Js_of_ocaml.Js.Unsafe

type t = int

let get_name elem =
let element_segment_info =
meth_call global##.binaryen "getElementSegmentInfo" [| inject elem |]
in
to_string (get element_segment_info "name")

let get_table elem =
let element_segment_info =
meth_call global##.binaryen "getElementSegmentInfo" [| inject elem |]
in
to_string (get element_segment_info "table")

let get_offset elem =
let element_segment_info =
meth_call global##.binaryen "getElementSegmentInfo" [| inject elem |]
in
get element_segment_info "offset"

let get_length elem =
meth_call global##.binaryen "_BinaryenElementSegmentGetLength"
[| inject elem |]

let get_data elem index =
let element_segment_info =
meth_call global##.binaryen "getElementSegmentInfo" [| inject elem |]
in
let data_js_array = get element_segment_info "data" in
to_string (get data_js_array index)
37 changes: 37 additions & 0 deletions js/export.ml
Expand Up @@ -19,5 +19,42 @@ let add_global_export wasm_mod internal_name external_name =
meth_call wasm_mod "addGlobalExport"
[| inject (string internal_name); inject (string external_name) |]

let get_export wasm_mod external_name =
meth_call wasm_mod "getExport" [| inject (string external_name) |]

let remove_export wasm_mod external_name =
meth_call wasm_mod "removeExport" [| inject (string external_name) |]

let get_num_exports wasm_mod = meth_call wasm_mod "getNumExports" [||]

let get_export_by_index wasm_mod index =
meth_call wasm_mod "getExportByIndex" [| inject index |]

let get_name export =
let export_info =
meth_call global##.binaryen "getExportInfo" [| inject export |]
in
to_string (get export_info "name")

let get_value export =
let export_info =
meth_call global##.binaryen "getExportInfo" [| inject export |]
in
to_string (get export_info "value")

let external_function =
meth_call global##.binaryen "_BinaryenExternalFunction" [||]

let external_table = meth_call global##.binaryen "_BinaryenExternalTable" [||]

let external_memory = meth_call global##.binaryen "_BinaryenExternalMemory" [||]

let external_global = meth_call global##.binaryen "_BinaryenExternalGlobal" [||]

let external_event = meth_call global##.binaryen "_BinaryenExternalEvent" [||]

let export_get_kind export =
let export_info =
meth_call global##.binaryen "getExportInfo" [| inject export |]
in
get export_info "kind"

0 comments on commit 3de1b28

Please sign in to comment.