Index: src/lithium-allocator.h |
diff --git a/src/lithium-allocator.h b/src/lithium-allocator.h |
index a0bceb7e8a0e562c1a0720fe6504e0809bdc3ae8..f63077e19d77a285351173ffe33ef3481b897dd5 100644 |
--- a/src/lithium-allocator.h |
+++ b/src/lithium-allocator.h |
@@ -153,8 +153,6 @@ class UseInterval: public ZoneObject { |
LifetimePosition end_; |
UseInterval* next_; |
- friend class LAllocator; // Assigns to next_. |
- friend class SpillRange; // Assigns to next_. |
friend class LiveRange; // Assigns to start_. |
}; |
@@ -187,8 +185,6 @@ class UsePosition: public ZoneObject { |
friend class LiveRange; |
}; |
-class SpillRange; |
- |
// Representation of SSA values' live ranges as a collection of (continuous) |
// intervals over the instruction ordering. |
class LiveRange: public ZoneObject { |
@@ -271,10 +267,6 @@ class LiveRange: public ZoneObject { |
LOperand* GetSpillOperand() const { return spill_operand_; } |
void SetSpillOperand(LOperand* operand); |
- void SetSpillRange(SpillRange* spill_range) { spill_range_ = spill_range; } |
- SpillRange* GetSpillRange() const { return spill_range_; } |
- void CommitSpillOperand(LOperand* operand); |
- |
void SetSpillStartIndex(int start) { |
spill_start_index_ = Min(start, spill_start_index_); |
} |
@@ -307,7 +299,6 @@ class LiveRange: public ZoneObject { |
private: |
void ConvertOperands(Zone* zone); |
- void ConvertUsesToOperand(LOperand* op); |
UseInterval* FirstSearchIntervalForPosition(LifetimePosition position) const; |
void AdvanceLastProcessedMarker(UseInterval* to_start_of, |
LifetimePosition but_not_past) const; |
@@ -328,36 +319,11 @@ class LiveRange: public ZoneObject { |
LOperand* current_hint_operand_; |
LOperand* spill_operand_; |
int spill_start_index_; |
- SpillRange* spill_range_; |
friend class LAllocator; // Assigns to kind_. |
}; |
-class SpillRange : public ZoneObject { |
- public: |
- SpillRange(LiveRange* range, int id, Zone* zone); |
- |
- bool TryMerge(SpillRange* other, Zone* zone); |
- void SetOperand(LOperand* op); |
- bool IsEmpty() { return live_ranges_.length() == 0; } |
- int id() const { return id_; } |
- UseInterval* interval() { return use_interval_; } |
- RegisterKind Kind() const { return live_ranges_.at(0)->Kind(); } |
- LifetimePosition End() const { return end_position_; } |
- bool IsIntersectingWith(SpillRange* other); |
- |
- private: |
- int id_; |
- ZoneList<LiveRange*> live_ranges_; |
- UseInterval* use_interval_; |
- LifetimePosition end_position_; |
- |
- // Merge intervals, making sure the use intervals are sorted |
- void MergeDisjointIntervals(UseInterval* other, Zone* zone); |
-}; |
- |
- |
class LAllocator BASE_EMBEDDED { |
public: |
LAllocator(int first_virtual_register, HGraph* graph); |
@@ -424,7 +390,6 @@ class LAllocator BASE_EMBEDDED { |
void ResolveControlFlow(); |
void PopulatePointerMaps(); |
void AllocateRegisters(); |
- void ReuseSpillSlots(); |
bool CanEagerlyResolveControlFlow(HBasicBlock* block) const; |
inline bool SafePointsAreInOrder() const; |
@@ -460,12 +425,12 @@ class LAllocator BASE_EMBEDDED { |
void ActiveToInactive(LiveRange* range); |
void InactiveToHandled(LiveRange* range); |
void InactiveToActive(LiveRange* range); |
- SpillRange* AssignSpillRangeToLiveRange(LiveRange* range); |
+ void FreeSpillSlot(LiveRange* range); |
+ LOperand* TryReuseSpillSlot(LiveRange* range); |
// Helper methods for allocating registers. |
bool TryAllocateFreeReg(LiveRange* range); |
void AllocateBlockedReg(LiveRange* range); |
- bool TryReuseSpillForPhi(LiveRange* range); |
// Live range splitting helpers. |
@@ -565,7 +530,6 @@ class LAllocator BASE_EMBEDDED { |
ZoneList<LiveRange*> active_live_ranges_; |
ZoneList<LiveRange*> inactive_live_ranges_; |
ZoneList<LiveRange*> reusable_slots_; |
- ZoneList<SpillRange*> spill_ranges_; |
// Next virtual register number to be assigned to temporaries. |
int next_virtual_register_; |