diff options
author | Alon Zakai <alonzakai@gmail.com> | 2016-02-17 17:46:54 -0800 |
---|---|---|
committer | Alon Zakai <alonzakai@gmail.com> | 2016-02-17 17:46:54 -0800 |
commit | 849322a1135479f79f7d94b8b032486efe7955a8 (patch) | |
tree | 8f813863d148fbbab6faabd42324bebbad90db34 /src/pass.h | |
parent | 252962faba97b68684a470447c7202cf27ad8c05 (diff) | |
parent | 10b929720a8701ef2a960f5b45e39d7a999cca41 (diff) | |
download | binaryen-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.h | 26 |
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 |