Home | History | Annotate | Download | only in src

Lines Matching full:live

212   // We cannot spill a live range that has a use requiring a register
306 // Partition original use intervals to the two live ranges.
334 // Partition original use positions to the two live ranges.
343 // to the use that no longer belongs to this live range.
347 // Link the new live range in the chain before any of the other
360 // This implements an ordering on live ranges so that they are ordered by their
362 // allocation algorithm. If two live ranges start at the same offset then there
380 LAllocator::TraceAlloc("Shorten live range %d to [%d\n", id_, start.Value());
391 LAllocator::TraceAlloc("Ensure live range %d in interval [%d %d[\n",
416 LAllocator::TraceAlloc("Add to live range %d interval [%d %d[\n",
446 LAllocator::TraceAlloc("Add to live range %d use position %d\n",
562 // Compute live out for the given block, except not including backward
568 // Add values live on entry to the successor. Note the successor's
574 // All phi input operands corresponding to this successor edge are live
592 // Add an interval that includes the entire block to the live range for
820 // and splitting of live ranges do not account for it.
839 // The live range of writable input registers always goes until the end
890 void LAllocator::ProcessInstructions(HBasicBlock* block, BitVector* live) {
920 if (live->Contains(LUnallocated::cast(to)->virtual_register())) {
922 live->Remove(LUnallocated::cast(to)->virtual_register());
933 live->Add(LUnallocated::cast(from)->virtual_register());
944 live->Remove(LUnallocated::cast(output)->virtual_register());
986 live->Add(LUnallocated::cast(input)->virtual_register());
1042 // it into a location different from the operand of a live range
1148 // it into a location different from the operand of a live range
1197 // Add gap move if the two live ranges touch and there is no block
1232 BitVector* live = live_in_sets_[block->block_id()];
1233 BitVector::Iterator iterator(live);
1248 HPhase phase("L_Build live ranges", this);
1254 BitVector* live = ComputeLiveOut(block);
1255 // Initially consider all live_out values live for the entire block. We
1257 AddInitialIntervals(block, live);
1260 // live values.
1261 ProcessInstructions(block, live);
1265 // The live range interval already ends at the first instruction of the
1268 live->Remove(phi->id());
1290 // Now live is live_in for this block except not including values live
1292 live_in_sets_[block_id] = live;
1298 // in the loop information. Add a live range stretching from the first
1299 // loop instruction to the last for each value live on entry to the
1302 BitVector::Iterator iterator(live);
1315 live_in_sets_[i]->Union(*live);
1321 BitVector::Iterator iterator(live);
1359 // for all spilled live ranges at this point.
1365 // Iterate over the first parts of multi-part live ranges.
1369 // Skip empty live ranges.
1418 // Check if the live
1529 TraceAlloc("Live range %d already has a spill operand\n", current->id());
1542 // Do not spill live range eagerly if use position that can benefit from
1543 // the register is too close to the start of live range.
1555 --i; // The live range was removed from the list of active live ranges.
1558 --i; // The live range was removed from the list of active live ranges.
1566 --i; // Live range was removed from the list of inactive live ranges.
1569 --i; // Live range was removed from the list of inactive live ranges.
1634 TraceAlloc("Add live range %d to active\n", range->id());
1640 TraceAlloc("Add live range %d to inactive\n", range->id());
1651 TraceAlloc("Add live range %d to unhandled at %d\n", range->id(), i + 1);
1657 TraceAlloc("Add live range %d to unhandled at start\n", range->id());
1666 TraceAlloc("Add live range %d to unhandled unsorted at end\n", range->id());
1680 // Sort the unhandled live ranges so that the ranges to be processed first are
1728 TraceAlloc("Moving live range %d from active to handled\n", range->id());
1737 TraceAlloc("Moving live range %d from active to inactive\n", range->id());
1744 TraceAlloc("Moving live range %d from inactive to handled\n", range->id());
1753 TraceAlloc("Moving live range %d from inactive to active\n", range->id());
1792 "Found reg hint %s (free until [%d) for live range %d (end %d[).\n",
1798 // The desired register is free until the end of the current live range.
1800 TraceAlloc("Assigning preferred reg %s to live range %d\n",
1836 TraceAlloc("Assigning free reg %s to live range %d\n",
1848 // There is no use in the current live range that requires a register.
1904 // Spill starting part of live range up to that use.
1926 TraceAlloc("Assigning blocked reg %s to live range %d\n",
1932 // parts of active and inactive live regions that use the same register
1985 TraceAlloc("Splitting live range %d at %d\n", range->id(), pos.Value());
2005 TraceAlloc("Splitting live range %d in position between [%d, %d]\n",
2087 TraceAlloc("Spilling live range %d\n", range->id());