Fix atomic synthetic registration.
Change-Id: I9f1396cd7fdd9b0b89883d3f82d6f212684457f5
diff --git a/src/main/java/com/android/tools/r8/R8.java b/src/main/java/com/android/tools/r8/R8.java
index 88b4132..ba97871 100644
--- a/src/main/java/com/android/tools/r8/R8.java
+++ b/src/main/java/com/android/tools/r8/R8.java
@@ -335,9 +335,7 @@
if (options.enableEnumUnboxing) {
EnumUnboxingCfMethods.registerSynthesizedCodeReferences(appView.dexItemFactory());
}
- if (options.enableAtomicFieldUpdaterOptimization) {
- AtomicFieldUpdaterInstrumentor.registerSynthesizedCodeReferences(appView.dexItemFactory());
- }
+ AtomicFieldUpdaterInstrumentor.registerSynthesizedCodeReferences(appView);
if (options.desugarRecordState().isNotOff()) {
RecordInstructionDesugaring.registerSynthesizedCodeReferences(appView.dexItemFactory());
}
diff --git a/src/main/java/com/android/tools/r8/ir/optimize/AtomicFieldUpdaterInstrumentor.java b/src/main/java/com/android/tools/r8/ir/optimize/AtomicFieldUpdaterInstrumentor.java
index 771dc4f..1faf0f8 100644
--- a/src/main/java/com/android/tools/r8/ir/optimize/AtomicFieldUpdaterInstrumentor.java
+++ b/src/main/java/com/android/tools/r8/ir/optimize/AtomicFieldUpdaterInstrumentor.java
@@ -133,15 +133,18 @@
public static void run(
AppView<AppInfoWithLiveness> appView, ExecutorService service, Timing timing)
throws ExecutionException {
- var options = appView.options();
- if (options.enableAtomicFieldUpdaterOptimization
- && options.isGeneratingDex()
- && appView.enableWholeProgramOptimizations()
- && options.getMinApiLevel().isGreaterThanOrEqualTo(AndroidApiLevel.K)) {
+ if (isOptimizationEnabled(appView)) {
new AtomicFieldUpdaterInstrumentor(appView, service).runInternal(timing);
}
}
+ private static boolean isOptimizationEnabled(AppView<?> appView) {
+ return appView.options().enableAtomicFieldUpdaterOptimization
+ && appView.options().isGeneratingDex()
+ && appView.enableWholeProgramOptimizations()
+ && appView.options().getMinApiLevel().isGreaterThanOrEqualTo(AndroidApiLevel.K);
+ }
+
private AtomicFieldUpdaterInstrumentor(
AppView<AppInfoWithLiveness> appView, ExecutorService service) {
this.appView = appView;
@@ -707,8 +710,11 @@
return newInstructions;
}
- public static void registerSynthesizedCodeReferences(DexItemFactory factory) {
- AtomicFieldUpdaterOptimizationMethods.registerSynthesizedCodeReferences(factory);
+ public static void registerSynthesizedCodeReferences(AppView<?> appView) {
+ if (isOptimizationEnabled(appView)) {
+ AtomicFieldUpdaterOptimizationMethods.registerSynthesizedCodeReferences(
+ appView.dexItemFactory());
+ }
}
private static class UnsafeClassInfo {