Home | History | Annotate | Download | only in compiler
      1 // Copyright 2014 the V8 project authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 
      5 #ifndef V8_COMPILER_GRAPH_REPLAY_H_
      6 #define V8_COMPILER_GRAPH_REPLAY_H_
      7 
      8 #include "src/compiler/node.h"
      9 
     10 namespace v8 {
     11 namespace internal {
     12 namespace compiler {
     13 
     14 // Forward declarations.
     15 class Graph;
     16 
     17 // Helper class to print a full replay of a graph. This replay can be used to
     18 // materialize the same graph within a C++ unit test and hence test subsequent
     19 // optimization passes on a graph without going through the construction steps.
     20 class GraphReplayPrinter FINAL : public NullNodeVisitor {
     21  public:
     22 #ifdef DEBUG
     23   static void PrintReplay(Graph* graph);
     24 #else
     25   static void PrintReplay(Graph* graph) {}
     26 #endif
     27 
     28   GenericGraphVisit::Control Pre(Node* node);
     29   void PostEdge(Node* from, int index, Node* to);
     30 
     31  private:
     32   GraphReplayPrinter() {}
     33 
     34   static void PrintReplayOpCreator(const Operator* op);
     35 
     36   DISALLOW_COPY_AND_ASSIGN(GraphReplayPrinter);
     37 };
     38 
     39 }  // namespace compiler
     40 }  // namespace internal
     41 }  // namespace v8
     42 
     43 #endif  // V8_COMPILER_GRAPH_REPLAY_H_
     44