summaryrefslogtreecommitdiff
path: root/src/binary-reader-ir.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/binary-reader-ir.cc')
-rw-r--r--src/binary-reader-ir.cc19
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,