summaryrefslogtreecommitdiff
path: root/src/tools/wasm-emscripten-finalize.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/tools/wasm-emscripten-finalize.cpp')
-rw-r--r--src/tools/wasm-emscripten-finalize.cpp17
1 files changed, 17 insertions, 0 deletions
diff --git a/src/tools/wasm-emscripten-finalize.cpp b/src/tools/wasm-emscripten-finalize.cpp
index b2c0cef89..4c9f8df36 100644
--- a/src/tools/wasm-emscripten-finalize.cpp
+++ b/src/tools/wasm-emscripten-finalize.cpp
@@ -42,6 +42,7 @@ int main(int argc, const char *argv[]) {
std::string outputSourceMapUrl;
bool emitBinary = true;
bool debugInfo = false;
+ bool legalizeJavaScriptFFI = true;
unsigned numReservedFunctionPointers = 0;
uint64_t globalBase;
Options options("wasm-emscripten-finalize",
@@ -77,9 +78,16 @@ int main(int argc, const char *argv[]) {
[&globalBase](Options*, const std::string&argument ) {
globalBase = std::stoull(argument);
})
+
.add("--input-source-map", "-ism", "Consume source map from the specified file",
Options::Arguments::One,
[&inputSourceMapFilename](Options *o, const std::string& argument) { inputSourceMapFilename = argument; })
+ .add("--no-legalize-javascript-ffi", "-nj", "Do not legalize (i64->i32, "
+ "f32->f64) the imports and exports for interfacing with JS",
+ Options::Arguments::Zero,
+ [&legalizeJavaScriptFFI](Options *o, const std::string& ) {
+ legalizeJavaScriptFFI = false;
+ })
.add("--output-source-map", "-osm", "Emit source map to the specified file",
Options::Arguments::One,
[&outputSourceMapFilename](Options *o, const std::string& argument) { outputSourceMapFilename = argument; })
@@ -139,6 +147,15 @@ int main(int argc, const char *argv[]) {
EmscriptenGlueGenerator generator(wasm);
generator.fixInvokeFunctionNames();
+
+ if (legalizeJavaScriptFFI) {
+ PassRunner passRunner(&wasm);
+ passRunner.setDebug(options.debug);
+ passRunner.setDebugInfo(debugInfo);
+ passRunner.add("legalize-js-interface");
+ passRunner.run();
+ }
+
generator.generateRuntimeFunctions();
generator.generateMemoryGrowthFunction();
generator.generateDynCallThunks();