diff options
Diffstat (limited to 'src/tools/wasm-emscripten-finalize.cpp')
-rw-r--r-- | src/tools/wasm-emscripten-finalize.cpp | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/src/tools/wasm-emscripten-finalize.cpp b/src/tools/wasm-emscripten-finalize.cpp index d0b664c0c..f2c74221d 100644 --- a/src/tools/wasm-emscripten-finalize.cpp +++ b/src/tools/wasm-emscripten-finalize.cpp @@ -204,12 +204,8 @@ int main(int argc, const char *argv[]) { generator.generateDynCallThunks(); generator.generateJSCallThunks(numReservedFunctionPointers); - if (!dataSegmentFile.empty()) { - Output memInitFile(dataSegmentFile, Flags::Binary, Flags::Release); - generator.separateDataSegments(&memInitFile); - } - // Finally, legalize the wasm. + // Legalize the wasm. { PassRunner passRunner(&wasm); passRunner.setDebug(options.debug); @@ -221,9 +217,16 @@ int main(int argc, const char *argv[]) { passRunner.run(); } - // All changes to the wasm are done, create the metadata. + // Substantial changes to the wasm are done, enough to create the metadata. std::string metadata = generator.generateEmscriptenMetadata(dataSize, initializerFunctions, numReservedFunctionPointers); + // Finally, separate out data segments if relevant (they may have been needed + // for metadata). + if (!dataSegmentFile.empty()) { + Output memInitFile(dataSegmentFile, Flags::Binary, Flags::Release); + generator.separateDataSegments(&memInitFile); + } + if (options.debug) { std::cerr << "Module after:\n"; WasmPrinter::printModule(&wasm, std::cerr); |