Upstream version 9.38.198.0
[platform/framework/web/crosswalk.git] / src / v8 / src / compiler / graph-replay.h
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/v8.h"
9
10 #include "src/compiler/node.h"
11
12 namespace v8 {
13 namespace internal {
14 namespace compiler {
15
16 class Graph;
17 class Operator;
18
19 // Helper class to print a full replay of a graph. This replay can be used to
20 // materialize the same graph within a C++ unit test and hence test subsequent
21 // optimization passes on a graph without going through the construction steps.
22 class GraphReplayPrinter : public NullNodeVisitor {
23  public:
24 #ifdef DEBUG
25   static void PrintReplay(Graph* graph);
26 #else
27   static void PrintReplay(Graph* graph) {}
28 #endif
29
30   GenericGraphVisit::Control Pre(Node* node);
31   void PostEdge(Node* from, int index, Node* to);
32
33  private:
34   GraphReplayPrinter() {}
35
36   static void PrintReplayOpCreator(Operator* op);
37
38   DISALLOW_COPY_AND_ASSIGN(GraphReplayPrinter);
39 };
40 }
41 }
42 }  // namespace v8::internal::compiler
43
44 #endif  // V8_COMPILER_GRAPH_REPLAY_H_