Lines Matching defs:LifetimePosition
34 class LifetimePosition final {
38 static LifetimePosition GapFromInstructionIndex(int index) {
39 return LifetimePosition(index * kStep);
43 static LifetimePosition InstructionFromInstructionIndex(int index) {
44 return LifetimePosition(index * kStep + kHalfStep);
47 static bool ExistsGapPositionBetween(LifetimePosition pos1,
48 LifetimePosition pos2) {
50 LifetimePosition next(pos1.value_ + 1);
76 LifetimePosition Start() const {
78 return LifetimePosition(value_ & ~(kHalfStep - 1));
82 LifetimePosition FullStart() const {
84 return LifetimePosition(value_ & ~(kStep - 1));
88 LifetimePosition End() const {
90 return LifetimePosition(Start().value_ + kHalfStep / 2);
94 LifetimePosition NextStart() const {
96 return LifetimePosition(Start().value_ + kHalfStep);
100 LifetimePosition NextFullStart() const {
102 return LifetimePosition(FullStart().value_ + kStep);
106 LifetimePosition PrevStart() const {
109 return LifetimePosition(Start().value_ - kHalfStep);
114 LifetimePosition() : value_(-1) {}
120 bool operator<(const LifetimePosition& that) const {
124 bool operator<=(const LifetimePosition& that) const {
128 bool operator==(const LifetimePosition& that) const {
132 bool operator!=(const LifetimePosition& that) const {
136 bool operator>(const LifetimePosition& that) const {
140 bool operator>=(const LifetimePosition& that) const {
146 static inline LifetimePosition Invalid() { return LifetimePosition(); }
148 static inline LifetimePosition MaxPosition() {
151 return LifetimePosition(kMaxInt);
154 static inline LifetimePosition FromInt(int value) {
155 return LifetimePosition(value);
165 explicit LifetimePosition(int value) : value_(value) {}
171 std::ostream& operator<<(std::ostream& os, const LifetimePosition pos);
177 UseInterval(LifetimePosition start, LifetimePosition end)
182 LifetimePosition start() const { return start_; }
183 void set_start(LifetimePosition start) { start_ = start; }
184 LifetimePosition end() const { return end_; }
185 void set_end(LifetimePosition end) { end_ = end; }
191 UseInterval* SplitAt(LifetimePosition pos, Zone* zone);
195 LifetimePosition Intersect(const UseInterval* other) const {
198 return LifetimePosition::Invalid();
201 bool Contains(LifetimePosition point) const {
224 LifetimePosition start_;
225 LifetimePosition end_;
254 UsePosition(LifetimePosition pos, InstructionOperand* operand, void* hint,
266 LifetimePosition pos() const { return pos_; }
297 LifetimePosition const pos_;
346 UsePosition* NextUsePosition(LifetimePosition start) const;
350 UsePosition* NextRegisterPosition(LifetimePosition start) const;
353 UsePosition* NextSlotPosition(LifetimePosition start) const;
358 LifetimePosition start) const;
362 LifetimePosition NextLifetimePositionRegisterIsBeneficial(
363 const LifetimePosition& start) const;
368 LifetimePosition start) const;
371 bool CanBeSpilled(LifetimePosition pos) const;
384 UsePosition* DetachAt(LifetimePosition position, LiveRange* result,
389 LiveRange* SplitAt(LifetimePosition position, Zone* zone);
403 LifetimePosition Start() const {
408 LifetimePosition End() const {
414 bool CanCover(LifetimePosition position) const;
415 bool Covers(LifetimePosition position) const;
416 LifetimePosition FirstIntersection(LiveRange* other) const;
440 UseInterval* FirstSearchIntervalForPosition(LifetimePosition position) const;
442 LifetimePosition but_not_past) const;
508 void EnsureInterval(LifetimePosition start, LifetimePosition end, Zone* zone);
509 void AddUseInterval(LifetimePosition start, LifetimePosition end, Zone* zone);
513 void ShortenTo(LifetimePosition start);
519 void Splinter(LifetimePosition start, LifetimePosition end, Zone* zone);
715 LifetimePosition End() const { return end_position_; }
722 LifetimePosition end_position_;
841 bool IsBlockBoundary(LifetimePosition pos) const;
945 UsePosition* NewUsePosition(LifetimePosition pos, InstructionOperand* operand,
947 UsePosition* NewUsePosition(LifetimePosition pos) {
952 UsePosition* Define(LifetimePosition position, InstructionOperand* operand,
954 void Define(LifetimePosition position, InstructionOperand* operand) {
957 UsePosition* Use(LifetimePosition block_start, LifetimePosition position,
960 void Use(LifetimePosition block_start, LifetimePosition position,
989 LifetimePosition GetSplitPositionForInstruction(const LiveRange* range,
1004 LiveRange* SplitRangeAt(LiveRange* range, LifetimePosition pos);
1012 LiveRange* SplitBetween(LiveRange* range, LifetimePosition start,
1013 LifetimePosition end);
1018 LifetimePosition FindOptimalSplitPos(LifetimePosition start,
1019 LifetimePosition end);
1025 LifetimePosition FindOptimalSpillingPos(LiveRange* range,
1026 LifetimePosition pos);
1080 const Vector<LifetimePosition>& free_until_pos);
1082 const Vector<LifetimePosition>& free_until_pos);
1086 Vector<LifetimePosition> free_until_pos);
1092 void SpillAfter(LiveRange* range, LifetimePosition pos);
1095 void SpillBetween(LiveRange* range, LifetimePosition start,
1096 LifetimePosition end);
1100 void SpillBetweenUntil(LiveRange* range, LifetimePosition start,
1101 LifetimePosition until, LifetimePosition end);
1110 LifetimePosition allocation_finger_;