Rollback of dx change to prevent methods from being overwritten.
Rolls back: I999013858501e7de3df27f82199d377fb1d034ea
Change-Id: Id67611b0153d49a81a2fbe0aaa8a7c9a9784987c
diff --git a/dx/src/com/android/dx/ssa/back/FirstFitLocalCombiningAllocator.java b/dx/src/com/android/dx/ssa/back/FirstFitLocalCombiningAllocator.java
index e44c555..0cffcfa 100644
--- a/dx/src/com/android/dx/ssa/back/FirstFitLocalCombiningAllocator.java
+++ b/dx/src/com/android/dx/ssa/back/FirstFitLocalCombiningAllocator.java
@@ -232,7 +232,7 @@
*/
private void handleLocalAssociatedOther() {
for (ArrayList<RegisterSpec> specs : localVariables.values()) {
- int ropReg = paramRangeEnd;
+ int ropReg = 0;
boolean done;
do {
@@ -361,7 +361,13 @@
* @return {@code >= 0;} start of available register range.
*/
private int findNextUnreservedRopReg(int startReg, int width) {
- int reg = reservedRopRegs.nextClearBit(startReg);
+ if (minimizeRegisters && !isThisPointerReg(startReg)) {
+ return startReg;
+ }
+
+ int reg;
+
+ reg = reservedRopRegs.nextClearBit(startReg);
while (true) {
int i = 1;
@@ -388,7 +394,13 @@
* @return {@code >= 0;} start of available register range.
*/
private int findRopRegForLocal(int startReg, int width) {
- int reg = usedRopRegs.nextClearBit(startReg);
+ if (minimizeRegisters && !isThisPointerReg(startReg)) {
+ return startReg;
+ }
+
+ int reg;
+
+ reg = usedRopRegs.nextClearBit(startReg);
while (true) {
int i = 1;
@@ -468,7 +480,7 @@
int checkReg = checkRegSpec.getReg();
// Assume none of the register is mapped yet
- int ropReg = paramRangeEnd;
+ int ropReg = 0;
/**
* See if either register is already mapped. Most likely the move
@@ -510,7 +522,7 @@
int category = ssaSpec.getCategory();
// Find a rop reg that does not interfere
- int ropReg = findNextUnreservedRopReg(paramRangeEnd, category);
+ int ropReg = findNextUnreservedRopReg(0, category);
while (!canMapReg(ssaSpec, ropReg)) {
ropReg = findNextUnreservedRopReg(ropReg + 1, category);
}
@@ -818,7 +830,7 @@
*/
private int findAnyFittingRange(NormalSsaInsn insn, int rangeLength,
int[] categoriesForIndex, BitSet outMovesRequired) {
- int rangeStart = paramRangeEnd;
+ int rangeStart = 0;
while (true) {
rangeStart = findNextUnreservedRopReg(rangeStart, rangeLength);
int fitWidth