Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions .github/workflows/build-wasm_of_ocaml.yml
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ jobs:
uses: actions/cache/restore@v4
with:
path: binaryen
key: ${{ runner.os }}-binaryen-version_118
key: ${{ runner.os }}-binaryen-eh

- name: Checkout binaryen
if: steps.cache-binaryen.outputs.cache-hit != 'true'
Expand All @@ -58,7 +58,7 @@ jobs:
repository: WebAssembly/binaryen
path: binaryen
submodules: true
ref: version_118
ref: d200d06fef7f4edd331c1f928493beb332a2d910

- name: Install ninja (Ubuntu)
if: matrix.os == 'ubuntu-latest' && steps.cache-binaryen.outputs.cache-hit != 'true'
Expand All @@ -80,7 +80,7 @@ jobs:
uses: actions/cache/save@v4
with:
path: binaryen
key: ${{ runner.os }}-binaryen-version_118
key: ${{ runner.os }}-binaryen-eh

- name: Set binaryen's path
run: |
Expand Down
1 change: 1 addition & 0 deletions compiler/lib-wasm/binaryen.ml
Original file line number Diff line number Diff line change
Expand Up @@ -123,6 +123,7 @@ let optimize ~profile ~opt_input_sourcemap ~input_file ~opt_output_sourcemap ~ou
in
command
("wasm-opt"
:: "--emit-exnref"
:: (common_options ()
@ optimization_options.(level - 1)
@ [ Filename.quote input_file; "-o"; Filename.quote output_file ])
Expand Down
11 changes: 6 additions & 5 deletions compiler/lib-wasm/wasm_output.ml
Original file line number Diff line number Diff line change
Expand Up @@ -648,15 +648,16 @@ end = struct
output_byte ch 0x0B
| Try (typ, l, catches) ->
Feature.require exception_handling;
output_byte ch 0x06;
output_byte ch 0x1f;
output_blocktype st.type_names ch typ;
List.iter ~f:(fun i' -> output_instruction st ch i') l;
output_uint ch (List.length catches);
List.iter
~f:(fun (tag, l, ty) ->
output_byte ch 0x07;
~f:(fun (tag, l, _) ->
output_byte ch 0x00;
output_uint ch (Hashtbl.find st.tag_names tag);
output_instruction st ch (Br (l + 1, Some (Pop ty))))
output_uint ch l)
catches;
List.iter ~f:(fun i' -> output_instruction st ch i') l;
output_byte ch 0X0B

and output_instruction st ch i =
Expand Down
16 changes: 6 additions & 10 deletions compiler/lib-wasm/wat_output.ml
Original file line number Diff line number Diff line change
Expand Up @@ -444,17 +444,13 @@ let expression_or_instructions ctx st in_function =
]
| Try (ty, body, catches) ->
[ List
(Atom "try"
(Atom "try_table"
:: (block_type st ty
@ List (Atom "do" :: instructions body)
:: List.map
~f:(fun (tag, i, ty) ->
List
(Atom "catch"
:: index st.tag_names tag
:: (instruction (Wasm_ast.Event Code_generation.hidden_location)
@ instruction (Wasm_ast.Br (i + 1, Some (Pop ty))))))
catches))
@ List.map
~f:(fun (tag, i, _ty) ->
List [ Atom "catch"; index st.tag_names tag; Atom (string_of_int i) ])
catches
@ instructions body))
]
and instruction i =
match i with
Expand Down
2 changes: 1 addition & 1 deletion tools/node_wrapper.sh
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
#!/bin/sh
export PATH=$(echo $PATH | cut -d : -f 2-) # Do not call oneself recursively
exec node --experimental-wasm-imported-strings --experimental-wasm-stack-switching --stack-size=10000 "$@"
exec node --experimental-wasm-exnref --experimental-wasm-imported-strings --experimental-wasm-stack-switching --stack-size=10000 "$@"
Loading