diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/tools/wasm-emscripten-finalize.cpp | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/src/tools/wasm-emscripten-finalize.cpp b/src/tools/wasm-emscripten-finalize.cpp index 576b64a1a..ce1729bb9 100644 --- a/src/tools/wasm-emscripten-finalize.cpp +++ b/src/tools/wasm-emscripten-finalize.cpp @@ -52,6 +52,7 @@ int main(int argc, const char* argv[]) { bool DWARF = false; bool sideModule = false; bool legalizeJavaScriptFFI = true; + bool bigInt = false; bool checkStackOverflow = false; uint64_t globalBase = INVALID_BASE; bool standaloneWasm = false; @@ -118,6 +119,13 @@ int main(int argc, const char* argv[]) { [&legalizeJavaScriptFFI](Options* o, const std::string&) { legalizeJavaScriptFFI = false; }) + .add("--bigint", + "-bi", + "Assume JS will use wasm/JS BigInt integration, so wasm i64s will " + "turn into JS BigInts, and there is no need for any legalization at " + "all (not even minimal legalization of dynCalls)", + Options::Arguments::Zero, + [&bigInt](Options* o, const std::string&) { bigInt = true; }) .add("--output-source-map", "-osm", "Emit source map to the specified file", @@ -272,8 +280,8 @@ int main(int argc, const char* argv[]) { generator.generateDynCallThunks(); } - // Legalize the wasm. - { + // Legalize the wasm, if BigInts don't make that moot. + if (!bigInt) { BYN_TRACE("legalizing types\n"); PassRunner passRunner(&wasm); passRunner.setOptions(options.passOptions); |