diff options
author | Heejin Ahn <aheejin@gmail.com> | 2023-12-08 15:03:09 -0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-12-08 15:03:09 -0800 |
commit | 1d615b38dd4152494d2f4d3520c8b1d917624a30 (patch) | |
tree | 40a32cc670c62e1fb5bdfcfda9f65d35d721956f /test/exception-handling.wast.fromBinary.noDebugInfo | |
parent | 48373b66e613b7e626322b595ae6551582acc6c2 (diff) | |
download | binaryen-1d615b38dd4152494d2f4d3520c8b1d917624a30.tar.gz binaryen-1d615b38dd4152494d2f4d3520c8b1d917624a30.tar.bz2 binaryen-1d615b38dd4152494d2f4d3520c8b1d917624a30.zip |
[EH] Add exnref type back (#6149)
At the Oct hybrid CG meeting, we decided to add back `exnref`, which was
removed in 2020:
https://github.com/WebAssembly/meetings/blob/main/main/2023/CG-10.md
The new version of the proposal reflected in the explainer:
https://github.com/WebAssembly/exception-handling/blob/main/proposals/exception-handling/Exceptions.md
While adding support for `exnref` in the current codebase which has all
GC subtype hierarchies, I noticed we might need `noexn` heap type for
the bottom type of `exn`. We don't have it now so I just set it to 0xff
for the moment.
Diffstat (limited to 'test/exception-handling.wast.fromBinary.noDebugInfo')
-rw-r--r-- | test/exception-handling.wast.fromBinary.noDebugInfo | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/test/exception-handling.wast.fromBinary.noDebugInfo b/test/exception-handling.wast.fromBinary.noDebugInfo index 4bc460630..beea8498b 100644 --- a/test/exception-handling.wast.fromBinary.noDebugInfo +++ b/test/exception-handling.wast.fromBinary.noDebugInfo @@ -4,6 +4,7 @@ (type $2 (func (param i64))) (type $3 (func (param i32 i64))) (type $4 (func (param eqref))) + (type $5 (func (result exnref))) (tag $tag$0 (param i32)) (tag $tag$1 (param i64)) (tag $tag$2 (param i32 i64)) @@ -428,5 +429,18 @@ ) (nop) ) + (func $8 (type $5) (result exnref) + (local $0 exnref) + (local $1 nullexnref) + (if (result exnref) + (i32.const 1) + (if (result nullexnref) + (i32.const 1) + (local.get $1) + (ref.null noexn) + ) + (local.get $0) + ) + ) ) |