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

Unified Diff: src/compiler/visualizer.cc

Issue 985023002: [turbofan] Add schedule to visualizer output (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Remove redundant cdoe Created 5 years, 9 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 side-by-side diff with in-line comments
Download patch
Index: src/compiler/visualizer.cc
diff --git a/src/compiler/graph-visualizer.cc b/src/compiler/visualizer.cc
similarity index 93%
rename from src/compiler/graph-visualizer.cc
rename to src/compiler/visualizer.cc
index 6157b76900118ce49107d39b5de98f2ed43ae84c..b3468734f771b3f08a91bb7cbbec7c84315c7b5f 100644
--- a/src/compiler/graph-visualizer.cc
+++ b/src/compiler/visualizer.cc
@@ -2,7 +2,7 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-#include "src/compiler/graph-visualizer.h"
+#include "src/compiler/visualizer.h"
#include <sstream>
#include <string>
@@ -193,7 +193,7 @@ class JSONGraphEdgeWriter {
};
-std::ostream& operator<<(std::ostream& os, const AsJSON& ad) {
+std::ostream& operator<<(std::ostream& os, const GraphAsJSON& ad) {
Zone tmp_zone;
os << "{\n\"nodes\":[";
JSONGraphNodeWriter(os, &tmp_zone, &ad.graph, ad.positions).Print();
@@ -819,6 +819,64 @@ std::ostream& operator<<(std::ostream& os, const AsRPO& ar) {
}
return os;
}
+
+
+std::ostream& operator<<(std::ostream& os, const ScheduleAsJSON& aj) {
Michael Starzinger 2015/03/06 17:51:55 Why is this called ScheduleAsJSON, there doesn't s
danno 2015/04/09 13:50:33 Done.
+ for (const BasicBlock* block : *(aj.schedule.rpo_order())) {
+ os << "--- BLOCK B" << block->id();
+ if (block->deferred()) os << " (deferred)";
+ if (block->PredecessorCount() != 0) os << " <- ";
+ bool comma = false;
+ for (BasicBlock const* predecessor : block->predecessors()) {
+ if (comma) os << ", ";
+ comma = true;
+ os << "B" << predecessor->id();
+ }
+ os << " ---\n";
+ int previous_pos = -1;
+ for (Node* node : *block) {
+ os << " " << *node;
+ if (NodeProperties::IsTyped(node)) {
+ Bounds bounds = NodeProperties::GetBounds(node);
+ os << " : ";
+ bounds.lower->PrintTo(os);
+ if (!bounds.upper->Is(bounds.lower)) {
+ os << "..";
+ bounds.upper->PrintTo(os);
+ }
+ }
+ if (aj.positions != NULL) {
+ SourcePosition p = aj.positions->GetSourcePosition(node);
Michael Starzinger 2015/03/06 17:51:55 I assume the visualizer parses these source positi
danno 2015/04/09 13:50:33 Done.
+ int current_pos = p.raw();
+ if (current_pos != -1) {
+ if (current_pos != previous_pos) {
+ os << " ;; position " << current_pos;
+ previous_pos = current_pos;
+ }
+ }
+ }
+ os << "\n";
+ }
+ BasicBlock::Control control = block->control();
+ if (control != BasicBlock::kNone) {
+ os << " ";
+ if (block->control_input() != NULL) {
+ os << *block->control_input();
+ } else {
+ os << "Goto";
+ }
+ os << " -> ";
+ comma = false;
+ for (BasicBlock const* successor : block->successors()) {
+ if (comma) os << ", ";
+ comma = true;
+ os << "B" << successor->id();
+ }
+ os << "\n";
+ }
+ }
+ return os;
+}
}
}
} // namespace v8::internal::compiler

Powered by Google App Engine
This is Rietveld 408576698