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.cc15
1 files changed, 10 insertions, 5 deletions
diff --git a/src/binary-reader-ir.cc b/src/binary-reader-ir.cc
index 0bc03ebe..c907cba5 100644
--- a/src/binary-reader-ir.cc
+++ b/src/binary-reader-ir.cc
@@ -205,10 +205,10 @@ class BinaryReaderIR : public BinaryReaderNop {
Result OnElemSegmentCount(Index count) override;
Result BeginElemSegment(Index index,
Index table_index,
- uint8_t flags,
- Type elem_type) override;
+ uint8_t flags) override;
Result BeginElemSegmentInitExpr(Index index) override;
Result EndElemSegmentInitExpr(Index index) override;
+ Result OnElemSegmentElemType(Index index, Type elem_type) override;
Result OnElemSegmentElemExprCount(Index index, Index count) override;
Result OnElemSegmentElemExpr_RefNull(Index segment_index) override;
Result OnElemSegmentElemExpr_RefFunc(Index segment_index,
@@ -1022,8 +1022,7 @@ Result BinaryReaderIR::OnElemSegmentCount(Index count) {
Result BinaryReaderIR::BeginElemSegment(Index index,
Index table_index,
- uint8_t flags,
- Type elem_type) {
+ uint8_t flags) {
auto field = MakeUnique<ElemSegmentModuleField>(GetLocation());
ElemSegment& elem_segment = field->elem_segment;
elem_segment.table_var = Var(table_index, GetLocation());
@@ -1034,7 +1033,6 @@ Result BinaryReaderIR::BeginElemSegment(Index index,
} else {
elem_segment.kind = SegmentKind::Active;
}
- elem_segment.elem_type = elem_type;
module_->AppendField(std::move(field));
return Result::Ok;
}
@@ -1051,6 +1049,13 @@ Result BinaryReaderIR::EndElemSegmentInitExpr(Index index) {
return Result::Ok;
}
+Result BinaryReaderIR::OnElemSegmentElemType(Index index, Type elem_type) {
+ assert(index == module_->elem_segments.size() - 1);
+ ElemSegment* segment = module_->elem_segments[index];
+ segment->elem_type = elem_type;
+ return Result::Ok;
+}
+
Result BinaryReaderIR::OnElemSegmentElemExprCount(Index index, Index count) {
assert(index == module_->elem_segments.size() - 1);
ElemSegment* segment = module_->elem_segments[index];