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.cc26
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;
}