diff options
author | Sam Clegg <sbc@chromium.org> | 2020-12-18 05:11:14 -0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-12-18 05:11:14 -0800 |
commit | ac808519a6980474721b88b3d0fd9461cb07abb1 (patch) | |
tree | 9e12333cff63bf5a4ca7fdb5737ccbb428023e31 /src | |
parent | ae16f5cb995e3756ccb2093749bc5595fd86a2df (diff) | |
download | binaryen-ac808519a6980474721b88b3d0fd9461cb07abb1.tar.gz binaryen-ac808519a6980474721b88b3d0fd9461cb07abb1.tar.bz2 binaryen-ac808519a6980474721b88b3d0fd9461cb07abb1.zip |
finalize: there can only ever be a single initializer function. NFC. (#3452)
Diffstat (limited to 'src')
-rw-r--r-- | src/tools/wasm-emscripten-finalize.cpp | 6 | ||||
-rw-r--r-- | src/wasm-emscripten.h | 3 | ||||
-rw-r--r-- | src/wasm/wasm-emscripten.cpp | 12 |
3 files changed, 8 insertions, 13 deletions
diff --git a/src/tools/wasm-emscripten-finalize.cpp b/src/tools/wasm-emscripten-finalize.cpp index d12594274..71f3cf443 100644 --- a/src/tools/wasm-emscripten-finalize.cpp +++ b/src/tools/wasm-emscripten-finalize.cpp @@ -230,7 +230,7 @@ int main(int argc, const char* argv[]) { generator.onlyI64DynCalls = onlyI64DynCalls; generator.noDynCalls = noDynCalls; - std::vector<Name> initializerFunctions; + Name initializerFunction; if (!standaloneWasm) { // This is also not needed in standalone mode since standalone mode uses @@ -292,7 +292,7 @@ int main(int argc, const char* argv[]) { // Unless there is no entry point. if (!standaloneWasm || !wasm.getExportOrNull("_start")) { if (auto* e = wasm.getExportOrNull(WASM_CALL_CTORS)) { - initializerFunctions.push_back(e->name); + initializerFunction = e->name; } } } @@ -300,7 +300,7 @@ int main(int argc, const char* argv[]) { BYN_TRACE("generated metadata\n"); // Substantial changes to the wasm are done, enough to create the metadata. std::string metadata = - generator.generateEmscriptenMetadata(initializerFunctions); + generator.generateEmscriptenMetadata(initializerFunction); // Finally, separate out data segments if relevant (they may have been needed // for metadata). diff --git a/src/wasm-emscripten.h b/src/wasm-emscripten.h index 8c5eeb4e1..31038aaa9 100644 --- a/src/wasm-emscripten.h +++ b/src/wasm-emscripten.h @@ -33,8 +33,7 @@ public: : wasm(wasm), builder(wasm), stackPointerOffset(stackPointerOffset), useStackPointerGlobal(stackPointerOffset == 0) {} - std::string - generateEmscriptenMetadata(std::vector<Name> const& initializerFunctions); + std::string generateEmscriptenMetadata(Name initializer); void fixInvokeFunctionNames(); diff --git a/src/wasm/wasm-emscripten.cpp b/src/wasm/wasm-emscripten.cpp index fe9aeffeb..69e0618b1 100644 --- a/src/wasm/wasm-emscripten.cpp +++ b/src/wasm/wasm-emscripten.cpp @@ -434,8 +434,8 @@ void printSignatures(std::ostream& o, const std::set<Signature>& c) { o << "]"; } -std::string EmscriptenGlueGenerator::generateEmscriptenMetadata( - std::vector<Name> const& initializerFunctions) { +std::string +EmscriptenGlueGenerator::generateEmscriptenMetadata(Name initializer) { bool commaFirst; auto nextElement = [&commaFirst]() { if (commaFirst) { @@ -482,13 +482,9 @@ std::string EmscriptenGlueGenerator::generateEmscriptenMetadata( meta << " \"tableSize\": " << wasm.table.initial.addr << ",\n"; - if (!initializerFunctions.empty()) { + if (initializer.is()) { meta << " \"initializers\": ["; - commaFirst = true; - for (const auto& func : initializerFunctions) { - meta << nextElement(); - meta << "\"" << func.c_str() << "\""; - } + meta << "\n \"" << initializer.c_str() << "\""; meta << "\n ],\n"; } |