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 #ifndef V8_REGISTER_ALLOCATOR_H_ | 5 #ifndef V8_REGISTER_ALLOCATOR_H_ |
6 #define V8_REGISTER_ALLOCATOR_H_ | 6 #define V8_REGISTER_ALLOCATOR_H_ |
7 | 7 |
8 #include "src/compiler/instruction.h" | 8 #include "src/compiler/instruction.h" |
9 #include "src/ostreams.h" | 9 #include "src/ostreams.h" |
10 #include "src/register-configuration.h" | 10 #include "src/register-configuration.h" |
(...skipping 228 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
239 kOperand, | 239 kOperand, |
240 kUsePos, | 240 kUsePos, |
241 kPhi, | 241 kPhi, |
242 kUnresolved | 242 kUnresolved |
243 }; | 243 }; |
244 | 244 |
245 | 245 |
246 static const int32_t kUnassignedRegister = | 246 static const int32_t kUnassignedRegister = |
247 RegisterConfiguration::kMaxGeneralRegisters; | 247 RegisterConfiguration::kMaxGeneralRegisters; |
248 | 248 |
249 | 249 static_assert(kUnassignedRegister <= RegisterConfiguration::kMaxFPRegisters, |
250 static_assert(kUnassignedRegister <= RegisterConfiguration::kMaxDoubleRegisters, | |
251 "kUnassignedRegister too small"); | 250 "kUnassignedRegister too small"); |
252 | 251 |
253 | |
254 // Representation of a use position. | 252 // Representation of a use position. |
255 class UsePosition final : public ZoneObject { | 253 class UsePosition final : public ZoneObject { |
256 public: | 254 public: |
257 UsePosition(LifetimePosition pos, InstructionOperand* operand, void* hint, | 255 UsePosition(LifetimePosition pos, InstructionOperand* operand, void* hint, |
258 UsePositionHintType hint_type); | 256 UsePositionHintType hint_type); |
259 | 257 |
260 InstructionOperand* operand() const { return operand_; } | 258 InstructionOperand* operand() const { return operand_; } |
261 bool HasOperand() const { return operand_ != nullptr; } | 259 bool HasOperand() const { return operand_ != nullptr; } |
262 | 260 |
263 bool RegisterIsBeneficial() const { | 261 bool RegisterIsBeneficial() const { |
(...skipping 588 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
852 | 850 |
853 private: | 851 private: |
854 int GetNextLiveRangeId(); | 852 int GetNextLiveRangeId(); |
855 | 853 |
856 Zone* const allocation_zone_; | 854 Zone* const allocation_zone_; |
857 Frame* const frame_; | 855 Frame* const frame_; |
858 InstructionSequence* const code_; | 856 InstructionSequence* const code_; |
859 const char* const debug_name_; | 857 const char* const debug_name_; |
860 const RegisterConfiguration* const config_; | 858 const RegisterConfiguration* const config_; |
861 PhiMap phi_map_; | 859 PhiMap phi_map_; |
862 ZoneVector<int> allocatable_codes_; | |
863 ZoneVector<int> allocatable_double_codes_; | |
864 ZoneVector<BitVector*> live_in_sets_; | 860 ZoneVector<BitVector*> live_in_sets_; |
865 ZoneVector<BitVector*> live_out_sets_; | 861 ZoneVector<BitVector*> live_out_sets_; |
866 ZoneVector<TopLevelLiveRange*> live_ranges_; | 862 ZoneVector<TopLevelLiveRange*> live_ranges_; |
867 ZoneVector<TopLevelLiveRange*> fixed_live_ranges_; | 863 ZoneVector<TopLevelLiveRange*> fixed_live_ranges_; |
868 ZoneVector<TopLevelLiveRange*> fixed_double_live_ranges_; | 864 ZoneVector<TopLevelLiveRange*> fixed_double_live_ranges_; |
869 ZoneVector<SpillRange*> spill_ranges_; | 865 ZoneVector<SpillRange*> spill_ranges_; |
870 DelayedReferences delayed_references_; | 866 DelayedReferences delayed_references_; |
871 BitVector* assigned_registers_; | 867 BitVector* assigned_registers_; |
872 BitVector* assigned_double_registers_; | 868 BitVector* assigned_double_registers_; |
873 int virtual_register_count_; | 869 int virtual_register_count_; |
(...skipping 323 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1197 RegisterAllocationData* const data_; | 1193 RegisterAllocationData* const data_; |
1198 | 1194 |
1199 DISALLOW_COPY_AND_ASSIGN(LiveRangeConnector); | 1195 DISALLOW_COPY_AND_ASSIGN(LiveRangeConnector); |
1200 }; | 1196 }; |
1201 | 1197 |
1202 } // namespace compiler | 1198 } // namespace compiler |
1203 } // namespace internal | 1199 } // namespace internal |
1204 } // namespace v8 | 1200 } // namespace v8 |
1205 | 1201 |
1206 #endif // V8_REGISTER_ALLOCATOR_H_ | 1202 #endif // V8_REGISTER_ALLOCATOR_H_ |
OLD | NEW |