package binaryen

  1. Overview
  2. Docs

Source file memory.ml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
external set_memory :
  Module.t ->
  int ->
  int ->
  string ->
  string list ->
  bool list ->
  Expression.t list ->
  int list ->
  bool ->
  unit = "caml_binaryen_set_memory__bytecode" "caml_binaryen_set_memory"

type segment = {
  name : string;
  passive : bool;
  offset : Expression.t;
  size : int;
}

(** Module, initial size, maximum size, export name, segments, shared. *)
let set_memory wasm_mod initial maximum export_name (segments : segment list)
    shared =
  let split_segments segments =
    List.fold_right
      (fun { name; passive; offset; size }
           (segment_names, segment_passive, segment_offsets, segment_sizes) ->
        ( name :: segment_names,
          passive :: segment_passive,
          offset :: segment_offsets,
          size :: segment_sizes ))
      segments ([], [], [], [])
  in
  let segment_names, segment_passive, segment_offsets, segment_sizes =
    split_segments segments
  in
  set_memory wasm_mod initial maximum export_name segment_names segment_passive
    segment_offsets segment_sizes shared

let unlimited = -1
OCaml

Innovation. Community. Security.