Move the enabled check for BackportedMethodRewriter into the rewriter
Bug: 147139686
Change-Id: Ie40475da6ae6319eb956c592201aff64c14651a1
diff --git a/src/main/java/com/android/tools/r8/ir/conversion/IRConverter.java b/src/main/java/com/android/tools/r8/ir/conversion/IRConverter.java
index e501c31..f3dd806 100644
--- a/src/main/java/com/android/tools/r8/ir/conversion/IRConverter.java
+++ b/src/main/java/com/android/tools/r8/ir/conversion/IRConverter.java
@@ -255,10 +255,7 @@
((options.desugarState == DesugarState.ON) && enableTwrCloseResourceDesugaring())
? new TwrCloseResourceRewriter(appView, this)
: null;
- this.backportedMethodRewriter =
- options.desugarState == DesugarState.ON
- ? new BackportedMethodRewriter(appView, this)
- : null;
+ this.backportedMethodRewriter = new BackportedMethodRewriter(appView, this);
this.covariantReturnTypeAnnotationTransformer =
options.processCovariantReturnTypeAnnotations
? new CovariantReturnTypeAnnotationTransformer(this, appView.dexItemFactory())
@@ -444,9 +441,7 @@
private void synthesizeJava8UtilityClass(
Builder<?> builder, ExecutorService executorService) throws ExecutionException {
- if (backportedMethodRewriter != null) {
- backportedMethodRewriter.synthesizeUtilityClasses(builder, executorService);
- }
+ backportedMethodRewriter.synthesizeUtilityClasses(builder, executorService);
}
private void processCovariantReturnTypeAnnotations(Builder<?> builder) {
@@ -1295,9 +1290,7 @@
if (options.desugarState == DesugarState.ON && enableTryWithResourcesDesugaring()) {
codeRewriter.rewriteThrowableAddAndGetSuppressed(code);
}
- if (backportedMethodRewriter != null) {
- backportedMethodRewriter.desugar(code);
- }
+ backportedMethodRewriter.desugar(code);
stringConcatRewriter.desugarStringConcats(method.method, code);
diff --git a/src/main/java/com/android/tools/r8/ir/desugar/BackportedMethodRewriter.java b/src/main/java/com/android/tools/r8/ir/desugar/BackportedMethodRewriter.java
index 584bfc4..a1df648 100644
--- a/src/main/java/com/android/tools/r8/ir/desugar/BackportedMethodRewriter.java
+++ b/src/main/java/com/android/tools/r8/ir/desugar/BackportedMethodRewriter.java
@@ -44,6 +44,7 @@
import com.android.tools.r8.origin.SynthesizedOrigin;
import com.android.tools.r8.utils.AndroidApiLevel;
import com.android.tools.r8.utils.InternalOptions;
+import com.android.tools.r8.utils.InternalOptions.DesugarState;
import com.android.tools.r8.utils.StringDiagnostic;
import com.google.common.collect.Maps;
import com.google.common.collect.Sets;
@@ -70,7 +71,7 @@
private final IRConverter converter;
private final DexItemFactory factory;
private final RewritableMethods rewritableMethods;
- private final boolean enable;
+ private final boolean enabled;
private final Set<DexType> holders = Sets.newConcurrentHashSet();
private final Map<DexMethod, MethodProvider> methodProviders = new ConcurrentHashMap<>();
@@ -84,8 +85,9 @@
// the highest known API level when the compiler is built. This ensures that when this is used
// by the Android Platform build (which normally use an API level of 10000) there will be
// no rewriting of backported methods. See b/147480264.
- this.enable =
- !this.rewritableMethods.isEmpty()
+ this.enabled =
+ appView.options().desugarState == DesugarState.ON
+ && !this.rewritableMethods.isEmpty()
&& appView.options().minApiLevel <= AndroidApiLevel.LATEST.getLevel();
}
@@ -101,7 +103,7 @@
}
public void desugar(IRCode code) {
- if (!enable) {
+ if (!enabled) {
return; // Nothing to do!
}
@@ -183,6 +185,9 @@
public void synthesizeUtilityClasses(Builder<?> builder, ExecutorService executorService)
throws ExecutionException {
+ if (!enabled) {
+ return;
+ }
if (appView.options().isDesugaredLibraryCompilation()) {
synthesizeEmulatedDispatchMethods(builder);
} else {