Remove isEligibleForClass{Inlining,Staticizing} from InstanceInitializerInfo
Change-Id: I8a3affa907a92d836c888736259c593123716137
diff --git a/src/main/java/com/android/tools/r8/ir/optimize/classinliner/InlineCandidateProcessor.java b/src/main/java/com/android/tools/r8/ir/optimize/classinliner/InlineCandidateProcessor.java
index 2f754d1..436f81b 100644
--- a/src/main/java/com/android/tools/r8/ir/optimize/classinliner/InlineCandidateProcessor.java
+++ b/src/main/java/com/android/tools/r8/ir/optimize/classinliner/InlineCandidateProcessor.java
@@ -722,7 +722,7 @@
if (method.isInstanceInitializer()) {
InstanceInitializerInfo initializerInfo =
method.getOptimizationInfo().getInstanceInitializerInfo();
- if (!initializerInfo.isEligibleForClassInlining()) {
+ if (initializerInfo.receiverMayEscapeOutsideConstructorChain()) {
return null;
}
}
@@ -1078,7 +1078,7 @@
}
InstanceInitializerInfo initializerInfo =
encodedMethod.getOptimizationInfo().getInstanceInitializerInfo();
- return initializerInfo.isEligibleForClassInlining();
+ return initializerInfo.receiverNeverEscapesOutsideConstructorChain();
}
private boolean exemptFromInstructionLimit(DexEncodedMethod inlinee) {
diff --git a/src/main/java/com/android/tools/r8/ir/optimize/info/initializer/DefaultInstanceInitializerInfo.java b/src/main/java/com/android/tools/r8/ir/optimize/info/initializer/DefaultInstanceInitializerInfo.java
index a75a255..e93cda7 100644
--- a/src/main/java/com/android/tools/r8/ir/optimize/info/initializer/DefaultInstanceInitializerInfo.java
+++ b/src/main/java/com/android/tools/r8/ir/optimize/info/initializer/DefaultInstanceInitializerInfo.java
@@ -29,16 +29,6 @@
}
@Override
- public boolean isEligibleForClassInlining() {
- return false;
- }
-
- @Override
- public boolean isEligibleForClassStaticizing() {
- return false;
- }
-
- @Override
public boolean instanceFieldInitializationMayDependOnEnvironment() {
return true;
}
diff --git a/src/main/java/com/android/tools/r8/ir/optimize/info/initializer/InstanceInitializerInfo.java b/src/main/java/com/android/tools/r8/ir/optimize/info/initializer/InstanceInitializerInfo.java
index 2614eb3..24cb9af 100644
--- a/src/main/java/com/android/tools/r8/ir/optimize/info/initializer/InstanceInitializerInfo.java
+++ b/src/main/java/com/android/tools/r8/ir/optimize/info/initializer/InstanceInitializerInfo.java
@@ -14,10 +14,6 @@
*/
public abstract AbstractFieldSet readSet();
- public abstract boolean isEligibleForClassInlining();
-
- public abstract boolean isEligibleForClassStaticizing();
-
/**
* Returns true if one of the instance fields on the enclosing class may be initialized with a
* value that may depend on the runtime environment by this constructor.
@@ -47,6 +43,10 @@
*/
public abstract boolean receiverNeverEscapesOutsideConstructorChain();
+ public final boolean receiverMayEscapeOutsideConstructorChain() {
+ return !receiverNeverEscapesOutsideConstructorChain();
+ }
+
public boolean isDefaultInfo() {
return false;
}
diff --git a/src/main/java/com/android/tools/r8/ir/optimize/info/initializer/NonTrivialInstanceInitializerInfo.java b/src/main/java/com/android/tools/r8/ir/optimize/info/initializer/NonTrivialInstanceInitializerInfo.java
index 67ad395..fa41621 100644
--- a/src/main/java/com/android/tools/r8/ir/optimize/info/initializer/NonTrivialInstanceInitializerInfo.java
+++ b/src/main/java/com/android/tools/r8/ir/optimize/info/initializer/NonTrivialInstanceInitializerInfo.java
@@ -20,16 +20,6 @@
}
@Override
- public boolean isEligibleForClassInlining() {
- return true;
- }
-
- @Override
- public boolean isEligibleForClassStaticizing() {
- return true;
- }
-
- @Override
public boolean instanceFieldInitializationMayDependOnEnvironment() {
return false;
}
diff --git a/src/main/java/com/android/tools/r8/ir/optimize/staticizer/StaticizingProcessor.java b/src/main/java/com/android/tools/r8/ir/optimize/staticizer/StaticizingProcessor.java
index 12992ca..e019acd 100644
--- a/src/main/java/com/android/tools/r8/ir/optimize/staticizer/StaticizingProcessor.java
+++ b/src/main/java/com/android/tools/r8/ir/optimize/staticizer/StaticizingProcessor.java
@@ -27,7 +27,6 @@
import com.android.tools.r8.ir.conversion.IRConverter;
import com.android.tools.r8.ir.optimize.CodeRewriter;
import com.android.tools.r8.ir.optimize.info.OptimizationFeedback;
-import com.android.tools.r8.ir.optimize.info.initializer.InstanceInitializerInfo;
import com.android.tools.r8.ir.optimize.staticizer.ClassStaticizer.CandidateInfo;
import com.android.tools.r8.origin.Origin;
import com.android.tools.r8.shaking.AppInfoWithLiveness;
@@ -155,9 +154,7 @@
// fields this should guarantee that the constructor is empty.
assert candidateClass.instanceFields().size() == 0;
assert constructorUsed.isProcessed();
- InstanceInitializerInfo initializerInfo =
- constructorUsed.getOptimizationInfo().getInstanceInitializerInfo();
- if (!initializerInfo.isEligibleForClassStaticizing()) {
+ if (constructorUsed.getOptimizationInfo().mayHaveSideEffects()) {
it.remove();
continue;
}