summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/asm2wasm.h4
-rw-r--r--src/binaryen-shell.cpp4
-rw-r--r--src/pass.cpp4
-rw-r--r--src/pass.h5
-rw-r--r--src/wasm-printing.h4
5 files changed, 11 insertions, 10 deletions
diff --git a/src/asm2wasm.h b/src/asm2wasm.h
index fa35211a4..0f4852250 100644
--- a/src/asm2wasm.h
+++ b/src/asm2wasm.h
@@ -1725,12 +1725,12 @@ Function* Asm2WasmBuilder::processFunction(Ref ast) {
}
void Asm2WasmBuilder::optimize() {
- PassRunner passRunner(&allocator);
+ PassRunner passRunner(&wasm);
passRunner.addDefaultOptimizationPasses();
if (maxGlobal < 1024) {
passRunner.add("post-emscripten");
}
- passRunner.run(&wasm);
+ passRunner.run();
}
} // namespace wasm
diff --git a/src/binaryen-shell.cpp b/src/binaryen-shell.cpp
index f988379c4..8c0390d15 100644
--- a/src/binaryen-shell.cpp
+++ b/src/binaryen-shell.cpp
@@ -223,7 +223,7 @@ int main(int argc, const char* argv[]) {
if (passes.size() > 0) {
if (options.debug) std::cerr << "running passes...\n";
- PassRunner passRunner(&moreModuleAllocations);
+ PassRunner passRunner(&wasm);
if (options.debug) passRunner.setDebug(true);
for (auto& passName : passes) {
if (passName == "O") {
@@ -232,7 +232,7 @@ int main(int argc, const char* argv[]) {
passRunner.add(passName);
}
}
- passRunner.run(&wasm);
+ passRunner.run();
}
run_asserts(&i, &checked, &wasm, &root, &builder, entry);
diff --git a/src/pass.cpp b/src/pass.cpp
index 5c4f510f8..e4cc35554 100644
--- a/src/pass.cpp
+++ b/src/pass.cpp
@@ -68,7 +68,7 @@ void PassRunner::addDefaultOptimizationPasses() {
add("optimize-instructions");
}
-void PassRunner::run(Module* module) {
+void PassRunner::run() {
std::chrono::high_resolution_clock::time_point beforeEverything;
size_t padding = 0;
if (debug) {
@@ -88,7 +88,7 @@ void PassRunner::run(Module* module) {
}
before = std::chrono::high_resolution_clock::now();
}
- pass->run(this, module);
+ pass->run(this, wasm);
if (debug) {
auto after = std::chrono::high_resolution_clock::now();
std::chrono::duration<double> diff = after - before;
diff --git a/src/pass.h b/src/pass.h
index 85aec624f..d2bd787df 100644
--- a/src/pass.h
+++ b/src/pass.h
@@ -66,12 +66,13 @@ struct RegisterPass {
// Runs a set of passes, in order
//
struct PassRunner {
+ Module* wasm;
MixedArena* allocator;
std::vector<Pass*> passes;
Pass* currPass;
bool debug = false;
- PassRunner(MixedArena* allocator) : allocator(allocator) {}
+ PassRunner(Module* wasm) : wasm(wasm), allocator(&wasm->allocator) {}
void setDebug(bool debug_) { debug = debug_; }
@@ -95,7 +96,7 @@ struct PassRunner {
// what -O does.
void addDefaultOptimizationPasses();
- void run(Module* module);
+ void run();
// Get the last pass that was already executed of a certain type.
template<class P>
diff --git a/src/wasm-printing.h b/src/wasm-printing.h
index 2fab99938..d1f1c42a5 100644
--- a/src/wasm-printing.h
+++ b/src/wasm-printing.h
@@ -26,9 +26,9 @@ namespace wasm {
struct WasmPrinter {
static std::ostream& printModule(Module* module, std::ostream& o) {
- PassRunner passRunner(nullptr);
+ PassRunner passRunner(module);
passRunner.add<Printer>(o);
- passRunner.run(module);
+ passRunner.run();
return o;
}