• Home
  • History
  • Annotate
  • Raw
  • Download

Lines Matching full:range

5 #include "src/compiler/live-range-separator.h"
22 void CreateSplinter(TopLevelLiveRange *range, RegisterAllocationData *data, in CreateSplinter() argument
24 DCHECK(!range->IsSplinter()); in CreateSplinter()
26 // If a range ends right at the end of a deferred block, it is marked by in CreateSplinter()
27 // the range builder as ending at gap start of the next block - since the in CreateSplinter()
32 if (first_cut <= range->Start() && max_allowed_end >= range->End()) { in CreateSplinter()
36 LifetimePosition start = Max(first_cut, range->Start()); in CreateSplinter()
37 LifetimePosition end = Min(last_cut, range->End()); in CreateSplinter()
40 // Ensure the original range has a spill range associated, before it gets in CreateSplinter()
44 if (range->MayRequireSpillRange()) { in CreateSplinter()
45 data->CreateSpillRangeForLiveRange(range); in CreateSplinter()
47 if (range->splinter() == nullptr) { in CreateSplinter()
49 data->NextLiveRange(range->representation()); in CreateSplinter()
52 range->SetSplinter(splinter); in CreateSplinter()
55 TRACE("creating splinter for range %d between %d and %d\n", range->vreg(), in CreateSplinter()
57 range->Splinter(start, end, zone); in CreateSplinter()
61 void SetSlotUse(TopLevelLiveRange *range) { in SetSlotUse() argument
62 range->set_has_slot_use(false); in SetSlotUse()
63 for (const UsePosition *pos = range->first_pos(); in SetSlotUse()
64 !range->has_slot_use() && pos != nullptr; pos = pos->next()) { in SetSlotUse()
66 range->set_has_slot_use(true); in SetSlotUse()
71 void SplinterLiveRange(TopLevelLiveRange *range, RegisterAllocationData *data) { in SplinterLiveRange() argument
73 UseInterval *interval = range->first_interval(); in SplinterLiveRange()
98 CreateSplinter(range, data, first_cut, last_cut); in SplinterLiveRange()
106 // When the range ends in deferred blocks, first_cut will be valid here. in SplinterLiveRange()
109 CreateSplinter(range, data, first_cut, last_cut); in SplinterLiveRange()
113 if (range->has_slot_use() && range->splinter() != nullptr) { in SplinterLiveRange()
114 SetSlotUse(range); in SplinterLiveRange()
115 SetSlotUse(range->splinter()); in SplinterLiveRange()
125 TopLevelLiveRange *range = data()->live_ranges()[vreg]; in Splinter() local
126 if (range == nullptr || range->IsEmpty() || range->IsSplinter()) { in Splinter()
129 int first_instr = range->first_interval()->FirstGapIndex(); in Splinter()
131 SplinterLiveRange(range, data()); in Splinter()
165 TopLevelLiveRange *range = data()->live_ranges()[i]; in Merge() local
166 if (range == nullptr || range->IsEmpty() || !range->IsSplinter()) { in Merge()
169 TopLevelLiveRange *splinter_parent = range->splintered_from(); in Merge()
171 int to_remove = range->vreg(); in Merge()
172 splinter_parent->Merge(range, data()->allocation_zone()); in Merge()