diff options
author | David Brazdil <dbrazdil@google.com> | 2014-12-29 15:35:02 +0000 |
---|---|---|
committer | David Brazdil <dbrazdil@google.com> | 2014-12-29 15:51:10 +0000 |
commit | b7e4a069ae51a86152faacdc39298fe78f33a66e (patch) | |
tree | b8924b7e72aec7f8858091e62f83c3b3361f033c /compiler/optimizing/graph_visualizer.cc | |
parent | 5e0a9849d4e353c3726095b65ab07cefce40a636 (diff) | |
download | art-b7e4a069ae51a86152faacdc39298fe78f33a66e.tar.gz art-b7e4a069ae51a86152faacdc39298fe78f33a66e.tar.bz2 art-b7e4a069ae51a86152faacdc39298fe78f33a66e.zip |
ART: Refactored VisualizerPrinter visitor pattern
This patch refactors the visitor pattern in HGraphVisualizerPrinter
to output instruction-specific details.
Change-Id: Icfed9cd844b973025337a6bb584e1bc88f1ddd58
Diffstat (limited to 'compiler/optimizing/graph_visualizer.cc')
-rw-r--r-- | compiler/optimizing/graph_visualizer.cc | 35 |
1 files changed, 21 insertions, 14 deletions
diff --git a/compiler/optimizing/graph_visualizer.cc b/compiler/optimizing/graph_visualizer.cc index b14b0a70e2..9ed1e4528c 100644 --- a/compiler/optimizing/graph_visualizer.cc +++ b/compiler/optimizing/graph_visualizer.cc @@ -142,8 +142,7 @@ class HGraphVisualizerPrinter : public HGraphVisitor { } } - void VisitParallelMove(HParallelMove* instruction) { - output_ << instruction->DebugName(); + void VisitParallelMove(HParallelMove* instruction) OVERRIDE { output_ << " ("; for (size_t i = 0, e = instruction->NumMoves(); i < e; ++i) { MoveOperands* move = instruction->MoveOperandsAt(i); @@ -158,8 +157,25 @@ class HGraphVisualizerPrinter : public HGraphVisitor { output_ << " (liveness: " << instruction->GetLifetimePosition() << ")"; } - void VisitInstruction(HInstruction* instruction) { + void VisitIntConstant(HIntConstant *instruction) OVERRIDE { + output_ << " " << instruction->GetValue(); + } + + void VisitLongConstant(HLongConstant *instruction) OVERRIDE { + output_ << " " << instruction->GetValue(); + } + + void VisitFloatConstant(HFloatConstant *instruction) OVERRIDE { + output_ << " " << instruction->GetValue(); + } + + void VisitDoubleConstant(HDoubleConstant *instruction) OVERRIDE { + output_ << " " << instruction->GetValue(); + } + + void PrintInstruction(HInstruction* instruction) { output_ << instruction->DebugName(); + instruction->Accept(this); if (instruction->InputCount() > 0) { output_ << " [ "; for (HInputIterator inputs(instruction); !inputs.Done(); inputs.Advance()) { @@ -167,15 +183,6 @@ class HGraphVisualizerPrinter : public HGraphVisitor { } output_ << "]"; } - if (instruction->IsIntConstant()) { - output_ << " " << instruction->AsIntConstant()->GetValue(); - } else if (instruction->IsLongConstant()) { - output_ << " " << instruction->AsLongConstant()->GetValue(); - } else if (instruction->IsFloatConstant()) { - output_ << " " << instruction->AsFloatConstant()->GetValue(); - } else if (instruction->IsDoubleConstant()) { - output_ << " " << instruction->AsDoubleConstant()->GetValue(); - } if (pass_name_ == kLivenessPassName && instruction->GetLifetimePosition() != kNoLifetime) { output_ << " (liveness: " << instruction->GetLifetimePosition(); if (instruction->HasLiveInterval()) { @@ -210,7 +217,7 @@ class HGraphVisualizerPrinter : public HGraphVisitor { int bci = 0; output_ << bci << " " << instruction->NumberOfUses() << " " << GetTypeId(instruction->GetType()) << instruction->GetId() << " "; - instruction->Accept(this); + PrintInstruction(instruction); output_ << kEndInstructionMarker << std::endl; } } @@ -222,7 +229,7 @@ class HGraphVisualizerPrinter : public HGraphVisitor { EndTag("cfg"); } - void VisitBasicBlock(HBasicBlock* block) { + void VisitBasicBlock(HBasicBlock* block) OVERRIDE { StartTag("block"); PrintProperty("name", "B", block->GetBlockId()); if (block->GetLifetimeStart() != kNoLifetime) { |