Revert "Reintroduce assertion in enum unboxing"
This reverts commit 9e65d69be3095cf91f936040b29c63b9a157e585.
Reason for revert: Failures on bots
Change-Id: I392f81c12f4cefb03538c571bb17a6259302ce51
diff --git a/src/main/java/com/android/tools/r8/graph/DexEncodedMethod.java b/src/main/java/com/android/tools/r8/graph/DexEncodedMethod.java
index 8f9af7a..d775aa1 100644
--- a/src/main/java/com/android/tools/r8/graph/DexEncodedMethod.java
+++ b/src/main/java/com/android/tools/r8/graph/DexEncodedMethod.java
@@ -256,10 +256,6 @@
assert parameterAnnotationsList != null;
}
- public DexTypeList parameters() {
- return method.proto.parameters;
- }
-
public DexType returnType() {
return method.proto.returnType;
}
diff --git a/src/main/java/com/android/tools/r8/graph/DexTypeList.java b/src/main/java/com/android/tools/r8/graph/DexTypeList.java
index 2272c98..58b6afd 100644
--- a/src/main/java/com/android/tools/r8/graph/DexTypeList.java
+++ b/src/main/java/com/android/tools/r8/graph/DexTypeList.java
@@ -7,7 +7,6 @@
import com.android.tools.r8.dex.MixedSectionCollection;
import com.android.tools.r8.errors.Unreachable;
import com.android.tools.r8.naming.NamingLens;
-import com.android.tools.r8.utils.ArrayUtils;
import java.util.Arrays;
public class DexTypeList extends DexItem {
@@ -29,10 +28,6 @@
this.values = values;
}
- public boolean contains(DexType type) {
- return ArrayUtils.contains(values, type);
- }
-
@Override
public int hashCode() {
return Arrays.hashCode(values);
diff --git a/src/main/java/com/android/tools/r8/ir/optimize/enums/EnumUnboxingCandidateAnalysis.java b/src/main/java/com/android/tools/r8/ir/optimize/enums/EnumUnboxingCandidateAnalysis.java
index 692b2ee..5e4eaed 100644
--- a/src/main/java/com/android/tools/r8/ir/optimize/enums/EnumUnboxingCandidateAnalysis.java
+++ b/src/main/java/com/android/tools/r8/ir/optimize/enums/EnumUnboxingCandidateAnalysis.java
@@ -132,7 +132,6 @@
private void removeEnumsInAnnotations() {
for (DexProgramClass clazz : appView.appInfo().classes()) {
if (clazz.isAnnotation()) {
- assert clazz.interfaces.contains(appView.dexItemFactory().annotationType);
removeEnumsInAnnotation(clazz);
}
}
@@ -142,11 +141,16 @@
// Browse annotation values types in search for enum.
// Each annotation value is represented by a virtual method.
for (DexEncodedMethod method : clazz.virtualMethods()) {
- assert method.parameters().isEmpty();
- DexType valueType = method.returnType().toBaseType(appView.dexItemFactory());
- if (enumToUnboxCandidates.containsKey(valueType)) {
- enumUnboxer.reportFailure(valueType, Reason.ANNOTATION);
- enumToUnboxCandidates.remove(valueType);
+ DexProto proto = method.method.proto;
+ // There can be references to enum unboxing candidates even if the parameter list is non
+ // empty. That is possible by injecting methods in the bytecode, but such methods are no
+ // different from other methods in the program, and can be rewritten by enum unboxing.
+ if (proto.parameters.isEmpty()) {
+ DexType valueType = proto.returnType.toBaseType(appView.appInfo().dexItemFactory());
+ if (enumToUnboxCandidates.containsKey(valueType)) {
+ enumUnboxer.reportFailure(valueType, Reason.ANNOTATION);
+ enumToUnboxCandidates.remove(valueType);
+ }
}
}
}