summaryrefslogtreecommitdiff
path: root/src/interp/istream.cc
diff options
context:
space:
mode:
authorAsumu Takikawa <asumu@igalia.com>2021-02-09 12:12:01 -0800
committerGitHub <noreply@github.com>2021-02-10 05:12:01 +0900
commit036a632a24679062e7fc891e7743195139bfa0a9 (patch)
tree6e639f32f3d4d1dee55280709cc5607153e3002f /src/interp/istream.cc
parent09ac53e41d959ce8e14e703e627327971e67f6d3 (diff)
downloadwabt-036a632a24679062e7fc891e7743195139bfa0a9.tar.gz
wabt-036a632a24679062e7fc891e7743195139bfa0a9.tar.bz2
wabt-036a632a24679062e7fc891e7743195139bfa0a9.zip
Update exception handling support to current proposal (#1596)
This PR updates the support of exception handling to the latest proposal (that is compatible with future 2-phase exception handling) described in https://github.com/WebAssembly/exception-handling/pull/137 and https://github.com/WebAssembly/exception-handling/pull/143. * Adds back tagged `catch $e`, `catch_all`, and `rethrow N` from a previous version of wabt, but with updates to match the current spec (e.g., `catch_all` shares an opcode with `else`, `rethrow`'s depth indexes only catch blocks, etc). * Adds `unwind` and `delegate` instructions. * Removes `exnref` and `br_on_exn`. * Updates relevant tests. There are some details that could still change (e.g., maybe how `delegate`'s depth is validated), but I'd be happy to submit further PRs if the spec details change.
Diffstat (limited to 'src/interp/istream.cc')
-rw-r--r--src/interp/istream.cc3
1 files changed, 2 insertions, 1 deletions
diff --git a/src/interp/istream.cc b/src/interp/istream.cc
index e4693c11..6c531a88 100644
--- a/src/interp/istream.cc
+++ b/src/interp/istream.cc
@@ -692,8 +692,8 @@ Instr Istream::Read(Offset* offset) const {
break;
case Opcode::Block:
- case Opcode::BrOnExn:
case Opcode::Catch:
+ case Opcode::Delegate:
case Opcode::Else:
case Opcode::End:
case Opcode::If:
@@ -703,6 +703,7 @@ Instr Istream::Read(Offset* offset) const {
case Opcode::Rethrow:
case Opcode::Throw:
case Opcode::Try:
+ case Opcode::Unwind:
case Opcode::ReturnCall:
// Not used.
break;