summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/wasm/wasm-emscripten.cpp24
-rw-r--r--test/lld/em_asm.wast.mem.out4
-rw-r--r--test/lld/em_asm.wast.out4
-rw-r--r--test/lld/em_asm_O0.wast.out4
-rw-r--r--test/lld/em_asm_main_thread.wast.out4
-rw-r--r--test/lld/em_asm_shared.wast.out4
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,