From a0b7abef00b59eeafed58c774195189425d020b0 Mon Sep 17 00:00:00 2001 From: "Soni L." Date: Wed, 20 Nov 2024 14:51:48 -0300 Subject: binary/wat: Implement EHv4 (#2470) This pull request implements EHv4. Binary is mostly untested until interp is working. --- src/resolve-names.cc | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) (limited to 'src/resolve-names.cc') diff --git a/src/resolve-names.cc b/src/resolve-names.cc index 9fc8e443..67fc44e9 100644 --- a/src/resolve-names.cc +++ b/src/resolve-names.cc @@ -75,6 +75,8 @@ class NameResolver : public ExprVisitor::DelegateNop { Result OnStoreExpr(StoreExpr*) override; Result BeginTryExpr(TryExpr*) override; Result EndTryExpr(TryExpr*) override; + Result BeginTryTableExpr(TryTableExpr*) override; + Result EndTryTableExpr(TryTableExpr*) override; Result OnThrowExpr(ThrowExpr*) override; Result OnRethrowExpr(RethrowExpr*) override; Result OnSimdLoadLaneExpr(SimdLoadLaneExpr*) override; @@ -442,6 +444,23 @@ Result NameResolver::EndTryExpr(TryExpr*) { return Result::Ok; } +Result NameResolver::BeginTryTableExpr(TryTableExpr* expr) { + for (TableCatch& catch_ : expr->catches) { + if (!catch_.IsCatchAll()) { + ResolveTagVar(&catch_.tag); + } + ResolveLabelVar(&catch_.target); + } + PushLabel(expr->block.label); + ResolveBlockDeclarationVar(&expr->block.decl); + return Result::Ok; +} + +Result NameResolver::EndTryTableExpr(TryTableExpr*) { + PopLabel(); + return Result::Ok; +} + Result NameResolver::OnCatchExpr(TryExpr*, Catch* catch_) { if (!catch_->IsCatchAll()) { ResolveTagVar(&catch_->var); -- cgit v1.2.3