OLD | NEW |
1 // Copyright 2014 the V8 project authors. All rights reserved. | 1 // Copyright 2014 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/common-operator.h" | 5 #include "src/compiler/common-operator.h" |
6 #include "src/compiler/generic-node-inl.h" | 6 #include "src/compiler/generic-node-inl.h" |
7 #include "src/compiler/graph.h" | 7 #include "src/compiler/graph.h" |
8 #include "src/compiler/instruction.h" | 8 #include "src/compiler/instruction.h" |
9 | 9 |
10 namespace v8 { | 10 namespace v8 { |
(...skipping 626 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
637 os << " instructions: [" << block->code_start() << ", " | 637 os << " instructions: [" << block->code_start() << ", " |
638 << block->code_end() << ")\n predecessors:"; | 638 << block->code_end() << ")\n predecessors:"; |
639 | 639 |
640 for (auto pred : block->predecessors()) { | 640 for (auto pred : block->predecessors()) { |
641 const InstructionBlock* pred_block = code.InstructionBlockAt(pred); | 641 const InstructionBlock* pred_block = code.InstructionBlockAt(pred); |
642 os << " B" << pred_block->id(); | 642 os << " B" << pred_block->id(); |
643 } | 643 } |
644 os << "\n"; | 644 os << "\n"; |
645 | 645 |
646 for (auto phi : block->phis()) { | 646 for (auto phi : block->phis()) { |
647 os << " phi: v" << phi->virtual_register() << " ="; | 647 PrintableInstructionOperand printable_op = { |
648 for (auto op_vreg : phi->operands()) { | 648 printable.register_configuration_, phi->output()}; |
649 os << " v" << op_vreg; | 649 os << " phi: " << printable_op << " ="; |
| 650 for (auto input : phi->inputs()) { |
| 651 printable_op.op_ = input; |
| 652 os << " " << printable_op; |
650 } | 653 } |
651 os << "\n"; | 654 os << "\n"; |
652 } | 655 } |
653 | 656 |
654 ScopedVector<char> buf(32); | 657 ScopedVector<char> buf(32); |
655 PrintableInstruction printable_instr; | 658 PrintableInstruction printable_instr; |
656 printable_instr.register_configuration_ = printable.register_configuration_; | 659 printable_instr.register_configuration_ = printable.register_configuration_; |
657 for (int j = block->first_instruction_index(); | 660 for (int j = block->first_instruction_index(); |
658 j <= block->last_instruction_index(); j++) { | 661 j <= block->last_instruction_index(); j++) { |
659 // TODO(svenpanne) Add some basic formatting to our streams. | 662 // TODO(svenpanne) Add some basic formatting to our streams. |
660 SNPrintF(buf, "%5d", j); | 663 SNPrintF(buf, "%5d", j); |
661 printable_instr.instr_ = code.InstructionAt(j); | 664 printable_instr.instr_ = code.InstructionAt(j); |
662 os << " " << buf.start() << ": " << printable_instr << "\n"; | 665 os << " " << buf.start() << ": " << printable_instr << "\n"; |
663 } | 666 } |
664 | 667 |
665 for (auto succ : block->successors()) { | 668 for (auto succ : block->successors()) { |
666 const InstructionBlock* succ_block = code.InstructionBlockAt(succ); | 669 const InstructionBlock* succ_block = code.InstructionBlockAt(succ); |
667 os << " B" << succ_block->id(); | 670 os << " B" << succ_block->id(); |
668 } | 671 } |
669 os << "\n"; | 672 os << "\n"; |
670 } | 673 } |
671 return os; | 674 return os; |
672 } | 675 } |
673 | 676 |
674 } // namespace compiler | 677 } // namespace compiler |
675 } // namespace internal | 678 } // namespace internal |
676 } // namespace v8 | 679 } // namespace v8 |
OLD | NEW |