diff options
author | Jacob Gravelle <jgravelle@google.com> | 2017-11-15 16:09:08 -0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-11-15 16:09:08 -0800 |
commit | 27474b7482ad2673ef3c9aca09aa443769e7447f (patch) | |
tree | 3dd1fde96ccc7b7101012b9d6bc9cb73e4c9bac3 /src/tools/s2wasm.cpp | |
parent | dc0cd445c08ede80fa2b1747cffcd2254c97a0f6 (diff) | |
download | binaryen-27474b7482ad2673ef3c9aca09aa443769e7447f.tar.gz binaryen-27474b7482ad2673ef3c9aca09aa443769e7447f.tar.bz2 binaryen-27474b7482ad2673ef3c9aca09aa443769e7447f.zip |
Decouple wasm-linker from Emscripten glue (#1293)
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; |