Index: src/compiler/register-allocator.h |
diff --git a/src/compiler/register-allocator.h b/src/compiler/register-allocator.h |
index 5c425345ccf06df401da536fd331ddcbd3a60369..776b95d9c198832d1390e9902cc3544c7eba5ce0 100644 |
--- a/src/compiler/register-allocator.h |
+++ b/src/compiler/register-allocator.h |
@@ -354,6 +354,11 @@ class LiveRange : public ZoneObject { |
UsePosition* NextUsePositionRegisterIsBeneficial( |
LifetimePosition start) const; |
+ // Returns lifetime position for which register is beneficial in this live |
+ // range and which follows both start and last processed use position. |
+ LifetimePosition NextLifetimePositionRegisterIsBeneficial( |
+ const LifetimePosition& start) const; |
+ |
// Returns use position for which register is beneficial in this live |
// range and which precedes start. |
UsePosition* PreviousUsePositionRegisterIsBeneficial( |
@@ -771,12 +776,24 @@ class RegisterAllocationData final : public ZoneObject { |
ZoneVector<TopLevelLiveRange*>& fixed_live_ranges() { |
return fixed_live_ranges_; |
} |
+ ZoneVector<TopLevelLiveRange*>& fixed_float_live_ranges() { |
+ return fixed_float_live_ranges_; |
+ } |
+ const ZoneVector<TopLevelLiveRange*>& fixed_float_live_ranges() const { |
+ return fixed_float_live_ranges_; |
+ } |
ZoneVector<TopLevelLiveRange*>& fixed_double_live_ranges() { |
return fixed_double_live_ranges_; |
} |
const ZoneVector<TopLevelLiveRange*>& fixed_double_live_ranges() const { |
return fixed_double_live_ranges_; |
} |
+ ZoneVector<TopLevelLiveRange*>& fixed_simd128_live_ranges() { |
+ return fixed_simd128_live_ranges_; |
+ } |
+ const ZoneVector<TopLevelLiveRange*>& fixed_simd128_live_ranges() const { |
+ return fixed_simd128_live_ranges_; |
+ } |
ZoneVector<BitVector*>& live_in_sets() { return live_in_sets_; } |
ZoneVector<BitVector*>& live_out_sets() { return live_out_sets_; } |
ZoneVector<SpillRange*>& spill_ranges() { return spill_ranges_; } |
@@ -838,7 +855,9 @@ class RegisterAllocationData final : public ZoneObject { |
ZoneVector<BitVector*> live_out_sets_; |
ZoneVector<TopLevelLiveRange*> live_ranges_; |
ZoneVector<TopLevelLiveRange*> fixed_live_ranges_; |
+ ZoneVector<TopLevelLiveRange*> fixed_float_live_ranges_; |
ZoneVector<TopLevelLiveRange*> fixed_double_live_ranges_; |
+ ZoneVector<TopLevelLiveRange*> fixed_simd128_live_ranges_; |
ZoneVector<SpillRange*> spill_ranges_; |
DelayedReferences delayed_references_; |
BitVector* assigned_registers_; |
@@ -1056,6 +1075,8 @@ class LinearScanAllocator final : public RegisterAllocator { |
const Vector<LifetimePosition>& free_until_pos); |
bool TryAllocatePreferredReg(LiveRange* range, |
const Vector<LifetimePosition>& free_until_pos); |
+ void GetFPRegisterSet(MachineRepresentation rep, int* num_regs, |
+ int* num_codes, const int** codes) const; |
void FindFreeRegistersForRange(LiveRange* range, |
Vector<LifetimePosition> free_until_pos); |
void ProcessCurrentRange(LiveRange* current); |