diff options
Diffstat (limited to 'src/wasm-interpreter.h')
-rw-r--r-- | src/wasm-interpreter.h | 19 |
1 files changed, 9 insertions, 10 deletions
diff --git a/src/wasm-interpreter.h b/src/wasm-interpreter.h index 7b17e344b..f682e89a2 100644 --- a/src/wasm-interpreter.h +++ b/src/wasm-interpreter.h @@ -2604,19 +2604,18 @@ private: offset.finalize(); // apply active memory segments - for (size_t i = 0, e = wasm.memory.segments.size(); i < e; ++i) { - Memory::Segment& segment = wasm.memory.segments[i]; - if (segment.isPassive) { + for (size_t i = 0, e = wasm.dataSegments.size(); i < e; ++i) { + auto& segment = wasm.dataSegments[i]; + if (segment->isPassive) { continue; } - Const size; - size.value = Literal(uint32_t(segment.data.size())); + size.value = Literal(uint32_t(segment->data.size())); size.finalize(); MemoryInit init; init.segment = i; - init.dest = segment.offset; + init.dest = segment->offset; init.offset = &offset; init.size = &size; init.finalize(); @@ -3303,8 +3302,8 @@ public: NOTE_EVAL1(offset); NOTE_EVAL1(size); - assert(curr->segment < wasm.memory.segments.size()); - Memory::Segment& segment = wasm.memory.segments[curr->segment]; + assert(curr->segment < wasm.dataSegments.size()); + auto& segment = wasm.dataSegments[curr->segment]; Address destVal(dest.getSingleValue().getUnsigned()); Address offsetVal(uint32_t(offset.getSingleValue().geti32())); @@ -3313,7 +3312,7 @@ public: if (offsetVal + sizeVal > 0 && droppedSegments.count(curr->segment)) { trap("out of bounds segment access in memory.init"); } - if ((uint64_t)offsetVal + sizeVal > segment.data.size()) { + if ((uint64_t)offsetVal + sizeVal > segment->data.size()) { trap("out of bounds segment access in memory.init"); } auto* inst = getMemoryInstance(); @@ -3324,7 +3323,7 @@ public: Literal addr(destVal + i); inst->externalInterface->store8( inst->getFinalAddressWithoutOffset(addr, 1), - segment.data[offsetVal + i]); + segment->data[offsetVal + i]); } return {}; } |