Home | History | Annotate | Download | only in src

Lines Matching full:live

224   // We cannot spill a live range that has a use requiring a register
311 // Partition original use intervals to the two live ranges.
339 // Partition original use positions to the two live ranges.
348 // to the use that no longer belongs to this live range.
352 // Link the new live range in the chain before any of the other
365 // This implements an ordering on live ranges so that they are ordered by their
367 // allocation algorithm. If two live ranges start at the same offset then there
385 LAllocator::TraceAlloc("Shorten live range %d to [%d\n", id_, start.Value());
396 LAllocator::TraceAlloc("Ensure live range %d in interval [%d %d[\n",
421 LAllocator::TraceAlloc("Add to live range %d interval [%d %d[\n",
452 LAllocator::TraceAlloc("Add to live range %d use position %d\n",
572 // Compute live out for the given block, except not including backward
578 // Add values live on entry to the successor. Note the successor's
584 // All phi input operands corresponding to this successor edge are live
602 // Add an interval that includes the entire block to the live range for
834 // and splitting of live ranges do not account for it.
856 // The live range of writable input registers always goes until the end
910 void LAllocator::ProcessInstructions(HBasicBlock* block, BitVector* live) {
941 if (live->Contains(LUnallocated::cast(to)->virtual_register())) {
943 live->Remove(LUnallocated::cast(to)->virtual_register());
954 live->Add(LUnallocated::cast(from)->virtual_register());
965 live->Remove(LUnallocated::cast(output)->virtual_register());
1007 live->Add(LUnallocated::cast(input)->virtual_register());
1065 // it into a location different from the operand of a live range
1176 // it into a location different from the operand of a live range
1227 // Add gap move if the two live ranges touch and there is no block
1265 BitVector* live = live_in_sets_[block->block_id()];
1266 BitVector::Iterator iterator(live);
1281 LAllocatorPhase phase("L_Build live ranges", this);
1287 BitVector* live = ComputeLiveOut(block);
1288 // Initially consider all live_out values live for the entire block. We
1290 AddInitialIntervals(block, live);
1293 // live values.
1294 ProcessInstructions(block, live);
1298 // The live range interval already ends at the first instruction of the
1301 live->Remove(phi->id());
1324 // Now live is live_in for this block except not including values live
1326 live_in_sets_[block_id] = live;
1332 // in the loop information. Add a live range stretching from the first
1333 // loop instruction to the last for each value live on entry to the
1336 BitVector::Iterator iterator(live);
1349 live_in_sets_[i]->Union(*live);
1355 BitVector::Iterator iterator(live);
1400 // for all spilled live ranges at this point.
1406 // Iterate over the first parts of multi-part live ranges.
1410 // Skip empty live ranges.
1459 // Check if the live range is spilled and the safe point is after
1542 TraceAlloc("Live range %d already has a spill operand\n", current->id());
1555 // Do not spill live range eagerly if use position that can benefit from
1556 // the register is too close to the start of live range.
1568 --i; // The live range was removed from the list of active live ranges.
1571 --i; // The live range was removed from the list of active live ranges.
1579 --i; // Live range was removed from the list of inactive live ranges.
1582 --i; // Live range was removed from the list of inactive live ranges.
1647 TraceAlloc("Add live range %d to active\n", range->id());
1653 TraceAlloc("Add live range %d to inactive\n", range->id());
1665 TraceAlloc("Add live range %d to unhandled at %d\n", range->id(), i + 1);
1671 TraceAlloc("Add live range %d to unhandled at start\n", range->id());
1680 TraceAlloc("Add live range %d to unhandled unsorted at end\n", range->id());
1694 // Sort the unhandled live ranges so that the ranges to be processed first are
1742 TraceAlloc("Moving live range %d from active to handled\n", range->id());
1751 TraceAlloc("Moving live range %d from active to inactive\n", range->id());
1758 TraceAlloc("Moving live range %d from inactive to handled\n", range->id());
1767 TraceAlloc("Moving live range %d from inactive to active\n", range->id());
1804 "Found reg hint %s (free until [%d) for live range %d (end %d[).\n",
1810 // The desired register is free until the end of the current live range.
1812 TraceAlloc("Assigning preferred reg %s to live range %d\n",
1847 TraceAlloc("Assigning free reg %s to live range %d\n",
1859 // There is no use in the current live range that requires a register.
1915 // Spill starting part of live range up to that use.
1932 TraceAlloc("Assigning blocked reg %s to live range %d\n",
1938 // parts of active and inactive live regions that use the same register
1956 // We are going to spill live range inside the loop.
1990 // remains spilled at least until the start of the current live range.
1994 // live-ranges: ranges are allocated in order of their start positions,
1996 // current live-range is larger than their end.
2035 TraceAlloc("Splitting live range %d at %d\n", range->id(), pos.Value());
2056 TraceAlloc("Splitting live range %d in position between [%d, %d]\n",
2147 TraceAlloc("Spilling live range %d\n", range->id());