@@ -144,9 +144,12 @@ class BinaryReaderIR : public BinaryReaderNop {
144
144
Result OnFunction (Index index, Index sig_index) override ;
145
145
146
146
Result OnTableCount (Index count) override ;
147
- Result OnTable (Index index,
148
- Type elem_type,
149
- const Limits* elem_limits) override ;
147
+ Result BeginTable (Index index,
148
+ Type elem_type,
149
+ const Limits* elem_limits,
150
+ bool ) override ;
151
+ Result BeginTableInitExpr (Index index) override ;
152
+ Result EndTableInitExpr (Index index) override ;
150
153
151
154
Result OnMemoryCount (Index count) override ;
152
155
Result OnMemory (Index index,
@@ -700,9 +703,10 @@ Result BinaryReaderIR::OnTableCount(Index count) {
700
703
return Result::Ok;
701
704
}
702
705
703
- Result BinaryReaderIR::OnTable (Index index,
704
- Type elem_type,
705
- const Limits* elem_limits) {
706
+ Result BinaryReaderIR::BeginTable (Index index,
707
+ Type elem_type,
708
+ const Limits* elem_limits,
709
+ bool ) {
706
710
auto field = std::make_unique<TableModuleField>(GetLocation ());
707
711
Table& table = field->table ;
708
712
table.elem_limits = *elem_limits;
@@ -712,6 +716,16 @@ Result BinaryReaderIR::OnTable(Index index,
712
716
return Result::Ok;
713
717
}
714
718
719
+ Result BinaryReaderIR::BeginTableInitExpr (Index index) {
720
+ assert (index == module_->tables .size () - 1 );
721
+ Table* table = module_->tables [index];
722
+ return BeginInitExpr (&table->init_expr );
723
+ }
724
+
725
+ Result BinaryReaderIR::EndTableInitExpr (Index index) {
726
+ return EndInitExpr ();
727
+ }
728
+
715
729
Result BinaryReaderIR::OnMemoryCount (Index count) {
716
730
WABT_TRY
717
731
module_->memories .reserve (module_->num_memory_imports + count);
0 commit comments