Index: src/compiler/register-allocator.h |
diff --git a/src/compiler/register-allocator.h b/src/compiler/register-allocator.h |
index 2ea877c80423dba8fcd24e0dc63bcf44566fd008..4d94f1eac05532403898e14a654dee474c6afebc 100644 |
--- a/src/compiler/register-allocator.h |
+++ b/src/compiler/register-allocator.h |
@@ -357,6 +357,11 @@ class V8_EXPORT_PRIVATE LiveRange : public NON_EXPORTED_BASE(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( |
@@ -773,12 +778,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_; } |
@@ -840,7 +857,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_; |
@@ -1058,6 +1077,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); |