diff options
Diffstat (limited to 'src/passes/GenerateDynCalls.cpp')
-rw-r--r-- | src/passes/GenerateDynCalls.cpp | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/src/passes/GenerateDynCalls.cpp b/src/passes/GenerateDynCalls.cpp index b46fdd843..5a602bd79 100644 --- a/src/passes/GenerateDynCalls.cpp +++ b/src/passes/GenerateDynCalls.cpp @@ -34,10 +34,12 @@ namespace wasm { struct GenerateDynCalls : public WalkerPass<PostWalker<GenerateDynCalls>> { + GenerateDynCalls(bool onlyI64) : onlyI64(onlyI64) {} void visitTable(Table* table) { if (table->segments.size() > 0) { EmscriptenGlueGenerator generator(*getModule()); + generator.onlyI64DynCalls = onlyI64; std::vector<Name> tableSegmentData; for (const auto& indirectFunc : table->segments[0].data) { generator.generateDynCallThunk( @@ -45,8 +47,11 @@ struct GenerateDynCalls : public WalkerPass<PostWalker<GenerateDynCalls>> { } } } + + bool onlyI64; }; -Pass* createGenerateDynCallsPass() { return new GenerateDynCalls; } +Pass* createGenerateDynCallsPass() { return new GenerateDynCalls(false); } +Pass* createGenerateI64DynCallsPass() { return new GenerateDynCalls(true); } } // namespace wasm |