diff options
author | Alon Zakai (kripken) <alonzakai@gmail.com> | 2017-01-04 16:43:40 -0800 |
---|---|---|
committer | Alon Zakai (kripken) <alonzakai@gmail.com> | 2017-01-04 16:43:52 -0800 |
commit | f5d0aa800e45488aa2277e97edf9383722c00969 (patch) | |
tree | 6e51989062dd1966d0677adf03599d7d5a8051bb /src | |
parent | 575d695762f545e1c2784595d9c926488062f383 (diff) | |
download | binaryen-f5d0aa800e45488aa2277e97edf9383722c00969.tar.gz binaryen-f5d0aa800e45488aa2277e97edf9383722c00969.tar.bz2 binaryen-f5d0aa800e45488aa2277e97edf9383722c00969.zip |
ensure exports are added deterministically from binaries
Diffstat (limited to 'src')
-rw-r--r-- | src/wasm-binary.h | 1 | ||||
-rw-r--r-- | src/wasm/wasm-binary.cpp | 9 |
2 files changed, 6 insertions, 4 deletions
diff --git a/src/wasm-binary.h b/src/wasm-binary.h index 1edd3fa12..81755905c 100644 --- a/src/wasm-binary.h +++ b/src/wasm-binary.h @@ -690,6 +690,7 @@ public: void readFunctions(); std::map<Export*, Index> exportIndexes; + std::vector<Export*> exportOrder; void readExports(); Expression* readExpression(); diff --git a/src/wasm/wasm-binary.cpp b/src/wasm/wasm-binary.cpp index ebbc5a8ee..1d5ee1ff1 100644 --- a/src/wasm/wasm-binary.cpp +++ b/src/wasm/wasm-binary.cpp @@ -1271,6 +1271,7 @@ void WasmBinaryBuilder::readExports() { curr->kind = (ExternalKind)getU32LEB(); auto index = getU32LEB(); exportIndexes[curr] = index; + exportOrder.push_back(curr); } } @@ -1346,16 +1347,16 @@ void WasmBinaryBuilder::processFunctions() { wasm.start = getFunctionIndexName(startIndex); } - for (auto& iter : exportIndexes) { - Export* curr = iter.first; + for (auto* curr : exportOrder) { + auto index = exportIndexes[curr]; switch (curr->kind) { case ExternalKind::Function: { - curr->value = getFunctionIndexName(iter.second); + curr->value = getFunctionIndexName(index); break; } case ExternalKind::Table: curr->value = Name::fromInt(0); break; case ExternalKind::Memory: curr->value = Name::fromInt(0); break; - case ExternalKind::Global: curr->value = getGlobalName(iter.second); break; + case ExternalKind::Global: curr->value = getGlobalName(index); break; default: WASM_UNREACHABLE(); } wasm.addExport(curr); |