Add synchronization to call site optimization assert Bug: 157546167 Change-Id: I41e1327b5363d4c276bb5ef35e9b053c1b6c211f
diff --git a/src/main/java/com/android/tools/r8/ir/optimize/CallSiteOptimizationInfoPropagator.java b/src/main/java/com/android/tools/r8/ir/optimize/CallSiteOptimizationInfoPropagator.java index 7ee8700..5eb23bb 100644 --- a/src/main/java/com/android/tools/r8/ir/optimize/CallSiteOptimizationInfoPropagator.java +++ b/src/main/java/com/android/tools/r8/ir/optimize/CallSiteOptimizationInfoPropagator.java
@@ -35,6 +35,7 @@ import com.android.tools.r8.shaking.AppInfoWithLiveness; import com.android.tools.r8.utils.BooleanUtils; import com.android.tools.r8.utils.ForEachable; +import com.android.tools.r8.utils.InternalOptions; import com.android.tools.r8.utils.InternalOptions.CallSiteOptimizationOptions; import com.android.tools.r8.utils.LazyBox; import com.android.tools.r8.utils.Timing; @@ -276,7 +277,13 @@ } private void abandonCallSitePropagation(ForEachable<ProgramMethod> methods) { - methods.forEach(method -> method.getDefinition().abandonCallSiteOptimizationInfo()); + if (InternalOptions.assertionsEnabled()) { + synchronized (this) { + methods.forEach(method -> method.getDefinition().abandonCallSiteOptimizationInfo()); + } + } else { + methods.forEach(method -> method.getDefinition().abandonCallSiteOptimizationInfo()); + } } private CallSiteOptimizationInfo computeCallSiteOptimizationInfoFromArguments( @@ -435,7 +442,7 @@ return null; } - private boolean verifyAllProgramDispatchTargetsHaveBeenAbandoned( + private synchronized boolean verifyAllProgramDispatchTargetsHaveBeenAbandoned( InvokeMethod invoke, ProgramMethod context) { ProgramMethodSet targets = invoke.lookupProgramDispatchTargets(appView, context); if (targets != null) {