summaryrefslogtreecommitdiff
path: root/src/pass.h
diff options
context:
space:
mode:
authorAlon Zakai <alonzakai@gmail.com>2016-02-17 17:46:54 -0800
committerAlon Zakai <alonzakai@gmail.com>2016-02-17 17:46:54 -0800
commit849322a1135479f79f7d94b8b032486efe7955a8 (patch)
tree8f813863d148fbbab6faabd42324bebbad90db34 /src/pass.h
parent252962faba97b68684a470447c7202cf27ad8c05 (diff)
parent10b929720a8701ef2a960f5b45e39d7a999cca41 (diff)
downloadbinaryen-849322a1135479f79f7d94b8b032486efe7955a8.tar.gz
binaryen-849322a1135479f79f7d94b8b032486efe7955a8.tar.bz2
binaryen-849322a1135479f79f7d94b8b032486efe7955a8.zip
Merge pull request #200 from WebAssembly/print-pass
Move printing to a pass
Diffstat (limited to 'src/pass.h')
-rw-r--r--src/pass.h26
1 files changed, 24 insertions, 2 deletions
diff --git a/src/pass.h b/src/pass.h
index a95be9850..53b486e41 100644
--- a/src/pass.h
+++ b/src/pass.h
@@ -71,10 +71,21 @@ struct PassRunner {
PassRunner(MixedArena* allocator) : allocator(allocator) {}
- void add(std::string passName);
+ void add(std::string passName) {
+ auto pass = PassRegistry::get()->createPass(passName);
+ assert(pass);
+ passes.push_back(pass);
+ }
template<class P>
- void add();
+ void add() {
+ passes.push_back(new P());
+ }
+
+ template<class P, class Arg>
+ void add(Arg& arg){
+ passes.push_back(new P(arg));
+ }
void run(Module* module);
@@ -143,6 +154,17 @@ private:
size_t counter = 0;
};
+// Prints out a module
+class Printer : public Pass {
+ std::ostream& o;
+
+public:
+ Printer() : o(std::cout) {}
+ Printer(std::ostream& o) : o(o) {}
+
+ void run(PassRunner* runner, Module* module) override;
+};
+
} // namespace wasm
#endif // wasm_pass_h