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