From 25632dd92d125b4f88b1cad4a63110787e46b0b2 Mon Sep 17 00:00:00 2001 From: Andreas Rossberg <rossberg@mpi-sws.org> Date: Wed, 21 Feb 2024 09:51:34 +0100 Subject: [PATCH] Add noexn type to overview (#298) --- proposals/exception-handling/Exceptions.md | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/proposals/exception-handling/Exceptions.md b/proposals/exception-handling/Exceptions.md index 08c484a6..9a2ddfb8 100644 --- a/proposals/exception-handling/Exceptions.md +++ b/proposals/exception-handling/Exceptions.md @@ -331,6 +331,18 @@ document](https://github.com/WebAssembly/design/blob/master/BinaryEncoding.md). The type `exnref` is represented by the type opcode `-0x17`. +When combined with the [GC proposal](https://github.com/WebAssembly/gc/blob/main/proposals/gc/MVP.md), +there also is a value type `nullexnref` with opcode `-0x0c`. +Furthermore, these opcodes also function as heap type, +i.e., `exn` is a new heap type with opcode `-0x17`, +and `noexn` is a new heap type with opcode `-0x0c`; +`exnref` and `nullexnref` are shorthands for `(ref null exn)` and `(ref null noexn)`, respectively. + +The heap type `noexn` is a subtype of `exn`. +They are not in a subtype relation with any other type (except bottom), +such that they form a new disjoint hierarchy of heap types. + + ##### tag_type We reserve a bit to denote the exception attribute: