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/graph.h" | 6 #include "src/compiler/graph.h" |
7 #include "src/compiler/instruction.h" | 7 #include "src/compiler/instruction.h" |
8 #include "src/compiler/schedule.h" | 8 #include "src/compiler/schedule.h" |
9 | 9 |
10 namespace v8 { | 10 namespace v8 { |
11 namespace internal { | 11 namespace internal { |
12 namespace compiler { | 12 namespace compiler { |
13 | 13 |
14 std::ostream& operator<<(std::ostream& os, | 14 std::ostream& operator<<(std::ostream& os, |
15 const PrintableInstructionOperand& printable) { | 15 const PrintableInstructionOperand& printable) { |
16 const InstructionOperand& op = printable.op_; | 16 const InstructionOperand& op = printable.op_; |
17 const RegisterConfiguration* conf = printable.register_configuration_; | 17 const RegisterConfiguration* conf = printable.register_configuration_; |
18 switch (op.kind()) { | 18 switch (op.kind()) { |
19 case InstructionOperand::UNALLOCATED: { | 19 case InstructionOperand::UNALLOCATED: { |
20 const UnallocatedOperand* unalloc = UnallocatedOperand::cast(&op); | 20 const UnallocatedOperand* unalloc = UnallocatedOperand::cast(&op); |
21 os << "v" << unalloc->virtual_register(); | 21 os << "v" << unalloc->virtual_register(); |
22 if (unalloc->basic_policy() == UnallocatedOperand::FIXED_SLOT) { | 22 if (unalloc->basic_policy() == UnallocatedOperand::FIXED_SLOT) { |
23 return os << "(=" << unalloc->fixed_slot_index() << "S)"; | 23 return os << "(=" << unalloc->fixed_slot_index() << "S)"; |
24 } | 24 } |
25 switch (unalloc->extended_policy()) { | 25 switch (unalloc->extended_policy()) { |
26 case UnallocatedOperand::NONE: | 26 case UnallocatedOperand::NONE: |
27 return os; | 27 return os; |
28 case UnallocatedOperand::FIXED_REGISTER: | 28 case UnallocatedOperand::FIXED_REGISTER: |
29 return os << "(=" << conf->general_register_name( | 29 return os << "(=" |
30 unalloc->fixed_register_index()) << ")"; | 30 << conf->GetGeneralRegisterName( |
| 31 unalloc->fixed_register_index()) |
| 32 << ")"; |
31 case UnallocatedOperand::FIXED_DOUBLE_REGISTER: | 33 case UnallocatedOperand::FIXED_DOUBLE_REGISTER: |
32 return os << "(=" << conf->double_register_name( | 34 return os << "(=" |
33 unalloc->fixed_register_index()) << ")"; | 35 << conf->GetDoubleRegisterName( |
| 36 unalloc->fixed_register_index()) |
| 37 << ")"; |
34 case UnallocatedOperand::MUST_HAVE_REGISTER: | 38 case UnallocatedOperand::MUST_HAVE_REGISTER: |
35 return os << "(R)"; | 39 return os << "(R)"; |
36 case UnallocatedOperand::MUST_HAVE_SLOT: | 40 case UnallocatedOperand::MUST_HAVE_SLOT: |
37 return os << "(S)"; | 41 return os << "(S)"; |
38 case UnallocatedOperand::SAME_AS_FIRST_INPUT: | 42 case UnallocatedOperand::SAME_AS_FIRST_INPUT: |
39 return os << "(1)"; | 43 return os << "(1)"; |
40 case UnallocatedOperand::ANY: | 44 case UnallocatedOperand::ANY: |
41 return os << "(-)"; | 45 return os << "(-)"; |
42 } | 46 } |
43 } | 47 } |
(...skipping 12 matching lines...) Expand all Loading... |
56 case InstructionOperand::ALLOCATED: { | 60 case InstructionOperand::ALLOCATED: { |
57 auto allocated = AllocatedOperand::cast(op); | 61 auto allocated = AllocatedOperand::cast(op); |
58 switch (allocated.allocated_kind()) { | 62 switch (allocated.allocated_kind()) { |
59 case AllocatedOperand::STACK_SLOT: | 63 case AllocatedOperand::STACK_SLOT: |
60 os << "[stack:" << StackSlotOperand::cast(op).index(); | 64 os << "[stack:" << StackSlotOperand::cast(op).index(); |
61 break; | 65 break; |
62 case AllocatedOperand::DOUBLE_STACK_SLOT: | 66 case AllocatedOperand::DOUBLE_STACK_SLOT: |
63 os << "[double_stack:" << DoubleStackSlotOperand::cast(op).index(); | 67 os << "[double_stack:" << DoubleStackSlotOperand::cast(op).index(); |
64 break; | 68 break; |
65 case AllocatedOperand::REGISTER: | 69 case AllocatedOperand::REGISTER: |
66 os << "[" | 70 os << "[" << RegisterOperand::cast(op).GetRegister().ToString() |
67 << conf->general_register_name(RegisterOperand::cast(op).index()) | |
68 << "|R"; | 71 << "|R"; |
69 break; | 72 break; |
70 case AllocatedOperand::DOUBLE_REGISTER: | 73 case AllocatedOperand::DOUBLE_REGISTER: |
71 os << "[" | 74 os << "[" << DoubleRegisterOperand::cast(op).GetRegister().ToString() |
72 << conf->double_register_name( | 75 << "|R"; |
73 DoubleRegisterOperand::cast(op).index()) << "|R"; | |
74 break; | 76 break; |
75 } | 77 } |
76 switch (allocated.machine_type()) { | 78 switch (allocated.machine_type()) { |
77 case kRepWord32: | 79 case kRepWord32: |
78 os << "|w32"; | 80 os << "|w32"; |
79 break; | 81 break; |
80 case kRepWord64: | 82 case kRepWord64: |
81 os << "|w64"; | 83 os << "|w64"; |
82 break; | 84 break; |
83 case kRepFloat32: | 85 case kRepFloat32: |
(...skipping 725 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
809 os << " B" << succ.ToInt(); | 811 os << " B" << succ.ToInt(); |
810 } | 812 } |
811 os << "\n"; | 813 os << "\n"; |
812 } | 814 } |
813 return os; | 815 return os; |
814 } | 816 } |
815 | 817 |
816 } // namespace compiler | 818 } // namespace compiler |
817 } // namespace internal | 819 } // namespace internal |
818 } // namespace v8 | 820 } // namespace v8 |
OLD | NEW |