summaryrefslogtreecommitdiff
path: root/src/s2wasm-main.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/s2wasm-main.cpp')
-rw-r--r--src/s2wasm-main.cpp14
1 files changed, 8 insertions, 6 deletions
diff --git a/src/s2wasm-main.cpp b/src/s2wasm-main.cpp
index c6a77c583..435eb560f 100644
--- a/src/s2wasm-main.cpp
+++ b/src/s2wasm-main.cpp
@@ -84,7 +84,6 @@ int main(int argc, const char *argv[]) {
auto input(read_file<std::string>(options.extra["infile"], Flags::Text, options.debug ? Flags::Debug : Flags::Release));
if (options.debug) std::cerr << "Parsing and wasming..." << std::endl;
- Module wasm;
uint64_t globalBase = options.extra.find("global-base") != options.extra.end()
? std::stoull(options.extra["global-base"])
: 0;
@@ -101,21 +100,24 @@ int main(int argc, const char *argv[]) {
? std::stoull(options.extra["max-memory"])
: 0;
if (options.debug) std::cerr << "Global base " << globalBase << '\n';
- Linker lm(wasm, globalBase, stackAllocation, initialMem, maxMem,
- ignoreUnknownSymbols, startFunction, options.debug);
- S2WasmBuilder s2wasm(wasm, input.c_str(), options.debug, lm);
+ Linker linker(globalBase, stackAllocation, initialMem, maxMem,
+ ignoreUnknownSymbols, startFunction, options.debug);
+
+ S2WasmBuilder s2wasm(linker.getOutput(), input.c_str(), options.debug);
+
+ linker.layout();
std::stringstream meta;
if (generateEmscriptenGlue) {
if (options.debug) std::cerr << "Emscripten gluing..." << std::endl;
// dyncall thunks
- lm.emscriptenGlue(meta);
+ linker.emscriptenGlue(meta);
}
if (options.debug) std::cerr << "Printing..." << std::endl;
Output output(options.extra["output"], Flags::Text, options.debug ? Flags::Debug : Flags::Release);
- WasmPrinter::printModule(&wasm, output.getStream());
+ WasmPrinter::printModule(&linker.getOutput().wasm, output.getStream());
output << meta.str() << std::endl;
if (options.debug) std::cerr << "Done." << std::endl;