Reuse util for getting first non-receiver argument index
Change-Id: I661c14ca8998a2b3cc89681ff279913f04067acc
diff --git a/src/main/java/com/android/tools/r8/graph/RewrittenPrototypeDescription.java b/src/main/java/com/android/tools/r8/graph/RewrittenPrototypeDescription.java
index bd96228..98bf1c3 100644
--- a/src/main/java/com/android/tools/r8/graph/RewrittenPrototypeDescription.java
+++ b/src/main/java/com/android/tools/r8/graph/RewrittenPrototypeDescription.java
@@ -12,7 +12,6 @@
import com.android.tools.r8.ir.conversion.ExtraParameter;
import com.android.tools.r8.ir.conversion.ExtraUnusedNullParameter;
import com.android.tools.r8.shaking.AppInfoWithLiveness;
-import com.android.tools.r8.utils.BooleanUtils;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.Ordering;
import it.unimi.dsi.fastutil.ints.Int2ReferenceMap.Entry;
@@ -306,7 +305,7 @@
return params;
}
DexType[] newParams = new DexType[params.length - numberOfRemovedArguments()];
- int offset = encodedMethod.isStatic() ? 0 : 1;
+ int offset = encodedMethod.getFirstNonReceiverArgumentIndex();
int newParamIndex = 0;
for (int oldParamIndex = 0; oldParamIndex < params.length; oldParamIndex++) {
ArgumentInfo argInfo = argumentInfos.get(oldParamIndex + offset);
@@ -369,7 +368,7 @@
DexEncodedMethod method) {
if (numberOfRemovedArguments() > 0 && !method.parameterAnnotationsList.isEmpty()) {
return builder -> {
- int firstArgumentIndex = BooleanUtils.intValue(!method.isStatic());
+ int firstArgumentIndex = method.getFirstNonReceiverArgumentIndex();
builder.removeParameterAnnotations(
oldIndex -> getArgumentInfo(oldIndex + firstArgumentIndex).isRemovedArgumentInfo());
};
diff --git a/src/main/java/com/android/tools/r8/ir/conversion/IRBuilder.java b/src/main/java/com/android/tools/r8/ir/conversion/IRBuilder.java
index b35e2ca..b6ffb43 100644
--- a/src/main/java/com/android/tools/r8/ir/conversion/IRBuilder.java
+++ b/src/main/java/com/android/tools/r8/ir/conversion/IRBuilder.java
@@ -542,7 +542,7 @@
int originalNumberOfArguments =
method.getReference().proto.parameters.values.length
+ argumentsInfo.numberOfRemovedArguments()
- + (method.isStatic() ? 0 : 1)
+ + method.getFirstNonReceiverArgumentIndex()
- prototypeChanges.numberOfExtraParameters();
int usedArgumentIndex = 0;
diff --git a/src/main/java/com/android/tools/r8/ir/optimize/UninstantiatedTypeOptimization.java b/src/main/java/com/android/tools/r8/ir/optimize/UninstantiatedTypeOptimization.java
index b2e8366..df7eeb3 100644
--- a/src/main/java/com/android/tools/r8/ir/optimize/UninstantiatedTypeOptimization.java
+++ b/src/main/java/com/android/tools/r8/ir/optimize/UninstantiatedTypeOptimization.java
@@ -305,7 +305,7 @@
ArgumentInfoCollection.Builder argInfosBuilder = ArgumentInfoCollection.builder();
DexProto proto = encodedMethod.getReference().proto;
- int offset = encodedMethod.isStatic() ? 0 : 1;
+ int offset = encodedMethod.getFirstNonReceiverArgumentIndex();
for (int i = 0; i < proto.parameters.size(); ++i) {
DexType type = proto.parameters.values[i];
if (type.isAlwaysNull(appView)) {
diff --git a/src/main/java/com/android/tools/r8/ir/optimize/UnusedArgumentsCollector.java b/src/main/java/com/android/tools/r8/ir/optimize/UnusedArgumentsCollector.java
index cc8f5b1..052e196 100644
--- a/src/main/java/com/android/tools/r8/ir/optimize/UnusedArgumentsCollector.java
+++ b/src/main/java/com/android/tools/r8/ir/optimize/UnusedArgumentsCollector.java
@@ -282,7 +282,7 @@
return null;
}
}
- int offset = method.accessFlags.isStatic() ? 0 : 1;
+ int offset = method.getFirstNonReceiverArgumentIndex();
int argumentCount = method.getReference().proto.parameters.size() + offset;
CollectUsedArguments collector = new CollectUsedArguments();
if (!method.accessFlags.isStatic()) {
diff --git a/src/main/java/com/android/tools/r8/ir/optimize/info/ConcreteCallSiteOptimizationInfo.java b/src/main/java/com/android/tools/r8/ir/optimize/info/ConcreteCallSiteOptimizationInfo.java
index d0c82cb..986ba65 100644
--- a/src/main/java/com/android/tools/r8/ir/optimize/info/ConcreteCallSiteOptimizationInfo.java
+++ b/src/main/java/com/android/tools/r8/ir/optimize/info/ConcreteCallSiteOptimizationInfo.java
@@ -85,7 +85,7 @@
}
private TypeElement[] getStaticTypes(AppView<?> appView, DexEncodedMethod method) {
- int argOffset = method.isStatic() ? 0 : 1;
+ int argOffset = method.getFirstNonReceiverArgumentIndex();
int size = method.getReference().getArity() + argOffset;
TypeElement[] staticTypes = new TypeElement[size];
if (!method.isStatic()) {