summaryrefslogtreecommitdiff
path: root/src/passes/GenerateDynCalls.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/passes/GenerateDynCalls.cpp')
-rw-r--r--src/passes/GenerateDynCalls.cpp7
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