diff options
Diffstat (limited to 'src/wasm/wasm-validator.cpp')
-rw-r--r-- | src/wasm/wasm-validator.cpp | 40 |
1 files changed, 20 insertions, 20 deletions
diff --git a/src/wasm/wasm-validator.cpp b/src/wasm/wasm-validator.cpp index 54bc2f9d4..4c6e8e929 100644 --- a/src/wasm/wasm-validator.cpp +++ b/src/wasm/wasm-validator.cpp @@ -1301,7 +1301,7 @@ void FunctionValidator::visitMemoryInit(MemoryInit* curr) { "Memory operations require a memory")) { return; } - shouldBeTrue(curr->segment < getModule()->memory.segments.size(), + shouldBeTrue(curr->segment < getModule()->dataSegments.size(), curr, "memory.init segment index out of bounds"); } @@ -1317,7 +1317,7 @@ void FunctionValidator::visitDataDrop(DataDrop* curr) { "Memory operations require a memory")) { return; } - shouldBeTrue(curr->segment < getModule()->memory.segments.size(), + shouldBeTrue(curr->segment < getModule()->dataSegments.size(), curr, "data.drop segment index out of bounds"); } @@ -3068,53 +3068,53 @@ static void validateMemory(Module& module, ValidationInfo& info) { "memory", "memory is shared, but atomics are disabled"); } - for (auto& segment : curr.segments) { - auto size = segment.data.size(); - if (segment.isPassive) { + for (auto& segment : module.dataSegments) { + auto size = segment->data.size(); + if (segment->isPassive) { info.shouldBeTrue(module.features.hasBulkMemory(), - segment.offset, + segment->offset, "nonzero segment flags (bulk memory is disabled)"); - info.shouldBeEqual(segment.offset, + info.shouldBeEqual(segment->offset, (Expression*)nullptr, - segment.offset, + segment->offset, "passive segment should not have an offset"); } else { if (curr.is64()) { - if (!info.shouldBeEqual(segment.offset->type, + if (!info.shouldBeEqual(segment->offset->type, Type(Type::i64), - segment.offset, + segment->offset, "segment offset should be i64")) { continue; } } else { - if (!info.shouldBeEqual(segment.offset->type, + if (!info.shouldBeEqual(segment->offset->type, Type(Type::i32), - segment.offset, + segment->offset, "segment offset should be i32")) { continue; } } - info.shouldBeTrue(checkSegmentOffset(segment.offset, - segment.data.size(), + info.shouldBeTrue(checkSegmentOffset(segment->offset, + segment->data.size(), curr.initial * Memory::kPageSize, module.features), - segment.offset, + segment->offset, "memory segment offset should be reasonable"); - if (segment.offset->is<Const>()) { - auto start = segment.offset->cast<Const>()->value.getUnsigned(); + if (segment->offset->is<Const>()) { + auto start = segment->offset->cast<Const>()->value.getUnsigned(); auto end = start + size; info.shouldBeTrue(end <= curr.initial * Memory::kPageSize, - segment.data.size(), + segment->data.size(), "segment size should fit in memory (end)"); } - FunctionValidator(module, &info).validate(segment.offset); + FunctionValidator(module, &info).validate(segment->offset); } // If the memory is imported we don't actually know its initial size. // Specifically wasm dll's import a zero sized memory which is perfectly // valid. if (!curr.imported()) { info.shouldBeTrue(size <= curr.initial * Memory::kPageSize, - segment.data.size(), + segment->data.size(), "segment size should fit in memory (initial)"); } } |