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"); + } } }