From 75be28332b278cff9039b54bfb228ac72f539ccc Mon Sep 17 00:00:00 2001 From: Roland Levillain Date: Fri, 17 Oct 2014 17:02:00 +0100 Subject: Revert "Revert "Introduce a class to implement optimization passes."" This reverts commit 1ddbf6d4b37979a9f11a203c12befd5ae8b65df4. Change-Id: I110a14668d1564ee0604dc958b91394b40da89fc --- compiler/optimizing/graph_checker.h | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) (limited to 'compiler/optimizing/graph_checker.h') diff --git a/compiler/optimizing/graph_checker.h b/compiler/optimizing/graph_checker.h index 862f1b600b..db3130678a 100644 --- a/compiler/optimizing/graph_checker.h +++ b/compiler/optimizing/graph_checker.h @@ -19,15 +19,19 @@ #include "nodes.h" +#include + namespace art { // A control-flow graph visitor performing various checks. class GraphChecker : public HGraphVisitor { public: - GraphChecker(ArenaAllocator* allocator, HGraph* graph) + GraphChecker(ArenaAllocator* allocator, HGraph* graph, + const char* dump_prefix = "art::GraphChecker: ") : HGraphVisitor(graph), allocator_(allocator), - errors_(allocator, 0) {} + errors_(allocator, 0), + dump_prefix_(dump_prefix) {} // Check the whole graph (in insertion order). virtual void Run() { VisitInsertionOrder(); } @@ -48,6 +52,13 @@ class GraphChecker : public HGraphVisitor { return errors_; } + // Print detected errors on output stream `os`. + void Dump(std::ostream& os) { + for (size_t i = 0, e = errors_.Size(); i < e; ++i) { + os << dump_prefix_ << errors_.Get(i) << std::endl; + } + } + protected: ArenaAllocator* const allocator_; // The block currently visited. @@ -56,6 +67,9 @@ class GraphChecker : public HGraphVisitor { GrowableArray errors_; private: + // String displayed before dumped errors. + const char* dump_prefix_; + DISALLOW_COPY_AND_ASSIGN(GraphChecker); }; @@ -66,7 +80,7 @@ class SSAChecker : public GraphChecker { typedef GraphChecker super_type; SSAChecker(ArenaAllocator* allocator, HGraph* graph) - : GraphChecker(allocator, graph) {} + : GraphChecker(allocator, graph, "art::SSAChecker: ") {} // Check the whole graph (in reverse post-order). virtual void Run() { -- cgit v1.2.3-59-g8ed1b