| 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 |