diff options
Diffstat (limited to 'src/tools/wasm-emscripten-finalize.cpp')
-rw-r--r-- | src/tools/wasm-emscripten-finalize.cpp | 30 |
1 files changed, 25 insertions, 5 deletions
diff --git a/src/tools/wasm-emscripten-finalize.cpp b/src/tools/wasm-emscripten-finalize.cpp index 1d1ea2247..49f8beabf 100644 --- a/src/tools/wasm-emscripten-finalize.cpp +++ b/src/tools/wasm-emscripten-finalize.cpp @@ -58,6 +58,8 @@ int main(int argc, const char* argv[]) { bool standaloneWasm = false; // TODO: remove after https://github.com/WebAssembly/binaryen/issues/3043 bool minimizeWasmChanges = false; + bool noDynCalls = false; + bool onlyI64DynCalls = false; ToolOptions options("wasm-emscripten-finalize", "Performs Emscripten-specific transforms on .wasm files"); @@ -174,6 +176,18 @@ int main(int argc, const char* argv[]) { [&minimizeWasmChanges](Options* o, const std::string&) { minimizeWasmChanges = true; }) + .add("--no-dyncalls", + "", + "", + Options::Arguments::Zero, + [&noDynCalls](Options* o, const std::string&) { noDynCalls = true; }) + .add("--dyncalls-i64", + "", + "", + Options::Arguments::Zero, + [&onlyI64DynCalls](Options* o, const std::string&) { + onlyI64DynCalls = true; + }) .add_positional("INFILE", Options::Arguments::One, [&infile](Options* o, const std::string& argument) { @@ -231,9 +245,11 @@ int main(int argc, const char* argv[]) { } EmscriptenGlueGenerator generator(wasm); - generator.setStandalone(standaloneWasm); - generator.setSideModule(sideModule); - generator.setMinimizeWasmChanges(minimizeWasmChanges); + generator.standalone = standaloneWasm; + generator.sideModule = sideModule; + generator.minimizeWasmChanges = minimizeWasmChanges; + generator.onlyI64DynCalls = onlyI64DynCalls; + generator.noDynCalls = noDynCalls; generator.fixInvokeFunctionNames(); @@ -278,9 +294,13 @@ int main(int argc, const char* argv[]) { passRunner.add("emscripten-pic-main-module"); } - if (!standaloneWasm) { + if (!noDynCalls && !standaloneWasm) { // If not standalone wasm then JS is relevant and we need dynCalls. - passRunner.add("generate-dyncalls"); + if (onlyI64DynCalls) { + passRunner.add("generate-i64-dyncalls"); + } else { + passRunner.add("generate-dyncalls"); + } } // Legalize the wasm, if BigInts don't make that moot. |