Fix abstract method
Change-Id: Iaac8c33c543dff310d21df89e00a48e7c649593b
diff --git a/src/main/java/com/android/tools/r8/ir/optimize/numberunboxer/NumberUnboxerImpl.java b/src/main/java/com/android/tools/r8/ir/optimize/numberunboxer/NumberUnboxerImpl.java
index 29fd7d5..2b30686 100644
--- a/src/main/java/com/android/tools/r8/ir/optimize/numberunboxer/NumberUnboxerImpl.java
+++ b/src/main/java/com/android/tools/r8/ir/optimize/numberunboxer/NumberUnboxerImpl.java
@@ -110,7 +110,8 @@
Map<DexMethod, DexMethod> vMethodRepresentative = new IdentityHashMap<>();
for (List<ProgramMethod> vMethods : componentVirtualMethods.values()) {
if (vMethods.size() > 1) {
- if (Iterables.all(vMethods, this::shouldConsiderForUnboxing)) {
+ if (Iterables.all(vMethods, this::shouldConsiderForUnboxing)
+ && Iterables.any(vMethods, m -> !m.getDefinition().isAbstract())) {
vMethods.sort(Comparator.comparing(DexClassAndMember::getReference));
ProgramMethod representative = vMethods.get(0);
for (int i = 1; i < vMethods.size(); i++) {
@@ -122,7 +123,7 @@
} else {
assert vMethods.size() == 1;
ProgramMethod candidate = vMethods.get(0);
- if (shouldConsiderForUnboxing(candidate)) {
+ if (shouldConsiderForUnboxing(candidate) && !candidate.getDefinition().isAbstract()) {
candidateBoxingStatus.put(candidate.getReference(), UNPROCESSED_CANDIDATE);
}
}