summaryrefslogtreecommitdiff
path: root/src/passes/Print.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/passes/Print.cpp')
-rw-r--r--src/passes/Print.cpp31
1 files changed, 27 insertions, 4 deletions
diff --git a/src/passes/Print.cpp b/src/passes/Print.cpp
index fc07b23b9..b1082dcc1 100644
--- a/src/passes/Print.cpp
+++ b/src/passes/Print.cpp
@@ -879,10 +879,20 @@ struct PrintSExpression : public Visitor<PrintSExpression> {
}
};
-void Printer::run(PassRunner* runner, Module* module) {
- PrintSExpression print(o);
- print.visitModule(module);
-}
+// Prints out a module
+class Printer : public Pass {
+protected:
+ std::ostream& o;
+
+public:
+ Printer() : o(std::cout) {}
+ Printer(std::ostream* o) : o(*o) {}
+
+ void run(PassRunner* runner, Module* module) override {
+ PrintSExpression print(o);
+ print.visitModule(module);
+ }
+};
Pass *createPrinterPass() {
return new Printer();
@@ -926,6 +936,19 @@ Pass *createFullPrinterPass() {
// Print individual expressions
+std::ostream& WasmPrinter::printModule(Module* module, std::ostream& o) {
+ PassRunner passRunner(module);
+ passRunner.setFeatures(Feature::All);
+ passRunner.setIsNested(true);
+ passRunner.add<Printer>(&o);
+ passRunner.run();
+ return o;
+}
+
+std::ostream& WasmPrinter::printModule(Module* module) {
+ return printModule(module, std::cout);
+}
+
std::ostream& WasmPrinter::printExpression(Expression* expression, std::ostream& o, bool minify, bool full) {
if (!expression) {
o << "(null expression)";