Enable check-cast rewriting in horizontal class merger Change-Id: I52876c2da79d3c4a32bc23ed44c551545efcd9b6
diff --git a/src/main/java/com/android/tools/r8/horizontalclassmerging/policies/NoDirectRuntimeTypeChecks.java b/src/main/java/com/android/tools/r8/horizontalclassmerging/policies/NoDirectRuntimeTypeChecks.java index 3507dfa..cba8299 100644 --- a/src/main/java/com/android/tools/r8/horizontalclassmerging/policies/NoDirectRuntimeTypeChecks.java +++ b/src/main/java/com/android/tools/r8/horizontalclassmerging/policies/NoDirectRuntimeTypeChecks.java
@@ -9,11 +9,9 @@ import com.android.tools.r8.horizontalclassmerging.SingleClassPolicy; import com.android.tools.r8.shaking.RuntimeTypeCheckInfo; import com.android.tools.r8.synthesis.SyntheticItems; -import com.android.tools.r8.utils.InternalOptions.HorizontalClassMergerOptions; public class NoDirectRuntimeTypeChecks extends SingleClassPolicy { - private final HorizontalClassMergerOptions options; private final RuntimeTypeCheckInfo runtimeTypeCheckInfo; private final SyntheticItems syntheticItems; @@ -22,7 +20,6 @@ } public NoDirectRuntimeTypeChecks(AppView<?> appView, RuntimeTypeCheckInfo runtimeTypeCheckInfo) { - this.options = appView.options().horizontalClassMergerOptions(); this.runtimeTypeCheckInfo = runtimeTypeCheckInfo; this.syntheticItems = appView.getSyntheticItems(); } @@ -34,7 +31,7 @@ : "Expected synthetic, got: " + clazz.getTypeName(); return true; } - if (clazz.isInterface() || !options.enableCheckCastRewriting) { + if (clazz.isInterface()) { // We cannot rewrite runtime type checks to classId comparisons, since we cannot add instance // fields to interfaces. return !runtimeTypeCheckInfo.isRuntimeCheckType(clazz);
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 f469bf4..db6c411 100644 --- a/src/main/java/com/android/tools/r8/utils/InternalOptions.java +++ b/src/main/java/com/android/tools/r8/utils/InternalOptions.java
@@ -2092,9 +2092,6 @@ "com.android.tools.r8.enableSameFilePolicy", false); private boolean enableSyntheticMerging = true; - // TODO(b/418674622): Enable check-cast-rewriting. - public boolean enableCheckCastRewriting = false; - // Used in tests to enable horizontal class merging when compiling to class files. public void enableForTesting() { disable = OptionalBool.FALSE;
diff --git a/src/test/testbase/java/com/android/tools/r8/TestCompilerBuilder.java b/src/test/testbase/java/com/android/tools/r8/TestCompilerBuilder.java index 28881a6..3651780 100644 --- a/src/test/testbase/java/com/android/tools/r8/TestCompilerBuilder.java +++ b/src/test/testbase/java/com/android/tools/r8/TestCompilerBuilder.java
@@ -93,8 +93,6 @@ options.testing.forcePruneMetaInfManifestMf = true; options.horizontalClassMergerOptions().enableForTesting(); options.horizontalClassMergerOptions().setEnableInterfaceMerging(); - assert !options.horizontalClassMergerOptions().enableCheckCastRewriting; - options.horizontalClassMergerOptions().enableCheckCastRewriting = true; options .getCfCodeAnalysisOptions() .setAllowUnreachableCfBlocks(false)