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/zone-containers.h" | 9 #include "src/zone-containers.h" |
10 | 10 |
(...skipping 304 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
315 int spill_start_index_; | 315 int spill_start_index_; |
316 | 316 |
317 friend class RegisterAllocator; // Assigns to kind_. | 317 friend class RegisterAllocator; // Assigns to kind_. |
318 | 318 |
319 DISALLOW_COPY_AND_ASSIGN(LiveRange); | 319 DISALLOW_COPY_AND_ASSIGN(LiveRange); |
320 }; | 320 }; |
321 | 321 |
322 | 322 |
323 class RegisterAllocator FINAL { | 323 class RegisterAllocator FINAL { |
324 public: | 324 public: |
325 enum VerificationType { kNoVerify, kVerifyAssignment }; | |
326 | |
327 explicit RegisterAllocator(const RegisterConfiguration* config, | 325 explicit RegisterAllocator(const RegisterConfiguration* config, |
328 Zone* local_zone, Frame* frame, | 326 Zone* local_zone, Frame* frame, |
329 InstructionSequence* code, | 327 InstructionSequence* code, |
330 const char* debug_name = nullptr); | 328 const char* debug_name = nullptr); |
331 | 329 |
332 bool Allocate(PipelineStatistics* stats = NULL, | 330 bool Allocate(PipelineStatistics* stats = NULL); |
333 VerificationType verification_type = kNoVerify); | |
334 bool AllocationOk() { return allocation_ok_; } | 331 bool AllocationOk() { return allocation_ok_; } |
335 BitVector* assigned_registers() { return assigned_registers_; } | 332 BitVector* assigned_registers() { return assigned_registers_; } |
336 BitVector* assigned_double_registers() { return assigned_double_registers_; } | 333 BitVector* assigned_double_registers() { return assigned_double_registers_; } |
337 | 334 |
338 const ZoneList<LiveRange*>& live_ranges() const { return live_ranges_; } | 335 const ZoneList<LiveRange*>& live_ranges() const { return live_ranges_; } |
339 const ZoneVector<LiveRange*>& fixed_live_ranges() const { | 336 const ZoneVector<LiveRange*>& fixed_live_ranges() const { |
340 return fixed_live_ranges_; | 337 return fixed_live_ranges_; |
341 } | 338 } |
342 const ZoneVector<LiveRange*>& fixed_double_live_ranges() const { | 339 const ZoneVector<LiveRange*>& fixed_double_live_ranges() const { |
343 return fixed_double_live_ranges_; | 340 return fixed_double_live_ranges_; |
(...skipping 193 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
537 #endif | 534 #endif |
538 | 535 |
539 DISALLOW_COPY_AND_ASSIGN(RegisterAllocator); | 536 DISALLOW_COPY_AND_ASSIGN(RegisterAllocator); |
540 }; | 537 }; |
541 | 538 |
542 } | 539 } |
543 } | 540 } |
544 } // namespace v8::internal::compiler | 541 } // namespace v8::internal::compiler |
545 | 542 |
546 #endif // V8_REGISTER_ALLOCATOR_H_ | 543 #endif // V8_REGISTER_ALLOCATOR_H_ |
OLD | NEW |