summaryrefslogtreecommitdiff
path: root/src/tools/fuzzing.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/tools/fuzzing.h')
-rw-r--r--src/tools/fuzzing.h22
1 files changed, 10 insertions, 12 deletions
diff --git a/src/tools/fuzzing.h b/src/tools/fuzzing.h
index 288fdc23c..de03e943b 100644
--- a/src/tools/fuzzing.h
+++ b/src/tools/fuzzing.h
@@ -425,23 +425,20 @@ private:
// TODO(reference-types): allow the fuzzer to create multiple tables
void setupTables() {
- if (wasm.tables.size() > 0) {
- auto& table = wasm.tables[0];
- table->initial = table->max = 0;
-
- auto segment = std::make_unique<ElementSegment>(
- table->name, builder.makeConst(int32_t(0)));
- segment->setName(Name::fromInt(0), false);
- wasm.addElementSegment(std::move(segment));
- } else {
+ // Ensure an element segment, adding one or even adding a whole table as
+ // needed.
+ if (wasm.tables.empty()) {
auto table = builder.makeTable(
Names::getValidTableName(wasm, "fuzzing_table"), 0, 0);
table->hasExplicitName = true;
+ wasm.addTable(std::move(table));
+ }
+ if (wasm.elementSegments.empty()) {
+ // TODO: use a random table
auto segment = std::make_unique<ElementSegment>(
- table->name, builder.makeConst(int32_t(0)));
- segment->setName(Name::fromInt(0), false);
+ wasm.tables[0]->name, builder.makeConst(int32_t(0)));
+ segment->setName(Names::getValidElementSegmentName(wasm, "elem$"), false);
wasm.addElementSegment(std::move(segment));
- wasm.addTable(std::move(table));
}
}
@@ -1483,6 +1480,7 @@ private:
for (const auto& type : targetFn->sig.params) {
args.push_back(make(type));
}
+ // TODO: use a random table
return builder.makeCallIndirect(
wasm.tables[0]->name, target, args, targetFn->sig, isReturn);
}