Lines Matching refs:interval

86 static bool ShouldProcess(bool processing_core_registers, LiveInterval* interval) {  in ShouldProcess()  argument
87 if (interval == nullptr) return false; in ShouldProcess()
88 bool is_core_register = (interval->GetType() != DataType::Type::kFloat64) in ShouldProcess()
89 && (interval->GetType() != DataType::Type::kFloat32); in ShouldProcess()
134 LiveInterval* interval = location.IsRegister() in BlockRegister() local
140 if (interval == nullptr) { in BlockRegister()
141 interval = LiveInterval::MakeFixedInterval(allocator_, reg, type); in BlockRegister()
143 physical_core_register_intervals_[reg] = interval; in BlockRegister()
145 physical_fp_register_intervals_[reg] = interval; in BlockRegister()
148 DCHECK(interval->GetRegister() == reg); in BlockRegister()
149 interval->AddRange(start, end); in BlockRegister()
241 LiveInterval* interval = in ProcessInstruction() local
243 temp_intervals_.push_back(interval); in ProcessInstruction()
244 interval->AddTempUse(instruction, i); in ProcessInstruction()
245 unhandled_core_intervals_.push_back(interval); in ProcessInstruction()
250 LiveInterval* interval = in ProcessInstruction() local
252 temp_intervals_.push_back(interval); in ProcessInstruction()
253 interval->AddTempUse(instruction, i); in ProcessInstruction()
255 interval->AddHighInterval(/* is_temp= */ true); in ProcessInstruction()
256 LiveInterval* high = interval->GetHighInterval(); in ProcessInstruction()
260 unhandled_fp_intervals_.push_back(interval); in ProcessInstruction()
402 explicit AllRangesIterator(LiveInterval* interval) in AllRangesIterator() argument
403 : current_interval_(interval), in AllRangesIterator()
404 current_range_(interval->GetFirstRange()) {} in AllRangesIterator()
463 void RegisterAllocatorLinearScan::DumpInterval(std::ostream& stream, LiveInterval* interval) const { in DumpInterval()
464 interval->Dump(stream); in DumpInterval()
466 if (interval->HasRegister()) { in DumpInterval()
467 if (interval->IsFloatingPoint()) { in DumpInterval()
468 codegen_->DumpFloatingPointRegister(stream, interval->GetRegister()); in DumpInterval()
470 codegen_->DumpCoreRegister(stream, interval->GetRegister()); in DumpInterval()
529 [this, position](LiveInterval* interval) { in LinearScan() argument
530 if (interval->IsDeadAt(position)) { in LinearScan()
531 handled_.push_back(interval); in LinearScan()
533 } else if (!interval->Covers(position)) { in LinearScan()
534 inactive_.push_back(interval); in LinearScan()
548 [this, position](LiveInterval* interval) { in LinearScan() argument
549 DCHECK(interval->GetStart() < position || interval->IsFixed()); in LinearScan()
550 if (interval->IsDeadAt(position)) { in LinearScan()
551 handled_.push_back(interval); in LinearScan()
553 } else if (interval->Covers(position)) { in LinearScan()
554 active_.push_back(interval); in LinearScan()
591 static void FreeIfNotCoverAt(LiveInterval* interval, size_t position, size_t* free_until) { in FreeIfNotCoverAt() argument
592 DCHECK(!interval->IsHighInterval()); in FreeIfNotCoverAt()
596 if (interval->IsDeadAt(position)) { in FreeIfNotCoverAt()
599 free_until[interval->GetRegister()] = kMaxLifetimePosition; in FreeIfNotCoverAt()
600 if (interval->HasHighInterval()) { in FreeIfNotCoverAt()
601 DCHECK(interval->GetHighInterval()->IsDeadAt(position)); in FreeIfNotCoverAt()
602 free_until[interval->GetHighInterval()->GetRegister()] = kMaxLifetimePosition; in FreeIfNotCoverAt()
604 } else if (!interval->CoversSlow(position)) { in FreeIfNotCoverAt()
607 free_until[interval->GetRegister()] = interval->FirstUseAfter(position); in FreeIfNotCoverAt()
608 if (interval->HasHighInterval()) { in FreeIfNotCoverAt()
609 DCHECK(!interval->GetHighInterval()->CoversSlow(position)); in FreeIfNotCoverAt()
610 free_until[interval->GetHighInterval()->GetRegister()] = free_until[interval->GetRegister()]; in FreeIfNotCoverAt()
626 for (LiveInterval* interval : active_) { in TryAllocateFreeReg()
627 DCHECK(interval->HasRegister()); in TryAllocateFreeReg()
628 free_until[interval->GetRegister()] = 0; in TryAllocateFreeReg()
643 LiveInterval* interval = inputs[i]->GetLiveInterval()->GetLastSibling(); in TryAllocateFreeReg() local
646 if (interval->HasRegister() && interval->SameRegisterKind(*current)) { in TryAllocateFreeReg()
651 DCHECK(interval->CoversSlow(defined_by->GetLifetimePosition())); in TryAllocateFreeReg()
653 FreeIfNotCoverAt(interval, position, free_until); in TryAllocateFreeReg()
826 LiveInterval* interval = *pos; in RemoveIntervalAndPotentialOtherHalf() local
827 if (interval->IsLowInterval()) { in RemoveIntervalAndPotentialOtherHalf()
829 DCHECK_EQ(*(pos + 1), interval->GetHighInterval()); in RemoveIntervalAndPotentialOtherHalf()
831 } else if (interval->IsHighInterval()) { in RemoveIntervalAndPotentialOtherHalf()
833 DCHECK_EQ(*(pos - 1), interval->GetLowInterval()); in RemoveIntervalAndPotentialOtherHalf()
1056 LiveInterval* interval) { in AddSorted() argument
1057 DCHECK(!interval->IsFixed() && !interval->HasSpillSlot()); in AddSorted()
1062 if (current->StartsAfter(interval) && !current->IsHighInterval()) { in AddSorted()
1070 if (interval->HasHighInterval()) { in AddSorted()
1071 array->insert(insert_pos, { interval->GetHighInterval(), interval }); in AddSorted()
1072 } else if (interval->HasLowInterval()) { in AddSorted()
1073 array->insert(insert_pos, { interval, interval->GetLowInterval() }); in AddSorted()
1075 array->insert(insert_pos, interval); in AddSorted()
1079 void RegisterAllocatorLinearScan::AllocateSpillSlotFor(LiveInterval* interval) { in AllocateSpillSlotFor() argument
1080 if (interval->IsHighInterval()) { in AllocateSpillSlotFor()
1082 DCHECK(!interval->GetLowInterval()->HasRegister()); in AllocateSpillSlotFor()
1083 DCHECK(interval->GetLowInterval()->GetParent()->HasSpillSlot()); in AllocateSpillSlotFor()
1087 LiveInterval* parent = interval->GetParent(); in AllocateSpillSlotFor()
1115 switch (interval->GetType()) { in AllocateSpillSlotFor()
1137 LOG(FATAL) << "Unexpected type for interval " << interval->GetType(); in AllocateSpillSlotFor()
1162 size_t end = interval->GetLastSibling()->GetEnd(); in AllocateSpillSlotFor()
1173 LiveInterval* interval = phi->GetLiveInterval(); in AllocateSpillSlotForCatchPhi() local
1184 interval->SetSpillSlot(previous_phi->GetLiveInterval()->GetSpillSlot()); in AllocateSpillSlotForCatchPhi()
1189 interval->SetSpillSlot(catch_phi_spill_slots_); in AllocateSpillSlotForCatchPhi()
1190 catch_phi_spill_slots_ += interval->NumberOfSpillSlotsNeeded(); in AllocateSpillSlotForCatchPhi()