diff options
Diffstat (limited to 'src/binary-reader-ir.cc')
-rw-r--r-- | src/binary-reader-ir.cc | 26 |
1 files changed, 16 insertions, 10 deletions
diff --git a/src/binary-reader-ir.cc b/src/binary-reader-ir.cc index 9d71f70b..dd7efeee 100644 --- a/src/binary-reader-ir.cc +++ b/src/binary-reader-ir.cc @@ -201,8 +201,10 @@ class BinaryReaderIR : public BinaryReaderNop { Result BeginElemSegment(Index index, Index table_index, bool passive) override; Result BeginElemSegmentInitExpr(Index index) override; Result EndElemSegmentInitExpr(Index index) override; - Result OnElemSegmentFunctionIndexCount(Index index, Index count) override; - Result OnElemSegmentFunctionIndex(Index index, Index func_index) override; + Result OnElemSegmentElemExprCount(Index index, Index count) override; + Result OnElemSegmentElemExpr_RefNull(Index segment_index) override; + Result OnElemSegmentElemExpr_RefFunc(Index segment_index, + Index func_index) override; Result OnDataSegmentCount(Index count) override; Result BeginDataSegment(Index index, Index memory_index, bool passive) override; @@ -1003,23 +1005,27 @@ Result BinaryReaderIR::EndElemSegmentInitExpr(Index index) { return Result::Ok; } -Result BinaryReaderIR::OnElemSegmentFunctionIndexCount(Index index, - Index count) { +Result BinaryReaderIR::OnElemSegmentElemExprCount(Index index, Index count) { assert(index == module_->elem_segments.size() - 1); ElemSegment* segment = module_->elem_segments[index]; WABT_TRY - segment->vars.reserve(count); + segment->elem_exprs.reserve(count); WABT_CATCH_BAD_ALLOC return Result::Ok; } -Result BinaryReaderIR::OnElemSegmentFunctionIndex(Index segment_index, - Index func_index) { +Result BinaryReaderIR::OnElemSegmentElemExpr_RefNull(Index segment_index) { assert(segment_index == module_->elem_segments.size() - 1); ElemSegment* segment = module_->elem_segments[segment_index]; - segment->vars.emplace_back(); - Var* var = &segment->vars.back(); - *var = Var(func_index, GetLocation()); + segment->elem_exprs.emplace_back(); + return Result::Ok; +} + +Result BinaryReaderIR::OnElemSegmentElemExpr_RefFunc(Index segment_index, + Index func_index) { + assert(segment_index == module_->elem_segments.size() - 1); + ElemSegment* segment = module_->elem_segments[segment_index]; + segment->elem_exprs.emplace_back(Var(func_index, GetLocation())); return Result::Ok; } |