Reland "Enable Enum unboxing"
Fixed the single assertion failure
Bug: 154950530
Bug: 147860220
Change-Id: I4eba548d3336f630976c569b7e9a128902b85d60
diff --git a/src/main/java/com/android/tools/r8/graph/DexItemFactory.java b/src/main/java/com/android/tools/r8/graph/DexItemFactory.java
index 914d7d6..7275598 100644
--- a/src/main/java/com/android/tools/r8/graph/DexItemFactory.java
+++ b/src/main/java/com/android/tools/r8/graph/DexItemFactory.java
@@ -434,7 +434,8 @@
public final DexType nestConstructorType = createStaticallyKnownType(nestConstructorDescriptor);
public final DexString enumUnboxingUtilityDescriptor =
- createString("L" + EnumUnboxingRewriter.ENUM_UNBOXING_UTILITY_CLASS_NAME + ";");
+ createString(
+ "Lcom/android/tools/r8/" + EnumUnboxingRewriter.ENUM_UNBOXING_UTILITY_CLASS_NAME + ";");
public final DexType enumUnboxingUtilityType =
createStaticallyKnownType(enumUnboxingUtilityDescriptor);
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 1762110..34c2a0e 100644
--- a/src/main/java/com/android/tools/r8/utils/InternalOptions.java
+++ b/src/main/java/com/android/tools/r8/utils/InternalOptions.java
@@ -227,7 +227,7 @@
public boolean enableInlining =
!Version.isDevelopmentVersion()
|| System.getProperty("com.android.tools.r8.disableinlining") == null;
- public boolean enableEnumUnboxing = false;
+ public boolean enableEnumUnboxing = true;
// TODO(b/141451716): Evaluate the effect of allowing inlining in the inlinee.
public boolean applyInliningToInlinee =
System.getProperty("com.android.tools.r8.applyInliningToInlinee") != null;
@@ -1189,12 +1189,6 @@
enableNameReflectionOptimization = false;
}
- @VisibleForTesting
- public void enableEnumUnboxing() {
- assert !enableEnumUnboxing;
- enableEnumUnboxing = true;
- }
-
// TODO(b/69963623): Remove this once enabled.
@VisibleForTesting
public void enablePropagationOfConstantsAtCallSites() {
diff --git a/src/test/java/com/android/tools/r8/enumunboxing/EnumClinitWithSideEffectsUnboxingTest.java b/src/test/java/com/android/tools/r8/enumunboxing/EnumClinitWithSideEffectsUnboxingTest.java
index 2fbd235..c3e548e 100644
--- a/src/test/java/com/android/tools/r8/enumunboxing/EnumClinitWithSideEffectsUnboxingTest.java
+++ b/src/test/java/com/android/tools/r8/enumunboxing/EnumClinitWithSideEffectsUnboxingTest.java
@@ -1,7 +1,6 @@
package com.android.tools.r8.enumunboxing;
import com.android.tools.r8.TestParameters;
-import com.android.tools.r8.utils.InternalOptions;
import java.util.List;
import org.junit.Test;
import org.junit.runner.RunWith;
@@ -31,7 +30,6 @@
.addInnerClasses(EnumClinitWithSideEffectsUnboxingTest.class)
.addKeepMainRule(TestClass.class)
.addKeepRules(enumKeepRule.getKeepRule())
- .addOptionsModification(InternalOptions::enableEnumUnboxing)
.setMinApi(parameters.getApiLevel())
.compile()
.run(parameters.getRuntime(), TestClass.class)
diff --git a/src/test/java/com/android/tools/r8/enumunboxing/EnumInitWithSideEffectsUnboxingTest.java b/src/test/java/com/android/tools/r8/enumunboxing/EnumInitWithSideEffectsUnboxingTest.java
index d353692..b9445c2 100644
--- a/src/test/java/com/android/tools/r8/enumunboxing/EnumInitWithSideEffectsUnboxingTest.java
+++ b/src/test/java/com/android/tools/r8/enumunboxing/EnumInitWithSideEffectsUnboxingTest.java
@@ -1,7 +1,6 @@
package com.android.tools.r8.enumunboxing;
import com.android.tools.r8.TestParameters;
-import com.android.tools.r8.utils.InternalOptions;
import java.util.List;
import org.junit.Test;
import org.junit.runner.RunWith;
@@ -31,7 +30,6 @@
.addInnerClasses(EnumInitWithSideEffectsUnboxingTest.class)
.addKeepMainRule(TestClass.class)
.addKeepRules(enumKeepRule.getKeepRule())
- .addOptionsModification(InternalOptions::enableEnumUnboxing)
.setMinApi(parameters.getApiLevel())
.compile()
.run(parameters.getRuntime(), TestClass.class)
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 49718d4..5daa849 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
@@ -374,11 +374,7 @@
.getMethod()
.name
.toString()
- .equals(EnumUnboxingRewriter.ENUM_UNBOXING_UTILITY_ORDINAL)
- && !((InvokeInstructionSubject) instruction)
- .holder()
- .toString()
- .contains("java.lang.Enum")) {
+ .equals(EnumUnboxingRewriter.ENUM_UNBOXING_UTILITY_ORDINAL)) {
++invokeCount;
}
}