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);
}