Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(75)

Side by Side Diff: src/compiler/register-allocator.h

Issue 1205173002: [turbofan] Greedy allocator refactoring. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 5 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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/zone-containers.h" 10 #include "src/zone-containers.h"
(...skipping 752 matching lines...) Expand 10 before | Expand all | Expand 10 after
763 LifetimePosition end); 763 LifetimePosition end);
764 764
765 void Spill(LiveRange* range); 765 void Spill(LiveRange* range);
766 766
767 // If we are trying to spill a range inside the loop try to 767 // If we are trying to spill a range inside the loop try to
768 // hoist spill position out to the point just before the loop. 768 // hoist spill position out to the point just before the loop.
769 LifetimePosition FindOptimalSpillingPos(LiveRange* range, 769 LifetimePosition FindOptimalSpillingPos(LiveRange* range,
770 LifetimePosition pos); 770 LifetimePosition pos);
771 771
772 const ZoneVector<LiveRange*>& GetFixedRegisters() const; 772 const ZoneVector<LiveRange*>& GetFixedRegisters() const;
773 const char* RegisterName(int allocation_index) const;
773 774
774 private: 775 private:
775 RegisterAllocationData* const data_; 776 RegisterAllocationData* const data_;
776 const RegisterKind mode_; 777 const RegisterKind mode_;
777 const int num_registers_; 778 const int num_registers_;
778 779
779 DISALLOW_COPY_AND_ASSIGN(RegisterAllocator); 780 DISALLOW_COPY_AND_ASSIGN(RegisterAllocator);
780 }; 781 };
781 782
782 783
783 class LinearScanAllocator final : public RegisterAllocator { 784 class LinearScanAllocator final : public RegisterAllocator {
784 public: 785 public:
785 LinearScanAllocator(RegisterAllocationData* data, RegisterKind kind, 786 LinearScanAllocator(RegisterAllocationData* data, RegisterKind kind,
786 Zone* local_zone); 787 Zone* local_zone);
787 788
788 // Phase 4: compute register assignments. 789 // Phase 4: compute register assignments.
789 void AllocateRegisters(); 790 void AllocateRegisters();
790 791
791 private: 792 private:
792 const char* RegisterName(int allocation_index) const;
793
794 ZoneVector<LiveRange*>& unhandled_live_ranges() { 793 ZoneVector<LiveRange*>& unhandled_live_ranges() {
795 return unhandled_live_ranges_; 794 return unhandled_live_ranges_;
796 } 795 }
797 ZoneVector<LiveRange*>& active_live_ranges() { return active_live_ranges_; } 796 ZoneVector<LiveRange*>& active_live_ranges() { return active_live_ranges_; }
798 ZoneVector<LiveRange*>& inactive_live_ranges() { 797 ZoneVector<LiveRange*>& inactive_live_ranges() {
799 return inactive_live_ranges_; 798 return inactive_live_ranges_;
800 } 799 }
801 800
802 void SetLiveRangeAssignedRegister(LiveRange* range, int reg); 801 void SetLiveRangeAssignedRegister(LiveRange* range, int reg);
803 802
(...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after
920 RegisterAllocationData* const data_; 919 RegisterAllocationData* const data_;
921 920
922 DISALLOW_COPY_AND_ASSIGN(LiveRangeConnector); 921 DISALLOW_COPY_AND_ASSIGN(LiveRangeConnector);
923 }; 922 };
924 923
925 } // namespace compiler 924 } // namespace compiler
926 } // namespace internal 925 } // namespace internal
927 } // namespace v8 926 } // namespace v8
928 927
929 #endif // V8_REGISTER_ALLOCATOR_H_ 928 #endif // V8_REGISTER_ALLOCATOR_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698