Support for setting optimization info for synthesized methods
Change-Id: I1b24de0bbc5630497f341891026a914a340c505b
diff --git a/src/main/java/com/android/tools/r8/graph/DexEncodedMethod.java b/src/main/java/com/android/tools/r8/graph/DexEncodedMethod.java
index b4a382f..82f09f8 100644
--- a/src/main/java/com/android/tools/r8/graph/DexEncodedMethod.java
+++ b/src/main/java/com/android/tools/r8/graph/DexEncodedMethod.java
@@ -1675,6 +1675,11 @@
return this;
}
+ public Builder setOptimizationInfo(MethodOptimizationInfo optimizationInfo) {
+ this.optimizationInfo = optimizationInfo;
+ return this;
+ }
+
public Builder modifyOptimizationInfo(
BiConsumer<DexEncodedMethod, MutableMethodOptimizationInfo> consumer) {
return addBuildConsumer(
diff --git a/src/main/java/com/android/tools/r8/synthesis/SyntheticMethodBuilder.java b/src/main/java/com/android/tools/r8/synthesis/SyntheticMethodBuilder.java
index d81a03f..56a9d20 100644
--- a/src/main/java/com/android/tools/r8/synthesis/SyntheticMethodBuilder.java
+++ b/src/main/java/com/android/tools/r8/synthesis/SyntheticMethodBuilder.java
@@ -17,6 +17,8 @@
import com.android.tools.r8.graph.GenericSignature.MethodTypeSignature;
import com.android.tools.r8.graph.MethodAccessFlags;
import com.android.tools.r8.graph.ParameterAnnotationsList;
+import com.android.tools.r8.ir.optimize.info.DefaultMethodOptimizationInfo;
+import com.android.tools.r8.ir.optimize.info.MethodOptimizationInfo;
import com.android.tools.r8.synthesis.SyntheticNaming.SyntheticKind;
import com.android.tools.r8.utils.AndroidApiLevel;
@@ -39,6 +41,7 @@
private ParameterAnnotationsList parameterAnnotationsList = ParameterAnnotationsList.empty();
private AndroidApiLevel apiLevelForDefinition = NOT_SET;
private AndroidApiLevel apiLevelForCode = NOT_SET;
+ private MethodOptimizationInfo optimizationInfo = DefaultMethodOptimizationInfo.getInstance();
private boolean checkAndroidApiLevels = true;
@@ -65,6 +68,11 @@
return this;
}
+ public SyntheticMethodBuilder setOptimizationInfo(MethodOptimizationInfo optimizationInfo) {
+ this.optimizationInfo = optimizationInfo;
+ return this;
+ }
+
public SyntheticMethodBuilder setProto(DexProto proto) {
this.proto = proto;
return this;
@@ -132,6 +140,7 @@
.setClassFileVersion(classFileVersion)
.setApiLevelForDefinition(apiLevelForDefinition)
.setApiLevelForCode(apiLevelForCode)
+ .setOptimizationInfo(optimizationInfo)
.applyIf(!checkAndroidApiLevels, DexEncodedMethod.Builder::disableAndroidApiLevelCheck)
.build();
assert isValidSyntheticMethod(method, syntheticKind);