Use index rather than contains() for catchHandlers in a couple spots
No behavior change.
Bug: None
Change-Id: Ib89a8de459c8bd06451ffde066b17ea91169ef62
diff --git a/src/main/java/com/android/tools/r8/ir/code/BasicBlock.java b/src/main/java/com/android/tools/r8/ir/code/BasicBlock.java
index d784fa3..4f6ab95 100644
--- a/src/main/java/com/android/tools/r8/ir/code/BasicBlock.java
+++ b/src/main/java/com/android/tools/r8/ir/code/BasicBlock.java
@@ -426,11 +426,9 @@
public void removeAllNormalSuccessors() {
if (hasCatchHandlers()) {
IntList successorsToRemove = new IntArrayList();
- Set<Integer> handlers = catchHandlers.getUniqueTargets();
- for (int i = 0; i < successors.size(); i++) {
- if (!handlers.contains(i)) {
- successorsToRemove.add(i);
- }
+
+ for (int i = numberOfExceptionalSuccessors(), l = successors.size(); i < l; i++) {
+ successorsToRemove.add(i);
}
removeSuccessorsByIndex(successorsToRemove);
} else {
@@ -1303,10 +1301,12 @@
}
public boolean hasCatchSuccessor(BasicBlock block) {
- if (!hasCatchHandlers()) {
+ int numberOfExceptionalSuccessors = numberOfExceptionalSuccessors();
+ if (numberOfExceptionalSuccessors == 0) {
return false;
}
- return catchHandlers.getUniqueTargets().contains(successors.indexOf(block));
+ int blockIndex = successors.indexOf(block);
+ return blockIndex >= 0 && blockIndex < numberOfExceptionalSuccessors;
}
public int guardsForCatchSuccessor(BasicBlock block) {