diff options
Diffstat (limited to 'src/tools/s2wasm.cpp')
-rw-r--r-- | src/tools/s2wasm.cpp | 24 |
1 files changed, 12 insertions, 12 deletions
diff --git a/src/tools/s2wasm.cpp b/src/tools/s2wasm.cpp index 96d9ae5ce..6e7b2c05e 100644 --- a/src/tools/s2wasm.cpp +++ b/src/tools/s2wasm.cpp @@ -175,21 +175,21 @@ int main(int argc, const char *argv[]) { linker.linkArchive(lib); } - if (generateEmscriptenGlue) { - emscripten::generateRuntimeFunctions(linker.getOutput()); - } - linker.layout(); - std::stringstream meta; + std::string metadata; if (generateEmscriptenGlue) { - if (options.debug) std::cerr << "Emscripten gluing..." << std::endl; - if (allowMemoryGrowth) { - emscripten::generateMemoryGrowthFunction(linker.getOutput().wasm); + Module& wasm = linker.getOutput().wasm; + if (options.debug) { + std::cerr << "Emscripten gluing..." << std::endl; + WasmPrinter::printModule(&wasm, std::cerr); } - - // dyncall thunks - linker.emscriptenGlue(meta); + metadata = emscriptenGlue( + wasm, + allowMemoryGrowth, + linker.getStackPointerAddress(), + linker.getStaticBump(), + linker.getOutput().getInitializerFunctions()); } if (options.extra["validate"] != "none") { @@ -205,7 +205,7 @@ int main(int argc, const char *argv[]) { if (options.debug) std::cerr << "Printing..." << std::endl; Output output(options.extra["output"], Flags::Text, options.debug ? Flags::Debug : Flags::Release); WasmPrinter::printModule(&linker.getOutput().wasm, output.getStream()); - output << meta.str(); + output << metadata; if (options.debug) std::cerr << "Done." << std::endl; return 0; |