summaryrefslogtreecommitdiff
path: root/src/binary-reader-objdump.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/binary-reader-objdump.cc')
-rw-r--r--src/binary-reader-objdump.cc18
1 files changed, 17 insertions, 1 deletions
diff --git a/src/binary-reader-objdump.cc b/src/binary-reader-objdump.cc
index 25e2b1b3..b84a4691 100644
--- a/src/binary-reader-objdump.cc
+++ b/src/binary-reader-objdump.cc
@@ -204,6 +204,9 @@ class BinaryReaderObjdumpDisassemble : public BinaryReaderObjdumpBase {
Result OnBrTableExpr(Index num_targets,
Index* target_depths,
Index default_target_depth) override;
+ Result OnIfExceptExpr(Index num_types,
+ Type* sig_types,
+ Index except_index) override;
Result OnEndExpr() override;
Result OnEndFunc() override;
@@ -270,7 +273,6 @@ void BinaryReaderObjdumpDisassemble::LogOpcode(const uint8_t* data,
switch (current_opcode) {
case Opcode::Else:
case Opcode::Catch:
- case Opcode::CatchAll:
indent_level--;
default:
break;
@@ -366,6 +368,20 @@ Result BinaryReaderObjdumpDisassemble::OnBrTableExpr(
return Result::Ok;
}
+Result BinaryReaderObjdumpDisassemble::OnIfExceptExpr(Index num_types,
+ Type* sig_types,
+ Index except_index) {
+ Offset immediate_len = state->offset - current_opcode_offset;
+ if (num_types) {
+ LogOpcode(data_, immediate_len, "%s %u", GetTypeName(*sig_types),
+ except_index);
+ } else {
+ LogOpcode(data_, immediate_len, "%u", except_index);
+ }
+ indent_level++;
+ return Result::Ok;
+}
+
Result BinaryReaderObjdumpDisassemble::OnEndFunc() {
LogOpcode(nullptr, 0, nullptr);
return Result::Ok;