diff options
Diffstat (limited to 'src/wasm')
-rw-r--r-- | src/wasm/wasm-binary.cpp | 30 |
1 files changed, 7 insertions, 23 deletions
diff --git a/src/wasm/wasm-binary.cpp b/src/wasm/wasm-binary.cpp index 1ea931612..df99fabb9 100644 --- a/src/wasm/wasm-binary.cpp +++ b/src/wasm/wasm-binary.cpp @@ -2033,7 +2033,7 @@ void WasmBinaryBuilder::readMemories() { memory->shared, memory->indexType, Memory::kUnlimitedSize); - memories.push_back(std::move(memory)); + wasm.addMemory(std::move(memory)); } } @@ -2247,11 +2247,8 @@ Name WasmBinaryBuilder::getTagName(Index index) { } Memory* WasmBinaryBuilder::getMemory(Index index) { - Index numMemoryImports = memoryImports.size(); - if (index < numMemoryImports) { - return memoryImports[index]; - } else if (index - numMemoryImports < memories.size()) { - return memories[index - numMemoryImports].get(); + if (index < wasm.memories.size()) { + return wasm.memories[index].get(); } throwError("Memory index out of range."); } @@ -2347,7 +2344,6 @@ void WasmBinaryBuilder::readImports() { memory->shared, memory->indexType, Memory::kUnlimitedSize); - memoryImports.push_back(memory.get()); wasm.addMemory(std::move(memory)); break; } @@ -2984,9 +2980,6 @@ void WasmBinaryBuilder::processNames() { for (auto& segment : elementSegments) { wasm.addElementSegment(std::move(segment)); } - for (auto& memory : memories) { - wasm.addMemory(std::move(memory)); - } for (auto& segment : dataSegments) { wasm.addDataSegment(std::move(segment)); } @@ -3392,11 +3385,8 @@ void WasmBinaryBuilder::readNames(size_t payloadLen) { auto index = getU32LEB(); auto rawName = getInlineString(); auto name = processor.process(rawName); - auto numMemoryImports = memoryImports.size(); - if (index < numMemoryImports) { - memoryImports[index]->setExplicitName(name); - } else if (index - numMemoryImports < memories.size()) { - memories[index - numMemoryImports]->setExplicitName(name); + if (index < wasm.memories.size()) { + wasm.memories[index]->setExplicitName(name); } else { std::cerr << "warning: memory index out of bounds in name section, " "memory subsection: " @@ -4379,16 +4369,10 @@ Index WasmBinaryBuilder::readMemoryAccess(Address& alignment, Address& offset) { if (hasMemIdx) { memIdx = getU32LEB(); } - Memory* memory = nullptr; - auto numMemoryImports = memoryImports.size(); - if (memIdx < numMemoryImports) { - memory = memoryImports[memIdx]; - } else if (memIdx - numMemoryImports < memories.size()) { - memory = memories[memIdx - numMemoryImports].get(); - } - if (!memory) { + if (memIdx >= wasm.memories.size()) { throwError("Memory index out of range while reading memory alignment."); } + auto* memory = wasm.memories[memIdx].get(); offset = memory->indexType == Type::i32 ? getU32LEB() : getU64LEB(); return memIdx; |