diff options
Diffstat (limited to 'src/binary-reader-ir.cc')
-rw-r--r-- | src/binary-reader-ir.cc | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/src/binary-reader-ir.cc b/src/binary-reader-ir.cc index 3678438e..58636e88 100644 --- a/src/binary-reader-ir.cc +++ b/src/binary-reader-ir.cc @@ -260,6 +260,8 @@ class BinaryReaderIR : public BinaryReaderNop { Index section_index) override; Result OnEventSymbol(Index index, uint32_t flags, string_view name, Index event_index) override; + Result OnTableSymbol(Index index, uint32_t flags, string_view name, + Index table_index) override; private: Location GetLocation() const; @@ -1349,6 +1351,23 @@ Result BinaryReaderIR::OnEventSymbol(Index index, uint32_t flags, return Result::Ok; } +Result BinaryReaderIR::OnTableSymbol(Index index, uint32_t flags, + string_view name, Index table_index) { + if (name.empty()) { + return Result::Ok; + } + if (table_index >= module_->tables.size()) { + PrintError("invalid table index: %" PRIindex, table_index); + return Result::Error; + } + Table* table = module_->tables[table_index]; + std::string dollar_name = + GetUniqueName(&module_->table_bindings, MakeDollarName(name)); + table->name = dollar_name; + module_->table_bindings.emplace(dollar_name, Binding(table_index)); + return Result::Ok; +} + } // end anonymous namespace Result ReadBinaryIr(const char* filename, |