Remove neverInline() from MethodOptimizationInfo

Change-Id: Ifff803e5ef335c2891aa742c9634afe32cba218b
diff --git a/src/main/java/com/android/tools/r8/ir/optimize/DefaultInliningOracle.java b/src/main/java/com/android/tools/r8/ir/optimize/DefaultInliningOracle.java
index 0332cce..c3649fb 100644
--- a/src/main/java/com/android/tools/r8/ir/optimize/DefaultInliningOracle.java
+++ b/src/main/java/com/android/tools/r8/ir/optimize/DefaultInliningOracle.java
@@ -12,7 +12,6 @@
 import com.android.tools.r8.graph.AppView;
 import com.android.tools.r8.graph.Code;
 import com.android.tools.r8.graph.DexEncodedField;
-import com.android.tools.r8.graph.DexEncodedMethod;
 import com.android.tools.r8.graph.DexField;
 import com.android.tools.r8.graph.DexMethod;
 import com.android.tools.r8.graph.DexType;
@@ -35,7 +34,6 @@
 import com.android.tools.r8.ir.optimize.Inliner.InlineAction;
 import com.android.tools.r8.ir.optimize.Inliner.InlineeWithReason;
 import com.android.tools.r8.ir.optimize.Inliner.Reason;
-import com.android.tools.r8.ir.optimize.info.MethodOptimizationInfo;
 import com.android.tools.r8.ir.optimize.info.OptimizationFeedback;
 import com.android.tools.r8.ir.optimize.inliner.InliningReasonStrategy;
 import com.android.tools.r8.ir.optimize.inliner.WhyAreYouNotInliningReporter;
@@ -123,13 +121,6 @@
       ProgramMethod singleTarget,
       Reason reason,
       WhyAreYouNotInliningReporter whyAreYouNotInliningReporter) {
-    DexEncodedMethod singleTargetMethod = singleTarget.getDefinition();
-    MethodOptimizationInfo targetOptimizationInfo = singleTargetMethod.getOptimizationInfo();
-    if (targetOptimizationInfo.neverInline()) {
-      whyAreYouNotInliningReporter.reportMarkedAsNeverInline();
-      return false;
-    }
-
     // Do not inline if the inlinee is greater than the api caller level.
     // TODO(b/188498051): We should not force inline lower api method calls.
     if (reason != Reason.FORCE
@@ -147,10 +138,10 @@
       return false;
     }
 
-    if (method.getDefinition() == singleTargetMethod) {
+    if (method.isStructurallyEqualTo(singleTarget)) {
       // Cannot handle recursive inlining at this point.
       // Force inlined method should never be recursive.
-      assert !targetOptimizationInfo.forceInline();
+      assert !singleTarget.getOptimizationInfo().forceInline();
       whyAreYouNotInliningReporter.reportRecursiveMethod();
       return false;
     }
diff --git a/src/main/java/com/android/tools/r8/ir/optimize/ForcedInliningOracle.java b/src/main/java/com/android/tools/r8/ir/optimize/ForcedInliningOracle.java
index 41b6fe6..672d9a7 100644
--- a/src/main/java/com/android/tools/r8/ir/optimize/ForcedInliningOracle.java
+++ b/src/main/java/com/android/tools/r8/ir/optimize/ForcedInliningOracle.java
@@ -79,12 +79,7 @@
     if (info == null) {
       return null;
     }
-
     assert method.getDefinition() != info.target.getDefinition();
-    // Even though call to Inliner::performForcedInlining is supposed to be controlled by
-    // the caller, it's still suspicious if we want to force inline something that is marked
-    // with neverInline() flag.
-    assert !info.target.getDefinition().getOptimizationInfo().neverInline();
     assert passesInliningConstraints(
         invoke, resolutionResult, info.target, Reason.FORCE, whyAreYouNotInliningReporter);
     return new InlineAction(info.target, invoke, Reason.FORCE);
diff --git a/src/main/java/com/android/tools/r8/ir/optimize/info/DefaultMethodOptimizationInfo.java b/src/main/java/com/android/tools/r8/ir/optimize/info/DefaultMethodOptimizationInfo.java
index c085286..24d3ad4 100644
--- a/src/main/java/com/android/tools/r8/ir/optimize/info/DefaultMethodOptimizationInfo.java
+++ b/src/main/java/com/android/tools/r8/ir/optimize/info/DefaultMethodOptimizationInfo.java
@@ -165,11 +165,6 @@
   }
 
   @Override
-  public boolean neverInline() {
-    return false;
-  }
-
-  @Override
   public boolean checksNullReceiverBeforeAnySideEffect() {
     return UNKNOWN_CHECKS_NULL_RECEIVER_BEFORE_ANY_SIDE_EFFECT;
   }
diff --git a/src/main/java/com/android/tools/r8/ir/optimize/info/MethodOptimizationInfo.java b/src/main/java/com/android/tools/r8/ir/optimize/info/MethodOptimizationInfo.java
index aff19ef..08ef5d9 100644
--- a/src/main/java/com/android/tools/r8/ir/optimize/info/MethodOptimizationInfo.java
+++ b/src/main/java/com/android/tools/r8/ir/optimize/info/MethodOptimizationInfo.java
@@ -92,8 +92,6 @@
 
   public abstract boolean forceInline();
 
-  public abstract boolean neverInline();
-
   public abstract boolean checksNullReceiverBeforeAnySideEffect();
 
   public abstract boolean triggersClassInitBeforeAnySideEffect();
diff --git a/src/main/java/com/android/tools/r8/ir/optimize/info/MutableMethodOptimizationInfo.java b/src/main/java/com/android/tools/r8/ir/optimize/info/MutableMethodOptimizationInfo.java
index dd6f917..e43573a 100644
--- a/src/main/java/com/android/tools/r8/ir/optimize/info/MutableMethodOptimizationInfo.java
+++ b/src/main/java/com/android/tools/r8/ir/optimize/info/MutableMethodOptimizationInfo.java
@@ -456,11 +456,6 @@
   }
 
   @Override
-  public boolean neverInline() {
-    return inlining == InlinePreference.NeverInline;
-  }
-
-  @Override
   public boolean checksNullReceiverBeforeAnySideEffect() {
     return isFlagSet(CHECKS_NULL_RECEIVER_BEFORE_ANY_SIDE_EFFECT_FLAG);
   }
@@ -596,13 +591,6 @@
     inlining = InlinePreference.Default;
   }
 
-  // TODO(b/140214568): Should be package-private.
-  public void markNeverInline() {
-    // For concurrent scenarios we should allow the flag to be already set
-    assert inlining == InlinePreference.Default || inlining == InlinePreference.NeverInline;
-    inlining = InlinePreference.NeverInline;
-  }
-
   void markCheckNullReceiverBeforeAnySideEffect(boolean mark) {
     setFlag(CHECKS_NULL_RECEIVER_BEFORE_ANY_SIDE_EFFECT_FLAG, mark);
   }