/** * Finds an unreserved range that will fit the sources of the * specified instruction. Does not bother trying to center the range * around an already-mapped source register; * * @param insn {@code non-null;} insn to build range for * @param rangeLength {@code >=0;} length required in register units * @param categoriesForIndex {@code non-null;} indexed by source index; * the category for each source * @param outMovesRequired {@code non-null;} an output parameter indexed by * source index that will contain the set of sources which need * moves inserted * @return the rop register that starts the fitting range */ private int findAnyFittingRange(NormalSsaInsn insn, int rangeLength, int[] categoriesForIndex, BitSet outMovesRequired) { int rangeStart = paramRangeEnd; while (true) { rangeStart = findNextUnreservedRopReg(rangeStart, rangeLength); int fitWidth = fitPlanForRange(rangeStart, insn, categoriesForIndex, outMovesRequired); if (fitWidth >= 0) { break; } rangeStart++; outMovesRequired.clear(); } return rangeStart; }
/** * Finds an unreserved range that will fit the sources of the * specified instruction. Does not bother trying to center the range * around an already-mapped source register; * * @param insn {@code non-null;} insn to build range for * @param rangeLength {@code >=0;} length required in register units * @param categoriesForIndex {@code non-null;} indexed by source index; * the category for each source * @param outMovesRequired {@code non-null;} an output parameter indexed by * source index that will contain the set of sources which need * moves inserted * @return the rop register that starts the fitting range */ private int findAnyFittingRange(NormalSsaInsn insn, int rangeLength, int[] categoriesForIndex, BitSet outMovesRequired) { int rangeStart = paramRangeEnd; while (true) { rangeStart = findNextUnreservedRopReg(rangeStart, rangeLength); int fitWidth = fitPlanForRange(rangeStart, insn, categoriesForIndex, outMovesRequired); if (fitWidth >= 0) { break; } rangeStart++; outMovesRequired.clear(); } return rangeStart; }
/** * Finds an unreserved range that will fit the sources of the * specified instruction. Does not bother trying to center the range * around an already-mapped source register; * * @param insn {@code non-null;} insn to build range for * @param rangeLength {@code >=0;} length required in register units * @param categoriesForIndex {@code non-null;} indexed by source index; * the category for each source * @param outMovesRequired {@code non-null;} an output parameter indexed by * source index that will contain the set of sources which need * moves inserted * @return the rop register that starts the fitting range */ private int findAnyFittingRange(NormalSsaInsn insn, int rangeLength, int[] categoriesForIndex, BitSet outMovesRequired) { int rangeStart = paramRangeEnd; while (true) { rangeStart = findNextUnreservedRopReg(rangeStart, rangeLength); int fitWidth = fitPlanForRange(rangeStart, insn, categoriesForIndex, outMovesRequired); if (fitWidth >= 0) { break; } rangeStart++; outMovesRequired.clear(); } return rangeStart; }
/** * Finds an unreserved range that will fit the sources of the * specified instruction. Does not bother trying to center the range * around an already-mapped source register; * * @param insn {@code non-null;} insn to build range for * @param rangeLength {@code >=0;} length required in register units * @param categoriesForIndex {@code non-null;} indexed by source index; * the category for each source * @param outMovesRequired {@code non-null;} an output parameter indexed by * source index that will contain the set of sources which need * moves inserted * @return the rop register that starts the fitting range */ private int findAnyFittingRange(NormalSsaInsn insn, int rangeLength, int[] categoriesForIndex, BitSet outMovesRequired) { int rangeStart = 0; while (true) { rangeStart = findNextUnreservedRopReg(rangeStart, rangeLength); int fitWidth = fitPlanForRange(rangeStart, insn, categoriesForIndex, outMovesRequired); if (fitWidth >= 0) { break; } rangeStart++; outMovesRequired.clear(); } return rangeStart; }
rangeStart = findNextUnreservedRopReg(rangeStart, rangeLength, alignment); int fitWidth = fitPlanForRange(rangeStart, insn, categoriesForIndex, outMovesRequired);
rangeStart = findNextUnreservedRopReg(rangeStart, rangeLength, alignment); int fitWidth = fitPlanForRange(rangeStart, insn, categoriesForIndex, outMovesRequired);
rangeStart = findNextUnreservedRopReg(rangeStart, rangeLength, alignment); int fitWidth = fitPlanForRange(rangeStart, insn, categoriesForIndex, outMovesRequired);
rangeStart = findNextUnreservedRopReg(rangeStart, rangeLength, alignment); int fitWidth = fitPlanForRange(rangeStart, insn, categoriesForIndex, outMovesRequired);
= fitPlanForRange(rangeStart, insn, categoriesForIndex, curMovesRequired);
= fitPlanForRange(rangeStart, insn, categoriesForIndex, curMovesRequired);
= fitPlanForRange(rangeStart, insn, categoriesForIndex, curMovesRequired);
= fitPlanForRange(rangeStart, insn, categoriesForIndex, curMovesRequired);
= fitPlanForRange(rangeStart, insn, categoriesForIndex, curMovesRequired);
= fitPlanForRange(rangeStart, insn, categoriesForIndex, curMovesRequired);
= fitPlanForRange(rangeStart, insn, categoriesForIndex, curMovesRequired);
= fitPlanForRange(rangeStart, insn, categoriesForIndex, curMovesRequired);