Revert "Avoid inlining monitors into code with monitors on M"

This reverts commit 1defe3bc5f67c71a9dab21454e7301a03530b8b2.

Reason for revert: breaking internal

Change-Id: Ibf6f7f67c5f64311da03afc0bf1c28554c9a4d7c
diff --git a/src/main/java/com/android/tools/r8/ir/optimize/Inliner.java b/src/main/java/com/android/tools/r8/ir/optimize/Inliner.java
index b2a3f3e..592b645 100644
--- a/src/main/java/com/android/tools/r8/ir/optimize/Inliner.java
+++ b/src/main/java/com/android/tools/r8/ir/optimize/Inliner.java
@@ -1022,15 +1022,6 @@
           InlineeWithReason inlinee =
               action.buildInliningIR(
                   appView, invoke, context, inliningIRProvider, lensCodeRewriter);
-
-          // b/238399429 Don't inline if we have monitor instructions in both
-          // inliner and inlinee if the Art runtime might mess up synchronization.
-          if (inlinee.code.metadata().mayHaveMonitorInstruction()
-              && code.metadata().mayHaveMonitorInstruction()
-              && appView.options().canHaveIssueWithInlinedMonitors()) {
-            continue;
-          }
-
           if (strategy.willExceedBudget(
               code, invoke, inlinee, block, whyAreYouNotInliningReporter)) {
             assert whyAreYouNotInliningReporter.unsetReasonHasBeenReportedFlag();
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 ae36b27..98d5a27 100644
--- a/src/main/java/com/android/tools/r8/utils/InternalOptions.java
+++ b/src/main/java/com/android/tools/r8/utils/InternalOptions.java
@@ -2815,10 +2815,4 @@
     // TODO(b/246679983): Turned off while diagnosing b/246679983.
     return false && isGeneratingDex() && minApiLevel.isGreaterThanOrEqualTo(AndroidApiLevel.L);
   }
-
-  // b/238399429 Some art 6 vms have issues with multiple monitors in the same method
-  // Don't inline code with monitors into methods that already have monitors.
-  public boolean canHaveIssueWithInlinedMonitors() {
-    return canHaveBugPresentUntil(AndroidApiLevel.N);
-  }
 }
diff --git a/src/test/java/com/android/tools/r8/ir/optimize/inliner/sync/InlineStaticSynchronizedMethodTest.java b/src/test/java/com/android/tools/r8/ir/optimize/inliner/sync/InlineStaticSynchronizedMethodTest.java
index 569652a..1a20851 100644
--- a/src/test/java/com/android/tools/r8/ir/optimize/inliner/sync/InlineStaticSynchronizedMethodTest.java
+++ b/src/test/java/com/android/tools/r8/ir/optimize/inliner/sync/InlineStaticSynchronizedMethodTest.java
@@ -12,7 +12,6 @@
 import com.android.tools.r8.TestParameters;
 import com.android.tools.r8.TestParametersCollection;
 import com.android.tools.r8.ir.optimize.inliner.sync.InlineStaticSynchronizedMethodTest.TestClass.RunnableImpl;
-import com.android.tools.r8.utils.AndroidApiLevel;
 import com.android.tools.r8.utils.codeinspector.ClassSubject;
 import com.android.tools.r8.utils.codeinspector.CodeInspector;
 import java.lang.Thread.State;
@@ -54,17 +53,8 @@
   private void verifySynchronizedMethodsAreInlined(CodeInspector inspector) {
     ClassSubject classSubject = inspector.clazz(RunnableImpl.class);
     assertThat(classSubject, isPresent());
-    // On M we are seeing issues when inlining code with monitors which will trip up some art
-    // vms. See issue b/238399429 for details.
-    if (parameters.isCfRuntime()
-        || parameters.getApiLevel().isLessThanOrEqualTo(AndroidApiLevel.M)) {
-      assertThat(classSubject.uniqueMethodWithOriginalName("m1"), isPresent());
-      assertThat(classSubject.uniqueMethodWithOriginalName("m2"), not(isPresent()));
-
-    } else {
-      assertThat(classSubject.uniqueMethodWithOriginalName("m1"), not(isPresent()));
-      assertThat(classSubject.uniqueMethodWithOriginalName("m2"), not(isPresent()));
-    }
+    assertThat(classSubject.uniqueMethodWithOriginalName("m1"), not(isPresent()));
+    assertThat(classSubject.uniqueMethodWithOriginalName("m2"), not(isPresent()));
   }
 
   static class TestClass {
diff --git a/src/test/java/com/android/tools/r8/ir/optimize/inliner/sync/InlinerMonitorEnterValuesThresholdTest.java b/src/test/java/com/android/tools/r8/ir/optimize/inliner/sync/InlinerMonitorEnterValuesThresholdTest.java
index c300549..d6c07ca 100644
--- a/src/test/java/com/android/tools/r8/ir/optimize/inliner/sync/InlinerMonitorEnterValuesThresholdTest.java
+++ b/src/test/java/com/android/tools/r8/ir/optimize/inliner/sync/InlinerMonitorEnterValuesThresholdTest.java
@@ -10,7 +10,6 @@
 
 import com.android.tools.r8.TestBase;
 import com.android.tools.r8.TestParameters;
-import com.android.tools.r8.utils.AndroidApiLevel;
 import com.android.tools.r8.utils.codeinspector.ClassSubject;
 import com.android.tools.r8.utils.codeinspector.CodeInspector;
 import com.google.common.collect.ImmutableList;
@@ -55,22 +54,13 @@
     ClassSubject classSubject = inspector.clazz(TestClass.class);
     assertThat(classSubject, isPresent());
     assertThat(classSubject.mainMethod(), isPresent());
-    // On M we are seeing issues when inlining code with monitors which will trip up some art
-    // vms. See issue b/238399429 for details.
-    if (parameters.isCfRuntime()
-        || parameters.getApiLevel().isLessThanOrEqualTo(AndroidApiLevel.M)) {
-      assertThat(classSubject.uniqueMethodWithOriginalName("m1"), isPresent());
-      assertThat(classSubject.uniqueMethodWithOriginalName("m1"), isPresent());
+    assertThat(classSubject.uniqueMethodWithOriginalName("m1"), not(isPresent()));
+    assertThat(classSubject.uniqueMethodWithOriginalName("m2"), not(isPresent()));
+    if (threshold == 2) {
       assertThat(classSubject.uniqueMethodWithOriginalName("m3"), isPresent());
     } else {
-      assertThat(classSubject.uniqueMethodWithOriginalName("m1"), not(isPresent()));
-      assertThat(classSubject.uniqueMethodWithOriginalName("m2"), not(isPresent()));
-      if (threshold == 2) {
-        assertThat(classSubject.uniqueMethodWithOriginalName("m3"), isPresent());
-      } else {
-        assert threshold == 3;
-        assertThat(classSubject.uniqueMethodWithOriginalName("m3"), not(isPresent()));
-      }
+      assert threshold == 3;
+      assertThat(classSubject.uniqueMethodWithOriginalName("m3"), not(isPresent()));
     }
   }