Use consistent instruction count in outliner
The count used does not include assume instructions.
Change-Id: I3eeb5bb420c42e03ade70747ec6fbe7ec1fb1947
diff --git a/src/main/java/com/android/tools/r8/ir/optimize/Outliner.java b/src/main/java/com/android/tools/r8/ir/optimize/Outliner.java
index 7f055de..e39c21b 100644
--- a/src/main/java/com/android/tools/r8/ir/optimize/Outliner.java
+++ b/src/main/java/com/android/tools/r8/ir/optimize/Outliner.java
@@ -806,13 +806,13 @@
includeInstruction(instruction);
// Check if this instruction ends the outline.
if (actualInstructions >= appView.options().outline.maxSize) {
- candidate(start, index + 1);
+ candidate(start, index + 1, actualInstructions);
} else {
index++;
}
} else if (index > start) {
// Do not add this instruction, candidate ends with previous instruction.
- candidate(start, index);
+ candidate(start, index, actualInstructions);
} else {
// Restart search from next instruction.
reset(index + 1);
@@ -1080,7 +1080,7 @@
protected abstract void handle(int start, int end, Outline outline);
- private void candidate(int start, int index) {
+ private void candidate(int start, int index, int actualInstructions) {
List<Instruction> instructions = getInstructionArray();
assert !instructions.get(start).isConstInstruction();
@@ -1100,13 +1100,7 @@
}
// Check if the candidate qualifies.
- int nonConstInstructions = 0;
- for (int i = start; i < end; i++) {
- if (!instructions.get(i).isConstInstruction()) {
- nonConstInstructions++;
- }
- }
- if (nonConstInstructions < appView.options().outline.minSize) {
+ if (actualInstructions < appView.options().outline.minSize) {
reset(start + 1);
return;
}