@@ -144,9 +144,12 @@ class BinaryReaderIR : public BinaryReaderNop {
144144 Result OnFunction (Index index, Index sig_index) override ;
145145
146146 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 ;
150153
151154 Result OnMemoryCount (Index count) override ;
152155 Result OnMemory (Index index,
@@ -700,9 +703,10 @@ Result BinaryReaderIR::OnTableCount(Index count) {
700703 return Result::Ok;
701704}
702705
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 ) {
706710 auto field = std::make_unique<TableModuleField>(GetLocation ());
707711 Table& table = field->table ;
708712 table.elem_limits = *elem_limits;
@@ -712,6 +716,16 @@ Result BinaryReaderIR::OnTable(Index index,
712716 return Result::Ok;
713717}
714718
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+
715729Result BinaryReaderIR::OnMemoryCount (Index count) {
716730 WABT_TRY
717731 module_->memories .reserve (module_->num_memory_imports + count);
0 commit comments