Lines Matching refs:interval

66 static bool ShouldProcess(bool processing_core_registers, LiveInterval* interval) {  in ShouldProcess()  argument
67 bool is_core_register = (interval->GetType() != Primitive::kPrimDouble) in ShouldProcess()
68 && (interval->GetType() != Primitive::kPrimFloat); in ShouldProcess()
93 LiveInterval* interval = physical_register_intervals_.Get(reg); in BlockRegister() local
94 if (interval == nullptr) { in BlockRegister()
95 interval = LiveInterval::MakeFixedInterval(allocator_, reg, type); in BlockRegister()
96 physical_register_intervals_.Put(reg, interval); in BlockRegister()
97 inactive_.Add(interval); in BlockRegister()
99 DCHECK(interval->GetRegister() == reg); in BlockRegister()
100 interval->AddRange(start, end); in BlockRegister()
179 explicit AllRangesIterator(LiveInterval* interval) in AllRangesIterator() argument
180 : current_interval_(interval), in AllRangesIterator()
181 current_range_(interval->GetFirstRange()) {} in AllRangesIterator()
294 void RegisterAllocator::DumpInterval(std::ostream& stream, LiveInterval* interval) const { in DumpInterval()
295 interval->Dump(stream); in DumpInterval()
297 if (interval->HasRegister()) { in DumpInterval()
299 codegen_->DumpCoreRegister(stream, interval->GetRegister()); in DumpInterval()
301 codegen_->DumpFloatingPointRegister(stream, interval->GetRegister()); in DumpInterval()
321 LiveInterval* interval = active_.Get(i); in LinearScan() local
322 if (interval->IsDeadAt(position)) { in LinearScan()
323 active_.Delete(interval); in LinearScan()
325 handled_.Add(interval); in LinearScan()
326 } else if (!interval->Covers(position)) { in LinearScan()
327 active_.Delete(interval); in LinearScan()
329 inactive_.Add(interval); in LinearScan()
336 LiveInterval* interval = inactive_.Get(i); in LinearScan() local
337 if (interval->IsDeadAt(position)) { in LinearScan()
338 inactive_.Delete(interval); in LinearScan()
340 handled_.Add(interval); in LinearScan()
341 } else if (interval->Covers(position)) { in LinearScan()
342 inactive_.Delete(interval); in LinearScan()
344 active_.Add(interval); in LinearScan()
389 LiveInterval* interval = active_.Get(i); in TryAllocateFreeReg() local
390 DCHECK(interval->HasRegister()); in TryAllocateFreeReg()
391 free_until[interval->GetRegister()] = 0; in TryAllocateFreeReg()
537 void RegisterAllocator::AddToUnhandled(LiveInterval* interval) { in AddToUnhandled() argument
541 if (current->StartsAfter(interval)) { in AddToUnhandled()
546 unhandled_.InsertAt(insert_at, interval); in AddToUnhandled()
549 LiveInterval* RegisterAllocator::Split(LiveInterval* interval, size_t position) { in Split() argument
550 DCHECK(position >= interval->GetStart()); in Split()
551 DCHECK(!interval->IsDeadAt(position)); in Split()
552 if (position == interval->GetStart()) { in Split()
554 interval->ClearRegister(); in Split()
555 return interval; in Split()
557 LiveInterval* new_interval = interval->SplitAt(position); in Split()
566 void RegisterAllocator::AllocateSpillSlotFor(LiveInterval* interval) { in AllocateSpillSlotFor() argument
567 LiveInterval* parent = interval->GetParent(); in AllocateSpillSlotFor()
587 LiveInterval* last_sibling = interval; in AllocateSpillSlotFor()
648 static Location ConvertToLocation(LiveInterval* interval) { in ConvertToLocation() argument
649 if (interval->HasRegister()) { in ConvertToLocation()
650 return Location::RegisterLocation(ManagedRegister(interval->GetRegister())); in ConvertToLocation()
652 HInstruction* defined_by = interval->GetParent()->GetDefinedBy(); in ConvertToLocation()
656 DCHECK(interval->GetParent()->HasSpillSlot()); in ConvertToLocation()
657 if (NeedTwoSpillSlot(interval->GetType())) { in ConvertToLocation()
658 return Location::DoubleStackSlot(interval->GetParent()->GetSpillSlot()); in ConvertToLocation()
660 return Location::StackSlot(interval->GetParent()->GetSpillSlot()); in ConvertToLocation()
802 void RegisterAllocator::ConnectSiblings(LiveInterval* interval) { in ConnectSiblings() argument
803 LiveInterval* current = interval; in ConnectSiblings()
806 InsertMoveAfter(interval->GetDefinedBy(), in ConnectSiblings()
807 Location::RegisterLocation(ManagedRegister(interval->GetRegister())), in ConnectSiblings()
808 NeedTwoSpillSlot(interval->GetType()) in ConnectSiblings()
809 ? Location::DoubleStackSlot(interval->GetParent()->GetSpillSlot()) in ConnectSiblings()
810 : Location::StackSlot(interval->GetParent()->GetSpillSlot())); in ConnectSiblings()
848 void RegisterAllocator::ConnectSplitSiblings(LiveInterval* interval, in ConnectSplitSiblings() argument
851 if (interval->GetNextSibling() == nullptr) { in ConnectSplitSiblings()
862 LiveInterval* current = interval; in ConnectSplitSiblings()
899 static Location FindLocationAt(LiveInterval* interval, size_t position) { in FindLocationAt() argument
900 LiveInterval* current = interval; in FindLocationAt()
957 LiveInterval* interval = current->GetLiveInterval(); in Resolve() local
959 ConnectSplitSiblings(interval, block->GetPredecessors().Get(i), block); in Resolve()