• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright 2013 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_VISUALIZER_H_
6 #define V8_COMPILER_GRAPH_VISUALIZER_H_
7 
8 #include <stdio.h>
9 #include <iosfwd>
10 #include <memory>
11 
12 #include "src/globals.h"
13 
14 namespace v8 {
15 namespace internal {
16 
17 class CompilationInfo;
18 
19 namespace compiler {
20 
21 class Graph;
22 class InstructionSequence;
23 class RegisterAllocationData;
24 class Schedule;
25 class SourcePositionTable;
26 
27 std::unique_ptr<char[]> GetVisualizerLogFileName(CompilationInfo* info,
28                                                  const char* phase,
29                                                  const char* suffix);
30 
31 struct AsJSON {
AsJSONAsJSON32   AsJSON(const Graph& g, SourcePositionTable* p) : graph(g), positions(p) {}
33   const Graph& graph;
34   const SourcePositionTable* positions;
35 };
36 
37 V8_EXPORT_PRIVATE std::ostream& operator<<(std::ostream& os, const AsJSON& ad);
38 
39 struct AsRPO {
AsRPOAsRPO40   explicit AsRPO(const Graph& g) : graph(g) {}
41   const Graph& graph;
42 };
43 
44 V8_EXPORT_PRIVATE std::ostream& operator<<(std::ostream& os, const AsRPO& ad);
45 
46 struct AsC1VCompilation {
AsC1VCompilationAsC1VCompilation47   explicit AsC1VCompilation(const CompilationInfo* info) : info_(info) {}
48   const CompilationInfo* info_;
49 };
50 
51 
52 struct AsC1V {
53   AsC1V(const char* phase, const Schedule* schedule,
54         const SourcePositionTable* positions = nullptr,
55         const InstructionSequence* instructions = nullptr)
schedule_AsC1V56       : schedule_(schedule),
57         instructions_(instructions),
58         positions_(positions),
59         phase_(phase) {}
60   const Schedule* schedule_;
61   const InstructionSequence* instructions_;
62   const SourcePositionTable* positions_;
63   const char* phase_;
64 };
65 
66 struct AsC1VRegisterAllocationData {
67   explicit AsC1VRegisterAllocationData(
68       const char* phase, const RegisterAllocationData* data = nullptr)
phase_AsC1VRegisterAllocationData69       : phase_(phase), data_(data) {}
70   const char* phase_;
71   const RegisterAllocationData* data_;
72 };
73 
74 std::ostream& operator<<(std::ostream& os, const AsC1VCompilation& ac);
75 std::ostream& operator<<(std::ostream& os, const AsC1V& ac);
76 std::ostream& operator<<(std::ostream& os,
77                          const AsC1VRegisterAllocationData& ac);
78 
79 }  // namespace compiler
80 }  // namespace internal
81 }  // namespace v8
82 
83 #endif  // V8_COMPILER_GRAPH_VISUALIZER_H_
84