You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
This repository was archived by the owner on Apr 25, 2025. It is now read-only.
* Addressed the minor review comments.
* Minor corrections, notation readability, "control" prose in block contexts.
- Switching to "S ⊢ ..." notation for premises of typing rules for administrative instructions, to match the spec document.
- Readability: Changing quotes to number indices, and removing unnecessary explicit exponent variables.
- Suggesting prose for the new constructs in block contexts, connoting the new structured administrative instructions with control frame opcodes.
Copy file name to clipboardExpand all lines: proposals/exception-handling/Exceptions-formal-overview.md
+34-31Lines changed: 34 additions & 31 deletions
Original file line number
Diff line number
Diff line change
@@ -36,14 +36,13 @@ mod ::= 'module' ... tag*
36
36
37
37
## Validation (Typing)
38
38
39
-
#### Modification to Labels
39
+
###Validation Contexts: Tagtypes and modified Labels
40
40
41
41
To verify that the `rethrow l` instruction refers to a label surrounding the instructions of a catch block (call this a catch-label), we introduce a `kind` attribute to labels in the validation context, which is set to `catch` when the label is a catch-label and empty otherwise.
42
42
43
43
```
44
44
labelkind ::= 'catch'
45
45
labeltype ::= 'catch'? resulttype
46
-
C ::= {..., 'labels' labeltype}
47
46
```
48
47
49
48
The original notation `labels [t*]` is now an abbreviation for:
@@ -52,11 +51,11 @@ The original notation `labels [t*]` is now an abbreviation for:
52
51
'labels' [t*] ::= 'labels' ε [t*]
53
52
```
54
53
55
-
### Validation Contexts
54
+
The `labels` entry of validation contexts is modified to use the above definition of labels.
55
+
Moreover, validation contexts now hold a list of tag types, one for each tag known to them.
56
56
57
-
Validation contexts now hold a list of tag types, one for each tag known to them.
Note the `C` in `C^k` above stands for `control`, because the related administrative instructions are in some ways modeling [control frame opcodes](https://webassembly.github.io/spec/core/appendix/algorithm.html?highlight=control#data-structures) "on the stack".
133
+
133
134
#### Throw Contexts
134
135
135
136
Throw contexts don't skip over handlers (administrative `catch` or `delegate` instructions).
@@ -152,34 +153,35 @@ An absent tag address in a `catch` administrative instruction (i.e., `a? = ε`)
152
153
```
153
154
F; throw x ↪ F; throw a (if F.module.tagaddrs[x]=a)
0 commit comments