summaryrefslogtreecommitdiff
path: root/src/tools/s2wasm.cpp
diff options
context:
space:
mode:
authorJacob Gravelle <jgravelle@google.com>2017-11-15 16:09:08 -0800
committerGitHub <noreply@github.com>2017-11-15 16:09:08 -0800
commit27474b7482ad2673ef3c9aca09aa443769e7447f (patch)
tree3dd1fde96ccc7b7101012b9d6bc9cb73e4c9bac3 /src/tools/s2wasm.cpp
parentdc0cd445c08ede80fa2b1747cffcd2254c97a0f6 (diff)
downloadbinaryen-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.cpp24
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;