Version 2.1.52
Cherry-pick: Disable Enum unboxing
CL: https://r8-review.googlesource.com/c/r8/+/52527
Cherry-pick: Fix enum invoke identification in R8InliningTest.
CL: https://r8-review.googlesource.com/c/r8/+/52540
Bug: 160854837
Bug: 160769257
Change-Id: I79ab190e1f877e378eb1d9b79dcb8ae7ce4feb37
diff --git a/src/main/java/com/android/tools/r8/Version.java b/src/main/java/com/android/tools/r8/Version.java
index 5f079ea..7a6cb48 100644
--- a/src/main/java/com/android/tools/r8/Version.java
+++ b/src/main/java/com/android/tools/r8/Version.java
@@ -11,7 +11,7 @@
// This field is accessed from release scripts using simple pattern matching.
// Therefore, changing this field could break our release scripts.
- public static final String LABEL = "2.1.51";
+ public static final String LABEL = "2.1.52";
private Version() {
}
diff --git a/src/main/java/com/android/tools/r8/utils/InternalOptions.java b/src/main/java/com/android/tools/r8/utils/InternalOptions.java
index 71539ef..6264823 100644
--- a/src/main/java/com/android/tools/r8/utils/InternalOptions.java
+++ b/src/main/java/com/android/tools/r8/utils/InternalOptions.java
@@ -228,7 +228,8 @@
public boolean enableInlining =
!Version.isDevelopmentVersion()
|| System.getProperty("com.android.tools.r8.disableinlining") == null;
- public boolean enableEnumUnboxing = true;
+ // TODO(b/160854837): re-enable enum unboxing.
+ public boolean enableEnumUnboxing = false;
// TODO(b/141451716): Evaluate the effect of allowing inlining in the inlinee.
public boolean applyInliningToInlinee =
System.getProperty("com.android.tools.r8.applyInliningToInlinee") != null;
diff --git a/src/test/java/com/android/tools/r8/enumunboxing/EnumUnboxingTestBase.java b/src/test/java/com/android/tools/r8/enumunboxing/EnumUnboxingTestBase.java
index 11ab1ae..7885c6e 100644
--- a/src/test/java/com/android/tools/r8/enumunboxing/EnumUnboxingTestBase.java
+++ b/src/test/java/com/android/tools/r8/enumunboxing/EnumUnboxingTestBase.java
@@ -66,6 +66,7 @@
}
void enableEnumOptions(InternalOptions options, boolean enumValueOptimization) {
+ // TODO(b/160854837): re-enable enum unboxing.
options.enableEnumUnboxing = true;
options.enableEnumValueOptimization = enumValueOptimization;
options.enableEnumSwitchMapRemoval = enumValueOptimization;
diff --git a/src/test/java/com/android/tools/r8/ir/optimize/R8InliningTest.java b/src/test/java/com/android/tools/r8/ir/optimize/R8InliningTest.java
index 75c45d1..1d7f782 100644
--- a/src/test/java/com/android/tools/r8/ir/optimize/R8InliningTest.java
+++ b/src/test/java/com/android/tools/r8/ir/optimize/R8InliningTest.java
@@ -18,6 +18,7 @@
import com.android.tools.r8.origin.Origin;
import com.android.tools.r8.utils.BooleanUtils;
import com.android.tools.r8.utils.FileUtils;
+import com.android.tools.r8.utils.InternalOptions;
import com.android.tools.r8.utils.ZipUtils;
import com.android.tools.r8.utils.codeinspector.ClassSubject;
import com.android.tools.r8.utils.codeinspector.CodeInspector;
@@ -369,16 +370,27 @@
InstructionSubject instruction = iterator.next();
if (instruction.isInstanceGet()) {
++instanceGetCount;
- } else if (instruction.isInvoke()
- && !instruction
- .getMethod()
- .name
- .toString()
- .startsWith(EnumUnboxingRewriter.ENUM_UNBOXING_UTILITY_METHOD_PREFIX)) {
+ } else if (instruction.isInvoke() && !isEnumInvoke(instruction)) {
++invokeCount;
}
}
assertEquals(1, instanceGetCount);
- assertEquals(BooleanUtils.intValue(parameters.isCfRuntime()), invokeCount);
+ assertEquals(0, invokeCount);
+ }
+
+ private boolean isEnumInvoke(InstructionSubject instruction) {
+ InternalOptions defaults = new InternalOptions();
+ if (parameters.isDexRuntime() && defaults.enableEnumUnboxing) {
+ return instruction
+ .getMethod()
+ .name
+ .toString()
+ .startsWith(EnumUnboxingRewriter.ENUM_UNBOXING_UTILITY_METHOD_PREFIX);
+ } else {
+ return ((InvokeInstructionSubject) instruction)
+ .holder()
+ .toString()
+ .contains("java.lang.Enum");
+ }
}
}