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

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

Issue 1738973002: [turbofan] More "auto" keyword cleanup (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 4 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 unified diff | Download patch
« no previous file with comments | « src/compiler/graph.cc ('k') | src/compiler/instruction.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 <sstream> 7 #include <sstream>
8 #include <string> 8 #include <string>
9 9
10 #include "src/code-stubs.h" 10 #include "src/code-stubs.h"
(...skipping 213 matching lines...) Expand 10 before | Expand all | Expand 10 after
224 void PrintLongProperty(const char* name, int64_t value); 224 void PrintLongProperty(const char* name, int64_t value);
225 void PrintIntProperty(const char* name, int value); 225 void PrintIntProperty(const char* name, int value);
226 void PrintBlockProperty(const char* name, int rpo_number); 226 void PrintBlockProperty(const char* name, int rpo_number);
227 void PrintNodeId(Node* n); 227 void PrintNodeId(Node* n);
228 void PrintNode(Node* n); 228 void PrintNode(Node* n);
229 void PrintInputs(Node* n); 229 void PrintInputs(Node* n);
230 template <typename InputIterator> 230 template <typename InputIterator>
231 void PrintInputs(InputIterator* i, int count, const char* prefix); 231 void PrintInputs(InputIterator* i, int count, const char* prefix);
232 void PrintType(Node* node); 232 void PrintType(Node* node);
233 233
234 void PrintLiveRange(LiveRange* range, const char* type, int vreg); 234 void PrintLiveRange(const LiveRange* range, const char* type, int vreg);
235 void PrintLiveRangeChain(TopLevelLiveRange* range, const char* type); 235 void PrintLiveRangeChain(const TopLevelLiveRange* range, const char* type);
236 236
237 class Tag final BASE_EMBEDDED { 237 class Tag final BASE_EMBEDDED {
238 public: 238 public:
239 Tag(GraphC1Visualizer* visualizer, const char* name) { 239 Tag(GraphC1Visualizer* visualizer, const char* name) {
240 name_ = name; 240 name_ = name;
241 visualizer_ = visualizer; 241 visualizer_ = visualizer;
242 visualizer->PrintIndent(); 242 visualizer->PrintIndent();
243 visualizer_->os_ << "begin_" << name << "\n"; 243 visualizer_->os_ << "begin_" << name << "\n";
244 visualizer->indent_++; 244 visualizer->indent_++;
245 } 245 }
(...skipping 252 matching lines...) Expand 10 before | Expand all | Expand 10 after
498 } 498 }
499 } 499 }
500 } 500 }
501 501
502 502
503 void GraphC1Visualizer::PrintLiveRanges(const char* phase, 503 void GraphC1Visualizer::PrintLiveRanges(const char* phase,
504 const RegisterAllocationData* data) { 504 const RegisterAllocationData* data) {
505 Tag tag(this, "intervals"); 505 Tag tag(this, "intervals");
506 PrintStringProperty("name", phase); 506 PrintStringProperty("name", phase);
507 507
508 for (auto range : data->fixed_double_live_ranges()) { 508 for (const TopLevelLiveRange* range : data->fixed_double_live_ranges()) {
509 PrintLiveRangeChain(range, "fixed"); 509 PrintLiveRangeChain(range, "fixed");
510 } 510 }
511 511
512 for (auto range : data->fixed_live_ranges()) { 512 for (const TopLevelLiveRange* range : data->fixed_live_ranges()) {
513 PrintLiveRangeChain(range, "fixed"); 513 PrintLiveRangeChain(range, "fixed");
514 } 514 }
515 515
516 for (auto range : data->live_ranges()) { 516 for (const TopLevelLiveRange* range : data->live_ranges()) {
517 PrintLiveRangeChain(range, "object"); 517 PrintLiveRangeChain(range, "object");
518 } 518 }
519 } 519 }
520 520
521 521 void GraphC1Visualizer::PrintLiveRangeChain(const TopLevelLiveRange* range,
522 void GraphC1Visualizer::PrintLiveRangeChain(TopLevelLiveRange* range,
523 const char* type) { 522 const char* type) {
524 if (range == nullptr || range->IsEmpty()) return; 523 if (range == nullptr || range->IsEmpty()) return;
525 int vreg = range->vreg(); 524 int vreg = range->vreg();
526 for (LiveRange* child = range; child != nullptr; child = child->next()) { 525 for (const LiveRange* child = range; child != nullptr;
526 child = child->next()) {
527 PrintLiveRange(child, type, vreg); 527 PrintLiveRange(child, type, vreg);
528 } 528 }
529 } 529 }
530 530
531 531 void GraphC1Visualizer::PrintLiveRange(const LiveRange* range, const char* type,
532 void GraphC1Visualizer::PrintLiveRange(LiveRange* range, const char* type,
533 int vreg) { 532 int vreg) {
534 if (range != nullptr && !range->IsEmpty()) { 533 if (range != nullptr && !range->IsEmpty()) {
535 PrintIndent(); 534 PrintIndent();
536 os_ << vreg << ":" << range->relative_id() << " " << type; 535 os_ << vreg << ":" << range->relative_id() << " " << type;
537 if (range->HasRegisterAssigned()) { 536 if (range->HasRegisterAssigned()) {
538 AllocatedOperand op = AllocatedOperand::cast(range->GetAssignedOperand()); 537 AllocatedOperand op = AllocatedOperand::cast(range->GetAssignedOperand());
539 if (op.IsDoubleRegister()) { 538 if (op.IsDoubleRegister()) {
540 DoubleRegister assigned_reg = op.GetDoubleRegister(); 539 DoubleRegister assigned_reg = op.GetDoubleRegister();
541 os_ << " \"" << assigned_reg.ToString() << "\""; 540 os_ << " \"" << assigned_reg.ToString() << "\"";
542 } else { 541 } else {
543 DCHECK(op.IsRegister()); 542 DCHECK(op.IsRegister());
544 Register assigned_reg = op.GetRegister(); 543 Register assigned_reg = op.GetRegister();
545 os_ << " \"" << assigned_reg.ToString() << "\""; 544 os_ << " \"" << assigned_reg.ToString() << "\"";
546 } 545 }
547 } else if (range->spilled()) { 546 } else if (range->spilled()) {
548 auto top = range->TopLevel(); 547 const TopLevelLiveRange* top = range->TopLevel();
549 int index = -1; 548 int index = -1;
550 if (top->HasSpillRange()) { 549 if (top->HasSpillRange()) {
551 index = kMaxInt; // This hasn't been set yet. 550 index = kMaxInt; // This hasn't been set yet.
552 } else if (top->GetSpillOperand()->IsConstant()) { 551 } else if (top->GetSpillOperand()->IsConstant()) {
553 os_ << " \"const(nostack):" 552 os_ << " \"const(nostack):"
554 << ConstantOperand::cast(top->GetSpillOperand())->virtual_register() 553 << ConstantOperand::cast(top->GetSpillOperand())->virtual_register()
555 << "\""; 554 << "\"";
556 } else { 555 } else {
557 index = AllocatedOperand::cast(top->GetSpillOperand())->index(); 556 index = AllocatedOperand::cast(top->GetSpillOperand())->index();
558 if (top->kind() == DOUBLE_REGISTERS) { 557 if (top->kind() == DOUBLE_REGISTERS) {
559 os_ << " \"double_stack:" << index << "\""; 558 os_ << " \"double_stack:" << index << "\"";
560 } else if (top->kind() == GENERAL_REGISTERS) { 559 } else if (top->kind() == GENERAL_REGISTERS) {
561 os_ << " \"stack:" << index << "\""; 560 os_ << " \"stack:" << index << "\"";
562 } 561 }
563 } 562 }
564 } 563 }
565 564
566 os_ << " " << vreg; 565 os_ << " " << vreg;
567 for (auto interval = range->first_interval(); interval != nullptr; 566 for (const UseInterval* interval = range->first_interval();
568 interval = interval->next()) { 567 interval != nullptr; interval = interval->next()) {
569 os_ << " [" << interval->start().value() << ", " 568 os_ << " [" << interval->start().value() << ", "
570 << interval->end().value() << "["; 569 << interval->end().value() << "[";
571 } 570 }
572 571
573 UsePosition* current_pos = range->first_pos(); 572 UsePosition* current_pos = range->first_pos();
574 while (current_pos != nullptr) { 573 while (current_pos != nullptr) {
575 if (current_pos->RegisterIsBeneficial() || FLAG_trace_all_uses) { 574 if (current_pos->RegisterIsBeneficial() || FLAG_trace_all_uses) {
576 os_ << " " << current_pos->pos().value() << " M"; 575 os_ << " " << current_pos->pos().value() << " M";
577 } 576 }
578 current_pos = current_pos->next(); 577 current_pos = current_pos->next();
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
637 os << "#" << SafeId(i) << ":" << SafeMnemonic(i); 636 os << "#" << SafeId(i) << ":" << SafeMnemonic(i);
638 } 637 }
639 os << ")" << std::endl; 638 os << ")" << std::endl;
640 } 639 }
641 } 640 }
642 return os; 641 return os;
643 } 642 }
644 } // namespace compiler 643 } // namespace compiler
645 } // namespace internal 644 } // namespace internal
646 } // namespace v8 645 } // namespace v8
OLDNEW
« no previous file with comments | « src/compiler/graph.cc ('k') | src/compiler/instruction.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698