diff options
-rw-r--r-- | src/wasm/wasm-emscripten.cpp | 24 | ||||
-rw-r--r-- | test/lld/em_asm.wast.mem.out | 4 | ||||
-rw-r--r-- | test/lld/em_asm.wast.out | 4 | ||||
-rw-r--r-- | test/lld/em_asm_O0.wast.out | 4 | ||||
-rw-r--r-- | test/lld/em_asm_main_thread.wast.out | 4 | ||||
-rw-r--r-- | test/lld/em_asm_shared.wast.out | 4 |
6 files changed, 21 insertions, 23 deletions
diff --git a/src/wasm/wasm-emscripten.cpp b/src/wasm/wasm-emscripten.cpp index d12bb9bba..690ce17d0 100644 --- a/src/wasm/wasm-emscripten.cpp +++ b/src/wasm/wasm-emscripten.cpp @@ -688,10 +688,11 @@ struct AsmConstWalker : public LinearExecutionWalker<AsmConstWalker> { struct AsmConst { std::set<std::string> sigs; Address id; + std::string code; Proxying proxy; }; - std::map<std::string, AsmConst> asmConsts; + std::vector<AsmConst> asmConsts; std::set<std::pair<std::string, Proxying>> allSigs; // last sets in the current basic block, per index std::map<Index, LocalSet*> sets; @@ -839,14 +840,13 @@ AsmConstWalker::AsmConst& AsmConstWalker::createAsmConst(uint32_t id, std::string code, std::string sig, Name name) { - if (asmConsts.count(code) == 0) { - AsmConst asmConst; - asmConst.id = id; - asmConst.sigs.insert(sig); - asmConst.proxy = proxyType(name); - asmConsts[code] = asmConst; - } - return asmConsts[code]; + AsmConst asmConst; + asmConst.id = id; + asmConst.code = code; + asmConst.sigs.insert(sig); + asmConst.proxy = proxyType(name); + asmConsts.push_back(asmConst); + return asmConsts.back(); } std::string AsmConstWalker::asmConstSig(std::string baseSig) { @@ -1105,11 +1105,9 @@ std::string EmscriptenGlueGenerator::generateEmscriptenMetadata( commaFirst = true; if (!emAsmWalker.asmConsts.empty()) { meta << " \"asmConsts\": {"; - for (auto& pair : emAsmWalker.asmConsts) { - auto& code = pair.first; - auto& asmConst = pair.second; + for (auto& asmConst : emAsmWalker.asmConsts) { meta << nextElement(); - meta << '"' << asmConst.id << "\": [\"" << code << "\", "; + meta << '"' << asmConst.id << "\": [\"" << asmConst.code << "\", "; printSet(meta, asmConst.sigs); meta << ", [\"" << proxyingSuffix(asmConst.proxy) << "\"]"; diff --git a/test/lld/em_asm.wast.mem.out b/test/lld/em_asm.wast.mem.out index 5fa2ddb38..ef098b2fb 100644 --- a/test/lld/em_asm.wast.mem.out +++ b/test/lld/em_asm.wast.mem.out @@ -226,9 +226,9 @@ --BEGIN METADATA -- { "asmConsts": { - "621": ["{ Module.print(\"Got \" + $0); }", ["iii"], [""]], "568": ["{ Module.print(\"Hello world\"); }", ["iii"], [""]], - "601": ["{ return $0 + $1; }", ["iii"], [""]] + "601": ["{ return $0 + $1; }", ["iii"], [""]], + "621": ["{ Module.print(\"Got \" + $0); }", ["iii"], [""]] }, "staticBump": 84, "tableSize": 1, diff --git a/test/lld/em_asm.wast.out b/test/lld/em_asm.wast.out index 3ad9351b3..ed36f591b 100644 --- a/test/lld/em_asm.wast.out +++ b/test/lld/em_asm.wast.out @@ -227,9 +227,9 @@ --BEGIN METADATA -- { "asmConsts": { - "621": ["{ Module.print(\"Got \" + $0); }", ["iii"], [""]], "568": ["{ Module.print(\"Hello world\"); }", ["iii"], [""]], - "601": ["{ return $0 + $1; }", ["iii"], [""]] + "601": ["{ return $0 + $1; }", ["iii"], [""]], + "621": ["{ Module.print(\"Got \" + $0); }", ["iii"], [""]] }, "staticBump": 84, "tableSize": 1, diff --git a/test/lld/em_asm_O0.wast.out b/test/lld/em_asm_O0.wast.out index 6a66ac090..692b3fe6e 100644 --- a/test/lld/em_asm_O0.wast.out +++ b/test/lld/em_asm_O0.wast.out @@ -87,9 +87,9 @@ --BEGIN METADATA -- { "asmConsts": { - "621": ["{ Module.print(\"Got \" + $0); }", ["ii"], [""]], "568": ["{ Module.print(\"Hello world\"); }", ["i"], [""]], - "601": ["{ return $0 + $1; }", ["iii"], [""]] + "601": ["{ return $0 + $1; }", ["iii"], [""]], + "621": ["{ Module.print(\"Got \" + $0); }", ["ii"], [""]] }, "staticBump": 84, "tableSize": 1, diff --git a/test/lld/em_asm_main_thread.wast.out b/test/lld/em_asm_main_thread.wast.out index 43c1902c0..2020b172e 100644 --- a/test/lld/em_asm_main_thread.wast.out +++ b/test/lld/em_asm_main_thread.wast.out @@ -227,9 +227,9 @@ --BEGIN METADATA -- { "asmConsts": { - "621": ["{ Module.print(\"Got \" + $0); }", ["iii"], ["sync_on_main_thread_"]], "568": ["{ Module.print(\"Hello world\"); }", ["iii"], ["sync_on_main_thread_"]], - "601": ["{ return $0 + $1; }", ["iii"], ["sync_on_main_thread_"]] + "601": ["{ return $0 + $1; }", ["iii"], ["sync_on_main_thread_"]], + "621": ["{ Module.print(\"Got \" + $0); }", ["iii"], ["sync_on_main_thread_"]] }, "staticBump": 84, "tableSize": 1, diff --git a/test/lld/em_asm_shared.wast.out b/test/lld/em_asm_shared.wast.out index 351ed045a..62b8d469e 100644 --- a/test/lld/em_asm_shared.wast.out +++ b/test/lld/em_asm_shared.wast.out @@ -218,9 +218,9 @@ --BEGIN METADATA -- { "asmConsts": { - "53": ["{ Module.print(\"Got \" + $0); }", ["iii"], [""]], "0": ["{ Module.print(\"Hello world\"); }", ["iii"], [""]], - "33": ["{ return $0 + $1; }", ["iii"], [""]] + "33": ["{ return $0 + $1; }", ["iii"], [""]], + "53": ["{ Module.print(\"Got \" + $0); }", ["iii"], [""]] }, "staticBump": 0, "tableSize": 0, |