summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorSam Clegg <sbc@chromium.org>2020-12-18 05:11:14 -0800
committerGitHub <noreply@github.com>2020-12-18 05:11:14 -0800
commitac808519a6980474721b88b3d0fd9461cb07abb1 (patch)
tree9e12333cff63bf5a4ca7fdb5737ccbb428023e31 /src
parentae16f5cb995e3756ccb2093749bc5595fd86a2df (diff)
downloadbinaryen-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.cpp6
-rw-r--r--src/wasm-emscripten.h3
-rw-r--r--src/wasm/wasm-emscripten.cpp12
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";
}