OLD | NEW |
1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 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 #ifndef V8_LITHIUM_H_ | 5 #ifndef V8_LITHIUM_H_ |
6 #define V8_LITHIUM_H_ | 6 #define V8_LITHIUM_H_ |
7 | 7 |
8 #include <set> | 8 #include <set> |
9 | 9 |
10 #include "allocation.h" | 10 #include "allocation.h" |
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
74 FIXED_SLOT, | 74 FIXED_SLOT, |
75 EXTENDED_POLICY | 75 EXTENDED_POLICY |
76 }; | 76 }; |
77 | 77 |
78 enum ExtendedPolicy { | 78 enum ExtendedPolicy { |
79 NONE, | 79 NONE, |
80 ANY, | 80 ANY, |
81 FIXED_REGISTER, | 81 FIXED_REGISTER, |
82 FIXED_DOUBLE_REGISTER, | 82 FIXED_DOUBLE_REGISTER, |
83 MUST_HAVE_REGISTER, | 83 MUST_HAVE_REGISTER, |
| 84 MUST_HAVE_DOUBLE_REGISTER, |
84 WRITABLE_REGISTER, | 85 WRITABLE_REGISTER, |
85 SAME_AS_FIRST_INPUT | 86 SAME_AS_FIRST_INPUT |
86 }; | 87 }; |
87 | 88 |
88 // Lifetime of operand inside the instruction. | 89 // Lifetime of operand inside the instruction. |
89 enum Lifetime { | 90 enum Lifetime { |
90 // USED_AT_START operand is guaranteed to be live only at | 91 // USED_AT_START operand is guaranteed to be live only at |
91 // instruction start. Register allocator is free to assign the same register | 92 // instruction start. Register allocator is free to assign the same register |
92 // to some other operand used inside instruction (i.e. temporary or | 93 // to some other operand used inside instruction (i.e. temporary or |
93 // output). | 94 // output). |
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
183 bool HasFixedPolicy() const { | 184 bool HasFixedPolicy() const { |
184 return basic_policy() == FIXED_SLOT || | 185 return basic_policy() == FIXED_SLOT || |
185 extended_policy() == FIXED_REGISTER || | 186 extended_policy() == FIXED_REGISTER || |
186 extended_policy() == FIXED_DOUBLE_REGISTER; | 187 extended_policy() == FIXED_DOUBLE_REGISTER; |
187 } | 188 } |
188 bool HasRegisterPolicy() const { | 189 bool HasRegisterPolicy() const { |
189 return basic_policy() == EXTENDED_POLICY && ( | 190 return basic_policy() == EXTENDED_POLICY && ( |
190 extended_policy() == WRITABLE_REGISTER || | 191 extended_policy() == WRITABLE_REGISTER || |
191 extended_policy() == MUST_HAVE_REGISTER); | 192 extended_policy() == MUST_HAVE_REGISTER); |
192 } | 193 } |
| 194 bool HasDoubleRegisterPolicy() const { |
| 195 return basic_policy() == EXTENDED_POLICY && |
| 196 extended_policy() == MUST_HAVE_DOUBLE_REGISTER; |
| 197 } |
193 bool HasSameAsInputPolicy() const { | 198 bool HasSameAsInputPolicy() const { |
194 return basic_policy() == EXTENDED_POLICY && | 199 return basic_policy() == EXTENDED_POLICY && |
195 extended_policy() == SAME_AS_FIRST_INPUT; | 200 extended_policy() == SAME_AS_FIRST_INPUT; |
196 } | 201 } |
197 bool HasFixedSlotPolicy() const { | 202 bool HasFixedSlotPolicy() const { |
198 return basic_policy() == FIXED_SLOT; | 203 return basic_policy() == FIXED_SLOT; |
199 } | 204 } |
200 bool HasFixedRegisterPolicy() const { | 205 bool HasFixedRegisterPolicy() const { |
201 return basic_policy() == EXTENDED_POLICY && | 206 return basic_policy() == EXTENDED_POLICY && |
202 extended_policy() == FIXED_REGISTER; | 207 extended_policy() == FIXED_REGISTER; |
(...skipping 527 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
730 private: | 735 private: |
731 LChunk* chunk_; | 736 LChunk* chunk_; |
732 | 737 |
733 DISALLOW_COPY_AND_ASSIGN(LPhase); | 738 DISALLOW_COPY_AND_ASSIGN(LPhase); |
734 }; | 739 }; |
735 | 740 |
736 | 741 |
737 } } // namespace v8::internal | 742 } } // namespace v8::internal |
738 | 743 |
739 #endif // V8_LITHIUM_H_ | 744 #endif // V8_LITHIUM_H_ |
OLD | NEW |