@@ -2033,7 +2033,7 @@ void WasmBinaryBuilder::readMemories() {
20332033 memory->shared ,
20342034 memory->indexType ,
20352035 Memory::kUnlimitedSize );
2036- memories. push_back (std::move (memory));
2036+ wasm. addMemory (std::move (memory));
20372037 }
20382038}
20392039
@@ -2247,11 +2247,8 @@ Name WasmBinaryBuilder::getTagName(Index index) {
22472247}
22482248
22492249Memory* WasmBinaryBuilder::getMemory (Index index) {
2250- Index numMemoryImports = memoryImports.size ();
2251- if (index < numMemoryImports) {
2252- return memoryImports[index];
2253- } else if (index - numMemoryImports < memories.size ()) {
2254- return memories[index - numMemoryImports].get ();
2250+ if (index < wasm.memories .size ()) {
2251+ return wasm.memories [index].get ();
22552252 }
22562253 throwError (" Memory index out of range." );
22572254}
@@ -2347,7 +2344,6 @@ void WasmBinaryBuilder::readImports() {
23472344 memory->shared ,
23482345 memory->indexType ,
23492346 Memory::kUnlimitedSize );
2350- memoryImports.push_back (memory.get ());
23512347 wasm.addMemory (std::move (memory));
23522348 break ;
23532349 }
@@ -2984,9 +2980,6 @@ void WasmBinaryBuilder::processNames() {
29842980 for (auto & segment : elementSegments) {
29852981 wasm.addElementSegment (std::move (segment));
29862982 }
2987- for (auto & memory : memories) {
2988- wasm.addMemory (std::move (memory));
2989- }
29902983 for (auto & segment : dataSegments) {
29912984 wasm.addDataSegment (std::move (segment));
29922985 }
@@ -3392,11 +3385,8 @@ void WasmBinaryBuilder::readNames(size_t payloadLen) {
33923385 auto index = getU32LEB ();
33933386 auto rawName = getInlineString ();
33943387 auto name = processor.process (rawName);
3395- auto numMemoryImports = memoryImports.size ();
3396- if (index < numMemoryImports) {
3397- memoryImports[index]->setExplicitName (name);
3398- } else if (index - numMemoryImports < memories.size ()) {
3399- memories[index - numMemoryImports]->setExplicitName (name);
3388+ if (index < wasm.memories .size ()) {
3389+ wasm.memories [index]->setExplicitName (name);
34003390 } else {
34013391 std::cerr << " warning: memory index out of bounds in name section, "
34023392 " memory subsection: "
@@ -4379,16 +4369,10 @@ Index WasmBinaryBuilder::readMemoryAccess(Address& alignment, Address& offset) {
43794369 if (hasMemIdx) {
43804370 memIdx = getU32LEB ();
43814371 }
4382- Memory* memory = nullptr ;
4383- auto numMemoryImports = memoryImports.size ();
4384- if (memIdx < numMemoryImports) {
4385- memory = memoryImports[memIdx];
4386- } else if (memIdx - numMemoryImports < memories.size ()) {
4387- memory = memories[memIdx - numMemoryImports].get ();
4388- }
4389- if (!memory) {
4372+ if (memIdx >= wasm.memories .size ()) {
43904373 throwError (" Memory index out of range while reading memory alignment." );
43914374 }
4375+ auto * memory = wasm.memories [memIdx].get ();
43924376 offset = memory->indexType == Type::i32 ? getU32LEB () : getU64LEB ();
43934377
43944378 return memIdx;
0 commit comments