Home | History | Annotate | Download | only in compiler

Lines Matching defs:to

94 // TODO(dcarney): fix frame to allow frame accesses to half size location.
475 // we need to split use positons in a special way.
479 // When splitting at start we need to locate the previous use interval.
500 // Partition original use intervals to the two live ranges.
518 // end of a lifetime hole). Use at this position should be attributed to
531 to the two live ranges.
540 // to the use that no longer belongs to this live range.
750 // Insert spill at the end to let live range connections happen at START.
787 // constraint move from a fixed output register to a slot.
838 // don't need to splinter them. That means that start should always be
999 TRACE("Shorten live range %d to [%d\n", vreg(), start.value());
1030 TRACE("Add to live range %d interval [%d %d[\n", vreg(), start.value(),
1057 TRACE("Add to live range %d use position %d\n", vreg(), pos.value());
1219 // Append the 'current' node to the result accumulator and move forward
1314 const InstructionOperand& from, const InstructionOperand& to) {
1317 return moves->AddMove(from, to);
1412 // to only cover positions in deferred blocks. Otherwise, a block on the
1563 // This value is produced on the stack, we never need to spill it.
1577 // and insert a gap move from the fixed output to the operand.
1628 // This value is produced on the stack, we never need to spill it.
1690 // The input is assumed to immediately have a tagged representation,
1693 // beginning of the instruction is equal to the input operand). If
1695 // to be adjusted manually.
1757 // Add values live on entry to the successor.
1762 // All phi input operands corresponding to this successor edge are live
1779 // Add an interval that includes the entire block to the live range for
2016 InstructionOperand& to = cur->destination();
2017 void* hint = &to;
2018 UsePositionHintType hint_type = UsePosition::HintTypeForOperand(to);
2021 if (to.IsUnallocated()) {
2022 int to_vreg = UnallocatedOperand::cast(to).virtual_register();
2037 to_use = Define(curr_position, &to, &from,
2046 Define(curr_position, &to);
2080 InstructionOperand& to = move->destination();
2081 if (to.IsUnallocated() &&
2082 UnallocatedOperand::cast(to).virtual_register() == phi_vreg) {
2100 // Add a live range stretching from the first loop instruction to the last
2101 // for each value live on entry to the header.
2145 // Give slots to all ranges with a non fixed slot use.
2149 // TODO(bmeurer): This is a horrible hack to make sure that for constant
2150 // live ranges, every use requires the constant to be in a register.
2255 // the register is too close to the start of live range.
2258 // There is no place to split, so we can't split and spill.
2352 // We are going to spill live range inside the loop.
2353 // If possible try to move spilling position backwards to loop header.
2365 // Try hoisting out to an outer loop.
2506 TRACE("Add live range %d:%d to active\n", range->TopLevel()->vreg(),
2513 TRACE("Add live range %d:%d to inactive\n", range->TopLevel()->vreg(),
2527 TRACE("Add live range %d:%d to unhandled at %d\n",
2534 TRACE("Add live range %d:%d to unhandled at start\n",
2544 TRACE("Add live range %d:%d to unhandled unsorted at end\n",
2558 // Sort the unhandled live ranges so that the ranges to be processed first are
2560 // algorithm because it is efficient to remove elements from the end.
2581 TRACE("Moving live range %d:%d from active to handled\n",
2589 TRACE("Moving live range %d:%d from active to inactive\n",
2596 TRACE("Moving live range %d:%d from inactive to handled\n",
2604 TRACE("Moving live range %d:%d from inactive to active\n",
2645 TRACE("Assigning preferred reg %s to live range %d:%d\n",
2679 TRACE("Assigning free reg %s to live range %d:%d\n", RegisterName(reg),
2745 // Spill starting part of live range up to that use.
2760 TRACE("Assigning blocked reg %s to live range %d:%d\n", RegisterName(reg),
2764 // This register was not free. Thus we need to find and spill
2787 // and will lead to an inconsistent state of active and inactive
2855 // Try to merge the spilled operands and count the number of merged spilled
2870 // Only continue if enough operands could be merged to the
2878 // If the range does not need register soon, spill it to the merged
2929 // and put the rest to unhandled.
2943 // Nothing to spill. Just put it to unhandled as whole.
2998 // Allocate a new operand referring to the spill slot.
3030 // definition. Refer to the ConnectLiveRanges and ResolveControlFlow
3034 // definition. For ranges that are determined to spill only in deferred
3037 // deferred blocks, this amounts to spilling and filling inside such
3103 // recording how far we step in order to save doing this for the next range.
3124 // Step through the safe points to see whether they are in the range.
3132 // Advance to the next active range that covers the current
3233 // blocks, that is not the case, so we need to connect the spilled children.
3282 // Both blocks are covered by the same range, so there is nothing to