| Index: src/compiler/graph-visualizer.cc
|
| diff --git a/src/compiler/graph-visualizer.cc b/src/compiler/graph-visualizer.cc
|
| index 04c8d3a63a7863481c2beeb3f26579419bd119d4..eecc790875c1c8ba728da843de0331205f454e46 100644
|
| --- a/src/compiler/graph-visualizer.cc
|
| +++ b/src/compiler/graph-visualizer.cc
|
| @@ -60,18 +60,20 @@ class Escaped {
|
|
|
| class JSONGraphNodeWriter {
|
| public:
|
| - JSONGraphNodeWriter(std::ostream& os, Zone* zone, const Graph* graph)
|
| - : os_(os), all_(zone, graph), first_node_(true) {}
|
| + JSONGraphNodeWriter(std::ostream& os, Zone* zone, const Graph* graph,
|
| + const SourcePositionTable* positions)
|
| + : os_(os), all_(zone, graph), positions_(positions), first_node_(true) {}
|
|
|
| void Print() {
|
| for (Node* const node : all_.live) PrintNode(node);
|
| + os_ << "\n";
|
| }
|
|
|
| void PrintNode(Node* node) {
|
| if (first_node_) {
|
| first_node_ = false;
|
| } else {
|
| - os_ << ",";
|
| + os_ << ",\n";
|
| }
|
| std::ostringstream label;
|
| label << *node->op();
|
| @@ -91,6 +93,11 @@ class JSONGraphNodeWriter {
|
| if (opcode == IrOpcode::kBranch) {
|
| os_ << ",\"rankInputs\":[0]";
|
| }
|
| + SourcePosition position = positions_->GetSourcePosition(node);
|
| + if (!position.IsUnknown()) {
|
| + DCHECK(!position.IsInvalid());
|
| + os_ << ",\"pos\":" << position.raw();
|
| + }
|
| os_ << ",\"opcode\":\"" << IrOpcode::Mnemonic(node->opcode()) << "\"";
|
| os_ << ",\"control\":" << (NodeProperties::IsControl(node) ? "true"
|
| : "false");
|
| @@ -100,6 +107,7 @@ class JSONGraphNodeWriter {
|
| private:
|
| std::ostream& os_;
|
| AllNodes all_;
|
| + const SourcePositionTable* positions_;
|
| bool first_node_;
|
|
|
| DISALLOW_COPY_AND_ASSIGN(JSONGraphNodeWriter);
|
| @@ -113,6 +121,7 @@ class JSONGraphEdgeWriter {
|
|
|
| void Print() {
|
| for (Node* const node : all_.live) PrintEdges(node);
|
| + os_ << "\n";
|
| }
|
|
|
| void PrintEdges(Node* node) {
|
| @@ -127,7 +136,7 @@ class JSONGraphEdgeWriter {
|
| if (first_edge_) {
|
| first_edge_ = false;
|
| } else {
|
| - os_ << ",";
|
| + os_ << ",\n";
|
| }
|
| const char* edge_type = NULL;
|
| if (index < NodeProperties::FirstValueIndex(from)) {
|
| @@ -158,9 +167,9 @@ class JSONGraphEdgeWriter {
|
|
|
| std::ostream& operator<<(std::ostream& os, const AsJSON& ad) {
|
| Zone tmp_zone;
|
| - os << "{\"nodes\":[";
|
| - JSONGraphNodeWriter(os, &tmp_zone, &ad.graph).Print();
|
| - os << "],\"edges\":[";
|
| + os << "{\n\"nodes\":[";
|
| + JSONGraphNodeWriter(os, &tmp_zone, &ad.graph, ad.positions).Print();
|
| + os << "],\n\"edges\":[";
|
| JSONGraphEdgeWriter(os, &tmp_zone, &ad.graph).Print();
|
| os << "]}";
|
| return os;
|
|
|