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 10namespace v8 { 11namespace internal { 12namespace compiler { 13 14// Forward declarations. 15class 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. 20class 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