Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(43)

Side by Side Diff: src/compiler/graph-visualizer.cc

Issue 2226293002: [turbolizer] Visualize also the dead nodes. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@t-p2
Patch Set: Created 4 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « src/compiler/graph-replay.cc ('k') | src/compiler/osr.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2013 the V8 project authors. All rights reserved. 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 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "src/compiler/graph-visualizer.h" 5 #include "src/compiler/graph-visualizer.h"
6 6
7 #include <memory> 7 #include <memory>
8 #include <sstream> 8 #include <sstream>
9 #include <string> 9 #include <string>
10 10
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after
106 } 106 }
107 107
108 const std::string str_; 108 const std::string str_;
109 const char* const escaped_chars_; 109 const char* const escaped_chars_;
110 }; 110 };
111 111
112 class JSONGraphNodeWriter { 112 class JSONGraphNodeWriter {
113 public: 113 public:
114 JSONGraphNodeWriter(std::ostream& os, Zone* zone, const Graph* graph, 114 JSONGraphNodeWriter(std::ostream& os, Zone* zone, const Graph* graph,
115 const SourcePositionTable* positions) 115 const SourcePositionTable* positions)
116 : os_(os), all_(zone, graph), positions_(positions), first_node_(true) {} 116 : os_(os),
117 all_(zone, graph, false),
118 live_(zone, graph, true),
119 positions_(positions),
120 first_node_(true) {}
117 121
118 void Print() { 122 void Print() {
119 for (Node* const node : all_.live) PrintNode(node); 123 for (Node* const node : all_.reachable) PrintNode(node);
120 os_ << "\n"; 124 os_ << "\n";
121 } 125 }
122 126
123 void PrintNode(Node* node) { 127 void PrintNode(Node* node) {
124 if (first_node_) { 128 if (first_node_) {
125 first_node_ = false; 129 first_node_ = false;
126 } else { 130 } else {
127 os_ << ",\n"; 131 os_ << ",\n";
128 } 132 }
129 std::ostringstream label, title, properties; 133 std::ostringstream label, title, properties;
130 node->op()->PrintTo(label, Operator::PrintVerbosity::kSilent); 134 node->op()->PrintTo(label, Operator::PrintVerbosity::kSilent);
131 node->op()->PrintTo(title, Operator::PrintVerbosity::kVerbose); 135 node->op()->PrintTo(title, Operator::PrintVerbosity::kVerbose);
132 node->op()->PrintPropsTo(properties); 136 node->op()->PrintPropsTo(properties);
133 os_ << "{\"id\":" << SafeId(node) << ",\"label\":\"" << Escaped(label, "\"") 137 os_ << "{\"id\":" << SafeId(node) << ",\"label\":\"" << Escaped(label, "\"")
134 << "\"" 138 << "\""
135 << ",\"title\":\"" << Escaped(title, "\"") << "\"" 139 << ",\"title\":\"" << Escaped(title, "\"") << "\""
140 << ",\"live\": " << (live_.IsLive(node) ? "true" : "false")
136 << ",\"properties\":\"" << Escaped(properties, "\"") << "\""; 141 << ",\"properties\":\"" << Escaped(properties, "\"") << "\"";
137 IrOpcode::Value opcode = node->opcode(); 142 IrOpcode::Value opcode = node->opcode();
138 if (IrOpcode::IsPhiOpcode(opcode)) { 143 if (IrOpcode::IsPhiOpcode(opcode)) {
139 os_ << ",\"rankInputs\":[0," << NodeProperties::FirstControlIndex(node) 144 os_ << ",\"rankInputs\":[0," << NodeProperties::FirstControlIndex(node)
140 << "]"; 145 << "]";
141 os_ << ",\"rankWithInput\":[" << NodeProperties::FirstControlIndex(node) 146 os_ << ",\"rankWithInput\":[" << NodeProperties::FirstControlIndex(node)
142 << "]"; 147 << "]";
143 } else if (opcode == IrOpcode::kIfTrue || opcode == IrOpcode::kIfFalse || 148 } else if (opcode == IrOpcode::kIfTrue || opcode == IrOpcode::kIfFalse ||
144 opcode == IrOpcode::kLoop) { 149 opcode == IrOpcode::kLoop) {
145 os_ << ",\"rankInputs\":[" << NodeProperties::FirstControlIndex(node) 150 os_ << ",\"rankInputs\":[" << NodeProperties::FirstControlIndex(node)
(...skipping 20 matching lines...) Expand all
166 std::ostringstream type_out; 171 std::ostringstream type_out;
167 type->PrintTo(type_out); 172 type->PrintTo(type_out);
168 os_ << ",\"type\":\"" << Escaped(type_out, "\"") << "\""; 173 os_ << ",\"type\":\"" << Escaped(type_out, "\"") << "\"";
169 } 174 }
170 os_ << "}"; 175 os_ << "}";
171 } 176 }
172 177
173 private: 178 private:
174 std::ostream& os_; 179 std::ostream& os_;
175 AllNodes all_; 180 AllNodes all_;
181 AllNodes live_;
176 const SourcePositionTable* positions_; 182 const SourcePositionTable* positions_;
177 bool first_node_; 183 bool first_node_;
178 184
179 DISALLOW_COPY_AND_ASSIGN(JSONGraphNodeWriter); 185 DISALLOW_COPY_AND_ASSIGN(JSONGraphNodeWriter);
180 }; 186 };
181 187
182 188
183 class JSONGraphEdgeWriter { 189 class JSONGraphEdgeWriter {
184 public: 190 public:
185 JSONGraphEdgeWriter(std::ostream& os, Zone* zone, const Graph* graph) 191 JSONGraphEdgeWriter(std::ostream& os, Zone* zone, const Graph* graph)
186 : os_(os), all_(zone, graph), first_edge_(true) {} 192 : os_(os), all_(zone, graph, false), first_edge_(true) {}
187 193
188 void Print() { 194 void Print() {
189 for (Node* const node : all_.live) PrintEdges(node); 195 for (Node* const node : all_.reachable) PrintEdges(node);
190 os_ << "\n"; 196 os_ << "\n";
191 } 197 }
192 198
193 void PrintEdges(Node* node) { 199 void PrintEdges(Node* node) {
194 for (int i = 0; i < node->InputCount(); i++) { 200 for (int i = 0; i < node->InputCount(); i++) {
195 Node* input = node->InputAt(i); 201 Node* input = node->InputAt(i);
196 if (input == nullptr) continue; 202 if (input == nullptr) continue;
197 PrintEdge(node, i, input); 203 PrintEdge(node, i, input);
198 } 204 }
199 } 205 }
(...skipping 501 matching lines...) Expand 10 before | Expand all | Expand 10 after
701 os << "]"; 707 os << "]";
702 } 708 }
703 os << std::endl; 709 os << std::endl;
704 } 710 }
705 } 711 }
706 return os; 712 return os;
707 } 713 }
708 } // namespace compiler 714 } // namespace compiler
709 } // namespace internal 715 } // namespace internal
710 } // namespace v8 716 } // namespace v8
OLDNEW
« no previous file with comments | « src/compiler/graph-replay.cc ('k') | src/compiler/osr.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698