diff options
author | Alon Zakai <azakai@google.com> | 2022-08-29 09:44:46 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-08-29 09:44:46 -0700 |
commit | 8108ce28e66f1002932f6e5dc9dd4f23c8b8a9f3 (patch) | |
tree | 6a926f435bfb7c5f776a349bb357e1b4f46f1625 | |
parent | 97fd63154cf8be9e12f1919c40eb6bc949c4c704 (diff) | |
download | binaryen-8108ce28e66f1002932f6e5dc9dd4f23c8b8a9f3.tar.gz binaryen-8108ce28e66f1002932f6e5dc9dd4f23c8b8a9f3.tar.bz2 binaryen-8108ce28e66f1002932f6e5dc9dd4f23c8b8a9f3.zip |
[NFC] Simplify binary reading logic for memories (#4987)
Similar to #4969 but for memories.
-rw-r--r-- | src/wasm-binary.h | 6 | ||||
-rw-r--r-- | src/wasm/wasm-binary.cpp | 30 |
2 files changed, 7 insertions, 29 deletions
diff --git a/src/wasm-binary.h b/src/wasm-binary.h index 4a4cab13f..e150915a0 100644 --- a/src/wasm-binary.h +++ b/src/wasm-binary.h @@ -1528,12 +1528,6 @@ public: // names std::vector<std::unique_ptr<ElementSegment>> elementSegments; - // we store memories here after being read from binary, before we know their - // names - std::vector<std::unique_ptr<Memory>> memories; - // we store memory imports here before wasm.addMemoryImport after we know - // their names - std::vector<Memory*> memoryImports; // at index i we have all references to the memory i std::map<Index, std::vector<wasm::Name*>> memoryRefs; 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; |