Rename InvokeNewArray to NewArrayFilled
Change-Id: I07196b31c44811e58d4ad665c09447c83ac2ee62
diff --git a/src/main/java/com/android/tools/r8/dex/code/DexFilledNewArray.java b/src/main/java/com/android/tools/r8/dex/code/DexFilledNewArray.java
index e9ff38e..72fac38 100644
--- a/src/main/java/com/android/tools/r8/dex/code/DexFilledNewArray.java
+++ b/src/main/java/com/android/tools/r8/dex/code/DexFilledNewArray.java
@@ -59,7 +59,7 @@
@Override
public void buildIR(IRBuilder builder) {
- builder.addInvokeNewArray(getType(), A, new int[] {C, D, E, F, G});
+ builder.addNewArrayFilled(getType(), A, new int[] {C, D, E, F, G});
}
@Override
diff --git a/src/main/java/com/android/tools/r8/ir/analysis/ValueMayDependOnEnvironmentAnalysis.java b/src/main/java/com/android/tools/r8/ir/analysis/ValueMayDependOnEnvironmentAnalysis.java
index f15e404..6af4d2e 100644
--- a/src/main/java/com/android/tools/r8/ir/analysis/ValueMayDependOnEnvironmentAnalysis.java
+++ b/src/main/java/com/android/tools/r8/ir/analysis/ValueMayDependOnEnvironmentAnalysis.java
@@ -24,10 +24,10 @@
import com.android.tools.r8.ir.code.IRCode;
import com.android.tools.r8.ir.code.Instruction;
import com.android.tools.r8.ir.code.InvokeDirect;
-import com.android.tools.r8.ir.code.InvokeNewArray;
import com.android.tools.r8.ir.code.InvokeVirtual;
import com.android.tools.r8.ir.code.LogicalBinop;
import com.android.tools.r8.ir.code.NewArrayEmpty;
+import com.android.tools.r8.ir.code.NewArrayFilled;
import com.android.tools.r8.ir.code.NewArrayFilledData;
import com.android.tools.r8.ir.code.NewInstance;
import com.android.tools.r8.ir.code.StaticPut;
@@ -200,9 +200,9 @@
Instruction definition = value.definition;
// Check that it is a constant array with a known size at this point in the IR.
- if (definition.isInvokeNewArray()) {
- InvokeNewArray invokeNewArray = definition.asInvokeNewArray();
- for (Value argument : invokeNewArray.arguments()) {
+ if (definition.isNewArrayFilled()) {
+ NewArrayFilled newArrayFilled = definition.asNewArrayFilled();
+ for (Value argument : newArrayFilled.arguments()) {
graph.addDirectedEdge(node, graph.createNodeIfAbsent(argument));
worklist.addIfNotSeen(argument);
}
diff --git a/src/main/java/com/android/tools/r8/ir/analysis/fieldvalueanalysis/StaticFieldValueAnalysis.java b/src/main/java/com/android/tools/r8/ir/analysis/fieldvalueanalysis/StaticFieldValueAnalysis.java
index cc62515..f03ac07 100644
--- a/src/main/java/com/android/tools/r8/ir/analysis/fieldvalueanalysis/StaticFieldValueAnalysis.java
+++ b/src/main/java/com/android/tools/r8/ir/analysis/fieldvalueanalysis/StaticFieldValueAnalysis.java
@@ -31,8 +31,8 @@
import com.android.tools.r8.ir.code.IRCode;
import com.android.tools.r8.ir.code.Instruction;
import com.android.tools.r8.ir.code.InvokeDirect;
-import com.android.tools.r8.ir.code.InvokeNewArray;
import com.android.tools.r8.ir.code.NewArrayEmpty;
+import com.android.tools.r8.ir.code.NewArrayFilled;
import com.android.tools.r8.ir.code.NewInstance;
import com.android.tools.r8.ir.code.Value;
import com.android.tools.r8.ir.optimize.ClassInitializerDefaultsOptimization.ClassInitializerDefaultsResult;
@@ -216,7 +216,7 @@
if (value.isPhi()) {
return null;
}
- if (value.definition.isNewArrayEmptyOrInvokeNewArray()) {
+ if (value.definition.isNewArrayEmptyOrNewArrayFilled()) {
return computeSingleEnumFieldValueForValuesArray(value);
}
if (value.definition.isNewInstance()) {
@@ -226,7 +226,7 @@
}
private SingleFieldValue computeSingleEnumFieldValueForValuesArray(Value value) {
- if (!value.definition.isNewArrayEmptyOrInvokeNewArray()) {
+ if (!value.definition.isNewArrayEmptyOrNewArrayFilled()) {
return null;
}
AbstractValue valuesValue = computedValues.get(value);
@@ -248,10 +248,10 @@
private SingleFieldValue internalComputeSingleEnumFieldValueForValuesArray(Value value) {
NewArrayEmpty newArrayEmpty = value.definition.asNewArrayEmpty();
- InvokeNewArray invokeNewArray = value.definition.asInvokeNewArray();
- assert newArrayEmpty != null || invokeNewArray != null;
+ NewArrayFilled newArrayFilled = value.definition.asNewArrayFilled();
+ assert newArrayEmpty != null || newArrayFilled != null;
- DexType arrayType = newArrayEmpty != null ? newArrayEmpty.type : invokeNewArray.getArrayType();
+ DexType arrayType = newArrayEmpty != null ? newArrayEmpty.type : newArrayFilled.getArrayType();
if (arrayType.toBaseType(appView.dexItemFactory()) != context.getHolder().type) {
return null;
}
@@ -259,7 +259,7 @@
return null;
}
- int valuesSize = newArrayEmpty != null ? newArrayEmpty.sizeIfConst() : invokeNewArray.size();
+ int valuesSize = newArrayEmpty != null ? newArrayEmpty.sizeIfConst() : newArrayFilled.size();
if (valuesSize < 1) {
// Array is empty or non-const size.
return null;
@@ -268,9 +268,9 @@
DexType[] valuesTypes = new DexType[valuesSize];
ObjectState[] valuesState = new ObjectState[valuesSize];
- if (invokeNewArray != null) {
+ if (newArrayFilled != null) {
// Populate array values from filled-new-array values.
- List<Value> inValues = invokeNewArray.inValues();
+ List<Value> inValues = newArrayFilled.inValues();
for (int i = 0; i < valuesSize; ++i) {
if (!updateEnumValueState(valuesState, valuesTypes, i, inValues.get(i))) {
return null;
diff --git a/src/main/java/com/android/tools/r8/ir/analysis/proto/GeneratedMessageLiteShrinker.java b/src/main/java/com/android/tools/r8/ir/analysis/proto/GeneratedMessageLiteShrinker.java
index 7caae94..bd541f8 100644
--- a/src/main/java/com/android/tools/r8/ir/analysis/proto/GeneratedMessageLiteShrinker.java
+++ b/src/main/java/com/android/tools/r8/ir/analysis/proto/GeneratedMessageLiteShrinker.java
@@ -34,9 +34,9 @@
import com.android.tools.r8.ir.code.InvokeDirect;
import com.android.tools.r8.ir.code.InvokeMethod;
import com.android.tools.r8.ir.code.InvokeMethodWithReceiver;
-import com.android.tools.r8.ir.code.InvokeNewArray;
import com.android.tools.r8.ir.code.MemberType;
import com.android.tools.r8.ir.code.NewArrayEmpty;
+import com.android.tools.r8.ir.code.NewArrayFilled;
import com.android.tools.r8.ir.code.NewInstance;
import com.android.tools.r8.ir.code.Value;
import com.android.tools.r8.ir.conversion.IRConverter;
@@ -358,7 +358,7 @@
arrayValues.add(materializingInstruction.outValue());
}
instructionIterator.add(
- new InvokeNewArray(
+ new NewArrayFilled(
appView.dexItemFactory().objectArrayType, newObjectsValue, arrayValues));
} else {
instructionIterator.add(
diff --git a/src/main/java/com/android/tools/r8/ir/analysis/proto/RawMessageInfoDecoder.java b/src/main/java/com/android/tools/r8/ir/analysis/proto/RawMessageInfoDecoder.java
index a22f001..ac5f054 100644
--- a/src/main/java/com/android/tools/r8/ir/analysis/proto/RawMessageInfoDecoder.java
+++ b/src/main/java/com/android/tools/r8/ir/analysis/proto/RawMessageInfoDecoder.java
@@ -32,9 +32,9 @@
import com.android.tools.r8.ir.code.Instruction;
import com.android.tools.r8.ir.code.InstructionIterator;
import com.android.tools.r8.ir.code.InvokeMethod;
-import com.android.tools.r8.ir.code.InvokeNewArray;
import com.android.tools.r8.ir.code.InvokeStatic;
import com.android.tools.r8.ir.code.NewArrayEmpty;
+import com.android.tools.r8.ir.code.NewArrayFilled;
import com.android.tools.r8.ir.code.StaticGet;
import com.android.tools.r8.ir.code.Value;
import com.android.tools.r8.naming.dexitembasedstring.NameComputationInfo;
@@ -309,17 +309,17 @@
}
NewArrayEmpty newArrayEmpty = objectsValue.definition.asNewArrayEmpty();
- InvokeNewArray invokeNewArray = objectsValue.definition.asInvokeNewArray();
+ NewArrayFilled newArrayFilled = objectsValue.definition.asNewArrayFilled();
- if (newArrayEmpty == null && invokeNewArray == null) {
+ if (newArrayEmpty == null && newArrayFilled == null) {
throw new InvalidRawMessageInfoException();
}
// Verify that the array is used in only one spot.
- if (invokeNewArray != null) {
+ if (newArrayFilled != null) {
if (!objectsValue.hasSingleUniqueUser()) {
throw new InvalidRawMessageInfoException();
}
- return ThrowingIterator.fromIterator(invokeNewArray.inValues().iterator());
+ return ThrowingIterator.fromIterator(newArrayFilled.inValues().iterator());
}
Value sizeValue = newArrayEmpty.size().getAliasedValue();
diff --git a/src/main/java/com/android/tools/r8/ir/analysis/sideeffect/ClassInitializerSideEffectAnalysis.java b/src/main/java/com/android/tools/r8/ir/analysis/sideeffect/ClassInitializerSideEffectAnalysis.java
index ad34d29..032e1798 100644
--- a/src/main/java/com/android/tools/r8/ir/analysis/sideeffect/ClassInitializerSideEffectAnalysis.java
+++ b/src/main/java/com/android/tools/r8/ir/analysis/sideeffect/ClassInitializerSideEffectAnalysis.java
@@ -60,7 +60,7 @@
}
// Array creations are observable if they may throw.
- if (instruction.isInvokeNewArray()
+ if (instruction.isNewArrayFilled()
|| instruction.isNewArrayEmpty()
|| instruction.isNewArrayFilledData()) {
if (instruction.instructionInstanceCanThrow(appView, context)) {
diff --git a/src/main/java/com/android/tools/r8/ir/analysis/value/objectstate/ObjectStateAnalysis.java b/src/main/java/com/android/tools/r8/ir/analysis/value/objectstate/ObjectStateAnalysis.java
index 125acfa..dea5836 100644
--- a/src/main/java/com/android/tools/r8/ir/analysis/value/objectstate/ObjectStateAnalysis.java
+++ b/src/main/java/com/android/tools/r8/ir/analysis/value/objectstate/ObjectStateAnalysis.java
@@ -22,7 +22,7 @@
Value value, AppView<AppInfoWithLiveness> appView, ProgramMethod context) {
assert !value.hasAliasedValue();
if (value.isDefinedByInstructionSatisfying(
- i -> i.isNewArrayEmpty() || i.isNewArrayFilledData() || i.isInvokeNewArray())) {
+ i -> i.isNewArrayEmpty() || i.isNewArrayFilledData() || i.isNewArrayFilled())) {
return computeNewArrayObjectState(value, appView, context);
}
if (value.isDefinedByInstructionSatisfying(Instruction::isNewInstance)) {
diff --git a/src/main/java/com/android/tools/r8/ir/code/ArrayAccess.java b/src/main/java/com/android/tools/r8/ir/code/ArrayAccess.java
index 2bf91f5..924b38e 100644
--- a/src/main/java/com/android/tools/r8/ir/code/ArrayAccess.java
+++ b/src/main/java/com/android/tools/r8/ir/code/ArrayAccess.java
@@ -54,7 +54,7 @@
// TODO(b/203731608): Add parameters to the method and use abstract value in R8.
int arraySize;
Value arrayRoot = array().getAliasedValue();
- if (arrayRoot.isDefinedByInstructionSatisfying(Instruction::isNewArrayEmptyOrInvokeNewArray)) {
+ if (arrayRoot.isDefinedByInstructionSatisfying(Instruction::isNewArrayEmptyOrNewArrayFilled)) {
Instruction definition = arrayRoot.getDefinition();
if (definition.isNewArrayEmpty()) {
Value newArraySizeValue = definition.asNewArrayEmpty().size();
@@ -64,7 +64,7 @@
return true;
}
} else {
- arraySize = definition.asInvokeNewArray().size();
+ arraySize = definition.asNewArrayFilled().size();
}
} else {
return true;
diff --git a/src/main/java/com/android/tools/r8/ir/code/ArrayPut.java b/src/main/java/com/android/tools/r8/ir/code/ArrayPut.java
index a96638e..96935cb 100644
--- a/src/main/java/com/android/tools/r8/ir/code/ArrayPut.java
+++ b/src/main/java/com/android/tools/r8/ir/code/ArrayPut.java
@@ -141,7 +141,7 @@
public boolean instructionInstanceCanThrow(AppView<?> appView, ProgramMethod context) {
// Check that the array is guaranteed to be non-null and that the index is within bounds.
Value array = array().getAliasedValue();
- if (!array.isDefinedByInstructionSatisfying(Instruction::isNewArrayEmptyOrInvokeNewArray)
+ if (!array.isDefinedByInstructionSatisfying(Instruction::isNewArrayEmptyOrNewArrayFilled)
|| array.hasLocalInfo()) {
return true;
}
@@ -156,7 +156,7 @@
return true;
}
} else {
- size = arrayDefinition.asInvokeNewArray().size();
+ size = arrayDefinition.asNewArrayFilled().size();
}
int index;
diff --git a/src/main/java/com/android/tools/r8/ir/code/DefaultInstructionVisitor.java b/src/main/java/com/android/tools/r8/ir/code/DefaultInstructionVisitor.java
index d81f466..a21882a 100644
--- a/src/main/java/com/android/tools/r8/ir/code/DefaultInstructionVisitor.java
+++ b/src/main/java/com/android/tools/r8/ir/code/DefaultInstructionVisitor.java
@@ -200,7 +200,7 @@
}
@Override
- public T visit(InvokeNewArray instruction) {
+ public T visit(NewArrayFilled instruction) {
return handleInvoke(instruction);
}
diff --git a/src/main/java/com/android/tools/r8/ir/code/IRCodeUtils.java b/src/main/java/com/android/tools/r8/ir/code/IRCodeUtils.java
index 99f92eb..7caf4ec 100644
--- a/src/main/java/com/android/tools/r8/ir/code/IRCodeUtils.java
+++ b/src/main/java/com/android/tools/r8/ir/code/IRCodeUtils.java
@@ -83,13 +83,13 @@
if (arrayValue.hasPhiUsers() || arrayValue.hasDebugUsers()) {
return;
}
- if (!definition.isNewArrayEmptyOrInvokeNewArray()) {
+ if (!definition.isNewArrayEmptyOrNewArrayFilled()) {
assert false;
return;
}
Deque<InstructionOrPhi> worklist = new ArrayDeque<>();
- InvokeNewArray invokeNewArray = definition.asInvokeNewArray();
- if (invokeNewArray != null) {
+ NewArrayFilled newArrayFilled = definition.asNewArrayFilled();
+ if (newArrayFilled != null) {
worklist.add(definition);
} else if (definition.isNewArrayEmpty()) {
for (Instruction user : arrayValue.uniqueUsers()) {
diff --git a/src/main/java/com/android/tools/r8/ir/code/IRMetadata.java b/src/main/java/com/android/tools/r8/ir/code/IRMetadata.java
index 4c6632e..f633d53 100644
--- a/src/main/java/com/android/tools/r8/ir/code/IRMetadata.java
+++ b/src/main/java/com/android/tools/r8/ir/code/IRMetadata.java
@@ -202,10 +202,6 @@
return result;
}
- public boolean mayHaveInvokeNewArray() {
- return get(Opcodes.INVOKE_NEW_ARRAY);
- }
-
public boolean mayHaveInvokePolymorphic() {
return get(Opcodes.INVOKE_POLYMORPHIC);
}
@@ -230,6 +226,10 @@
return get(Opcodes.MUL);
}
+ public boolean mayHaveNewArrayFilled() {
+ return get(Opcodes.NEW_ARRAY_FILLED);
+ }
+
public boolean mayHaveNewInstance() {
return get(Opcodes.NEW_INSTANCE);
}
diff --git a/src/main/java/com/android/tools/r8/ir/code/Instruction.java b/src/main/java/com/android/tools/r8/ir/code/Instruction.java
index dee8f72..b22a102 100644
--- a/src/main/java/com/android/tools/r8/ir/code/Instruction.java
+++ b/src/main/java/com/android/tools/r8/ir/code/Instruction.java
@@ -1023,8 +1023,8 @@
return false;
}
- public boolean isNewArrayEmptyOrInvokeNewArray() {
- return isNewArrayEmpty() || isInvokeNewArray();
+ public boolean isNewArrayEmptyOrNewArrayFilled() {
+ return isNewArrayEmpty() || isNewArrayFilled();
}
public NewArrayEmpty asNewArrayEmpty() {
@@ -1287,11 +1287,11 @@
return null;
}
- public boolean isInvokeNewArray() {
+ public boolean isNewArrayFilled() {
return false;
}
- public InvokeNewArray asInvokeNewArray() {
+ public NewArrayFilled asNewArrayFilled() {
return null;
}
@@ -1430,7 +1430,7 @@
public boolean isCreatingArray() {
return isNewArrayEmpty()
|| isNewArrayFilledData()
- || isInvokeNewArray()
+ || isNewArrayFilled()
|| isInvokeMultiNewArray()
|| isRecordFieldValues();
}
diff --git a/src/main/java/com/android/tools/r8/ir/code/InstructionVisitor.java b/src/main/java/com/android/tools/r8/ir/code/InstructionVisitor.java
index 0fe8c68..8318365 100644
--- a/src/main/java/com/android/tools/r8/ir/code/InstructionVisitor.java
+++ b/src/main/java/com/android/tools/r8/ir/code/InstructionVisitor.java
@@ -80,7 +80,7 @@
T visit(InvokeMultiNewArray instruction);
- T visit(InvokeNewArray instruction);
+ T visit(NewArrayFilled instruction);
T visit(InvokePolymorphic instruction);
diff --git a/src/main/java/com/android/tools/r8/ir/code/Invoke.java b/src/main/java/com/android/tools/r8/ir/code/Invoke.java
index 01f645b..416ac24 100644
--- a/src/main/java/com/android/tools/r8/ir/code/Invoke.java
+++ b/src/main/java/com/android/tools/r8/ir/code/Invoke.java
@@ -55,7 +55,7 @@
case VIRTUAL:
return new InvokeVirtual((DexMethod) target, result, arguments);
case NEW_ARRAY:
- return new InvokeNewArray((DexType) target, result, arguments);
+ return new NewArrayFilled((DexType) target, result, arguments);
case MULTI_NEW_ARRAY:
return new InvokeMultiNewArray((DexType) target, result, arguments);
case CUSTOM:
diff --git a/src/main/java/com/android/tools/r8/ir/code/InvokeNewArray.java b/src/main/java/com/android/tools/r8/ir/code/NewArrayFilled.java
similarity index 93%
rename from src/main/java/com/android/tools/r8/ir/code/InvokeNewArray.java
rename to src/main/java/com/android/tools/r8/ir/code/NewArrayFilled.java
index ba020a4..f3f21ff 100644
--- a/src/main/java/com/android/tools/r8/ir/code/InvokeNewArray.java
+++ b/src/main/java/com/android/tools/r8/ir/code/NewArrayFilled.java
@@ -29,18 +29,18 @@
import com.android.tools.r8.lightir.LirBuilder;
import java.util.List;
-public class InvokeNewArray extends Invoke {
+public class NewArrayFilled extends Invoke {
private final DexType type;
- public InvokeNewArray(DexType type, Value result, List<Value> arguments) {
+ public NewArrayFilled(DexType type, Value result, List<Value> arguments) {
super(result, arguments);
this.type = type;
}
@Override
public int opcode() {
- return Opcodes.INVOKE_NEW_ARRAY;
+ return Opcodes.NEW_ARRAY_FILLED;
}
@Override
@@ -99,23 +99,23 @@
@Override
public boolean identicalNonValueNonPositionParts(Instruction other) {
- return other.isInvokeNewArray() && type == other.asInvokeNewArray().type;
+ return other.isNewArrayFilled() && type == other.asNewArrayFilled().type;
}
@Override
- public boolean isInvokeNewArray() {
+ public boolean isNewArrayFilled() {
return true;
}
@Override
- public InvokeNewArray asInvokeNewArray() {
+ public NewArrayFilled asNewArrayFilled() {
return this;
}
@Override
public ConstraintWithTarget inliningConstraint(
InliningConstraints inliningConstraints, ProgramMethod context) {
- return inliningConstraints.forInvokeNewArray(type, context);
+ return inliningConstraints.forNewArrayFilled(type, context);
}
@Override
@@ -230,6 +230,6 @@
@Override
public void buildLir(LirBuilder<Value, ?> builder) {
- builder.addInvokeNewArray(getArrayType(), arguments());
+ builder.addNewArrayFilled(getArrayType(), arguments());
}
}
diff --git a/src/main/java/com/android/tools/r8/ir/code/Opcodes.java b/src/main/java/com/android/tools/r8/ir/code/Opcodes.java
index eb6eb85..44ad346 100644
--- a/src/main/java/com/android/tools/r8/ir/code/Opcodes.java
+++ b/src/main/java/com/android/tools/r8/ir/code/Opcodes.java
@@ -42,7 +42,7 @@
int INVOKE_DIRECT = 33;
int INVOKE_INTERFACE = 34;
int INVOKE_MULTI_NEW_ARRAY = 35;
- int INVOKE_NEW_ARRAY = 36;
+ int NEW_ARRAY_FILLED = 36;
int INVOKE_POLYMORPHIC = 37;
int INVOKE_STATIC = 38;
int INVOKE_SUPER = 39;
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 d45ffdf..d016a21 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
@@ -1635,7 +1635,7 @@
addInvoke(type, method, callSiteProto, arguments, false /* isInterface */);
}
- public void addInvokeNewArray(DexType type, int argumentCount, int[] argumentRegisters) {
+ public void addNewArrayFilled(DexType type, int argumentCount, int[] argumentRegisters) {
String descriptor = type.descriptor.toString();
assert descriptor.charAt(0) == '[';
assert descriptor.length() >= 2;
@@ -1753,7 +1753,7 @@
assert invoke.instructionTypeCanThrow();
DexType outType = invoke.getReturnType();
Nullability nullability =
- invoke.isInvokeNewArray() || invoke.isInvokeMultiNewArray()
+ invoke.isNewArrayFilled() || invoke.isInvokeMultiNewArray()
? definitelyNotNull()
: maybeNull();
// InvokeCustom.evaluate will look into the metadata of the callsite which will provide more
diff --git a/src/main/java/com/android/tools/r8/ir/conversion/LensCodeRewriter.java b/src/main/java/com/android/tools/r8/ir/conversion/LensCodeRewriter.java
index 82f55e3..3e89f7e 100644
--- a/src/main/java/com/android/tools/r8/ir/conversion/LensCodeRewriter.java
+++ b/src/main/java/com/android/tools/r8/ir/conversion/LensCodeRewriter.java
@@ -19,13 +19,13 @@
import static com.android.tools.r8.ir.code.Opcodes.INVOKE_DIRECT;
import static com.android.tools.r8.ir.code.Opcodes.INVOKE_INTERFACE;
import static com.android.tools.r8.ir.code.Opcodes.INVOKE_MULTI_NEW_ARRAY;
-import static com.android.tools.r8.ir.code.Opcodes.INVOKE_NEW_ARRAY;
import static com.android.tools.r8.ir.code.Opcodes.INVOKE_POLYMORPHIC;
import static com.android.tools.r8.ir.code.Opcodes.INVOKE_STATIC;
import static com.android.tools.r8.ir.code.Opcodes.INVOKE_SUPER;
import static com.android.tools.r8.ir.code.Opcodes.INVOKE_VIRTUAL;
import static com.android.tools.r8.ir.code.Opcodes.MOVE_EXCEPTION;
import static com.android.tools.r8.ir.code.Opcodes.NEW_ARRAY_EMPTY;
+import static com.android.tools.r8.ir.code.Opcodes.NEW_ARRAY_FILLED;
import static com.android.tools.r8.ir.code.Opcodes.NEW_INSTANCE;
import static com.android.tools.r8.ir.code.Opcodes.NEW_UNBOXED_ENUM_INSTANCE;
import static com.android.tools.r8.ir.code.Opcodes.RETURN;
@@ -89,11 +89,11 @@
import com.android.tools.r8.ir.code.InvokeDirect;
import com.android.tools.r8.ir.code.InvokeMethod;
import com.android.tools.r8.ir.code.InvokeMultiNewArray;
-import com.android.tools.r8.ir.code.InvokeNewArray;
import com.android.tools.r8.ir.code.InvokePolymorphic;
import com.android.tools.r8.ir.code.InvokeType;
import com.android.tools.r8.ir.code.MoveException;
import com.android.tools.r8.ir.code.NewArrayEmpty;
+import com.android.tools.r8.ir.code.NewArrayFilled;
import com.android.tools.r8.ir.code.NewInstance;
import com.android.tools.r8.ir.code.Phi;
import com.android.tools.r8.ir.code.Position;
@@ -781,13 +781,13 @@
}
break;
- case INVOKE_NEW_ARRAY:
+ case NEW_ARRAY_FILLED:
{
- InvokeNewArray newArray = current.asInvokeNewArray();
+ NewArrayFilled newArray = current.asNewArrayFilled();
new InstructionReplacer(code, current, iterator, affectedPhis)
.replaceInstructionIfTypeChanged(
newArray.getArrayType(),
- (t, v) -> new InvokeNewArray(t, v, newArray.inValues()),
+ (t, v) -> new NewArrayFilled(t, v, newArray.inValues()),
graphLens,
codeLens);
}
diff --git a/src/main/java/com/android/tools/r8/ir/conversion/passes/ArrayConstructionSimplifier.java b/src/main/java/com/android/tools/r8/ir/conversion/passes/ArrayConstructionSimplifier.java
index fcf5825..2eff218 100644
--- a/src/main/java/com/android/tools/r8/ir/conversion/passes/ArrayConstructionSimplifier.java
+++ b/src/main/java/com/android/tools/r8/ir/conversion/passes/ArrayConstructionSimplifier.java
@@ -12,9 +12,9 @@
import com.android.tools.r8.ir.code.IRCode;
import com.android.tools.r8.ir.code.Instruction;
import com.android.tools.r8.ir.code.InstructionListIterator;
-import com.android.tools.r8.ir.code.InvokeNewArray;
import com.android.tools.r8.ir.code.LinearFlowInstructionListIterator;
import com.android.tools.r8.ir.code.NewArrayEmpty;
+import com.android.tools.r8.ir.code.NewArrayFilled;
import com.android.tools.r8.ir.code.Value;
import com.android.tools.r8.ir.conversion.passes.result.CodeRewriterResult;
import com.android.tools.r8.utils.InternalOptions;
@@ -132,8 +132,8 @@
assert newArrayEmpty.getLocalInfo() == null;
Instruction lastArrayPut = info.lastArrayPutIterator.peekPrevious();
Value invokeValue = code.createValue(newArrayEmpty.getOutType(), null);
- InvokeNewArray invoke =
- new InvokeNewArray(arrayType, invokeValue, Arrays.asList(info.values));
+ NewArrayFilled invoke =
+ new NewArrayFilled(arrayType, invokeValue, Arrays.asList(info.values));
invoke.setPosition(lastArrayPut.getPosition());
for (Value value : newArrayEmpty.inValues()) {
value.removeUser(newArrayEmpty);
diff --git a/src/main/java/com/android/tools/r8/ir/conversion/passes/FilledNewArrayRewriter.java b/src/main/java/com/android/tools/r8/ir/conversion/passes/FilledNewArrayRewriter.java
index 8423772..4076241 100644
--- a/src/main/java/com/android/tools/r8/ir/conversion/passes/FilledNewArrayRewriter.java
+++ b/src/main/java/com/android/tools/r8/ir/conversion/passes/FilledNewArrayRewriter.java
@@ -17,9 +17,9 @@
import com.android.tools.r8.ir.code.ConstNumber;
import com.android.tools.r8.ir.code.IRCode;
import com.android.tools.r8.ir.code.Instruction;
-import com.android.tools.r8.ir.code.InvokeNewArray;
import com.android.tools.r8.ir.code.MemberType;
import com.android.tools.r8.ir.code.NewArrayEmpty;
+import com.android.tools.r8.ir.code.NewArrayFilled;
import com.android.tools.r8.ir.code.NewArrayFilledData;
import com.android.tools.r8.ir.code.Position;
import com.android.tools.r8.ir.code.Value;
@@ -52,10 +52,10 @@
BasicBlockInstructionListIterator instructionIterator = block.listIterator(code);
while (instructionIterator.hasNext()) {
Instruction instruction = instructionIterator.next();
- if (instruction.isInvokeNewArray()) {
+ if (instruction.isNewArrayFilled()) {
result =
processInstruction(
- code, blockIterator, instructionIterator, instruction.asInvokeNewArray(), result);
+ code, blockIterator, instructionIterator, instruction.asNewArrayFilled(), result);
}
}
}
@@ -67,45 +67,45 @@
@Override
protected boolean shouldRewriteCode(IRCode code) {
- return code.metadata().mayHaveInvokeNewArray();
+ return code.metadata().mayHaveNewArrayFilled();
}
private CodeRewriterResult processInstruction(
IRCode code,
BasicBlockIterator blockIterator,
BasicBlockInstructionListIterator instructionIterator,
- InvokeNewArray invokeNewArray,
+ NewArrayFilled newArrayFilled,
CodeRewriterResult result) {
- if (canUseInvokeNewArray(invokeNewArray)) {
+ if (canUseNewArrayFilled(newArrayFilled)) {
return result;
}
- if (invokeNewArray.hasUnusedOutValue()) {
+ if (newArrayFilled.hasUnusedOutValue()) {
instructionIterator.removeOrReplaceByDebugLocalRead();
- } else if (canUseNewArrayFilledData(invokeNewArray)) {
- rewriteToNewArrayFilledData(code, blockIterator, instructionIterator, invokeNewArray);
+ } else if (canUseNewArrayFilledData(newArrayFilled)) {
+ rewriteToNewArrayFilledData(code, blockIterator, instructionIterator, newArrayFilled);
} else {
- rewriteToArrayPuts(code, blockIterator, instructionIterator, invokeNewArray);
+ rewriteToArrayPuts(code, blockIterator, instructionIterator, newArrayFilled);
}
return CodeRewriterResult.HAS_CHANGED;
}
- private boolean canUseInvokeNewArray(InvokeNewArray invokeNewArray) {
+ private boolean canUseNewArrayFilled(NewArrayFilled newArrayFilled) {
if (!options.isGeneratingDex()) {
return false;
}
- int size = invokeNewArray.size();
+ int size = newArrayFilled.size();
if (size < rewriteArrayOptions.minSizeForFilledNewArray) {
return false;
}
// filled-new-array is implemented only for int[] and Object[].
- DexType arrayType = invokeNewArray.getArrayType();
+ DexType arrayType = newArrayFilled.getArrayType();
if (arrayType == dexItemFactory.intArrayType) {
// For int[], using filled-new-array is usually smaller than filled-array-data.
// filled-new-array supports up to 5 registers before it's filled-new-array/range.
if (size > rewriteArrayOptions.maxSizeForFilledNewArrayOfInts) {
return false;
}
- if (canUseNewArrayFilledData(invokeNewArray)
+ if (canUseNewArrayFilledData(newArrayFilled)
&& size
> rewriteArrayOptions
.maxSizeForFilledNewArrayOfIntsWhenNewArrayFilledDataApplicable) {
@@ -132,8 +132,8 @@
&& arrayType != dexItemFactory.objectArrayType
&& !arrayType.isPrimitiveArrayType()) {
DexType arrayElementType = arrayType.toArrayElementType(dexItemFactory);
- for (Value elementValue : invokeNewArray.inValues()) {
- if (!canStoreElementInInvokeNewArray(elementValue.getType(), arrayElementType)) {
+ for (Value elementValue : newArrayFilled.inValues()) {
+ if (!canStoreElementInNewArrayFilled(elementValue.getType(), arrayElementType)) {
return false;
}
}
@@ -143,7 +143,7 @@
return false;
}
- private boolean canStoreElementInInvokeNewArray(TypeElement valueType, DexType elementType) {
+ private boolean canStoreElementInNewArrayFilled(TypeElement valueType, DexType elementType) {
if (elementType == dexItemFactory.objectType) {
return true;
}
@@ -177,44 +177,44 @@
return valueType.isClassType(elementType);
}
- private boolean canUseNewArrayFilledData(InvokeNewArray invokeNewArray) {
+ private boolean canUseNewArrayFilledData(NewArrayFilled newArrayFilled) {
// Only convert into NewArrayFilledData when compiling to DEX.
if (!appView.options().isGeneratingDex()) {
return false;
}
// If there is only one element it is typically smaller to generate the array put instruction
// instead of fill array data.
- int size = invokeNewArray.size();
+ int size = newArrayFilled.size();
if (size < rewriteArrayOptions.minSizeForFilledArrayData
|| size > rewriteArrayOptions.maxSizeForFilledArrayData) {
return false;
}
- if (!invokeNewArray.getArrayType().isPrimitiveArrayType()) {
+ if (!newArrayFilled.getArrayType().isPrimitiveArrayType()) {
return false;
}
- return Iterables.all(invokeNewArray.inValues(), Value::isConstant);
+ return Iterables.all(newArrayFilled.inValues(), Value::isConstant);
}
private NewArrayEmpty rewriteToNewArrayEmpty(
IRCode code,
BasicBlockInstructionListIterator instructionIterator,
- InvokeNewArray invokeNewArray) {
- // Load the size before the InvokeNewArray instruction.
+ NewArrayFilled newArrayFilled) {
+ // Load the size before the NewArrayEmpty instruction.
ConstNumber constNumber =
ConstNumber.builder()
.setFreshOutValue(code, TypeElement.getInt())
- .setValue(invokeNewArray.size())
- .setPosition(options.debug ? invokeNewArray.getPosition() : Position.none())
+ .setValue(newArrayFilled.size())
+ .setPosition(options.debug ? newArrayFilled.getPosition() : Position.none())
.build();
instructionIterator.previous();
instructionIterator.add(constNumber);
Instruction next = instructionIterator.next();
- assert next == invokeNewArray;
+ assert next == newArrayFilled;
// Replace the InvokeNewArray instruction by a NewArrayEmpty instruction.
NewArrayEmpty newArrayEmpty =
new NewArrayEmpty(
- invokeNewArray.outValue(), constNumber.outValue(), invokeNewArray.getArrayType());
+ newArrayFilled.outValue(), constNumber.outValue(), newArrayFilled.getArrayType());
instructionIterator.replaceCurrentInstruction(newArrayEmpty);
return newArrayEmpty;
}
@@ -223,18 +223,18 @@
IRCode code,
BasicBlockIterator blockIterator,
BasicBlockInstructionListIterator instructionIterator,
- InvokeNewArray invokeNewArray) {
- NewArrayEmpty newArrayEmpty = rewriteToNewArrayEmpty(code, instructionIterator, invokeNewArray);
+ NewArrayFilled newArrayFilled) {
+ NewArrayEmpty newArrayEmpty = rewriteToNewArrayEmpty(code, instructionIterator, newArrayFilled);
// Insert a new NewArrayFilledData instruction after the NewArrayEmpty instruction.
- short[] contents = computeArrayFilledData(invokeNewArray);
+ short[] contents = computeArrayFilledData(newArrayFilled);
NewArrayFilledData newArrayFilledData =
new NewArrayFilledData(
- invokeNewArray.outValue(),
- invokeNewArray.getArrayType().elementSizeForPrimitiveArrayType(),
- invokeNewArray.size(),
+ newArrayFilled.outValue(),
+ newArrayFilled.getArrayType().elementSizeForPrimitiveArrayType(),
+ newArrayFilled.size(),
contents);
- newArrayFilledData.setPosition(invokeNewArray.getPosition());
+ newArrayFilledData.setPosition(newArrayFilled.getPosition());
if (newArrayEmpty.getBlock().hasCatchHandlers()) {
BasicBlock splitBlock =
instructionIterator.splitCopyCatchHandlers(code, blockIterator, options);
@@ -244,18 +244,18 @@
}
}
- private short[] computeArrayFilledData(InvokeNewArray invokeNewArray) {
- int elementSize = invokeNewArray.getArrayType().elementSizeForPrimitiveArrayType();
- int size = invokeNewArray.size();
+ private short[] computeArrayFilledData(NewArrayFilled newArrayFilled) {
+ int elementSize = newArrayFilled.getArrayType().elementSizeForPrimitiveArrayType();
+ int size = newArrayFilled.size();
if (elementSize == 1) {
short[] result = new short[(size + 1) / 2];
for (int i = 0; i < size; i += 2) {
ConstNumber constNumber =
- invokeNewArray.getOperand(i).getConstInstruction().asConstNumber();
+ newArrayFilled.getOperand(i).getConstInstruction().asConstNumber();
short value = (short) (constNumber.getIntValue() & 0xFF);
if (i + 1 < size) {
ConstNumber nextConstNumber =
- invokeNewArray.getOperand(i + 1).getConstInstruction().asConstNumber();
+ newArrayFilled.getOperand(i + 1).getConstInstruction().asConstNumber();
value |= (short) ((nextConstNumber.getIntValue() & 0xFF) << 8);
}
result[i / 2] = value;
@@ -266,7 +266,7 @@
int shortsPerConstant = elementSize / 2;
short[] result = new short[size * shortsPerConstant];
for (int i = 0; i < size; i++) {
- ConstNumber constNumber = invokeNewArray.getOperand(i).getConstInstruction().asConstNumber();
+ ConstNumber constNumber = newArrayFilled.getOperand(i).getConstInstruction().asConstNumber();
for (int part = 0; part < shortsPerConstant; part++) {
result[i * shortsPerConstant + part] =
(short) ((constNumber.getRawValue() >> (16 * part)) & 0xFFFFL);
@@ -279,10 +279,10 @@
IRCode code,
BasicBlockIterator blockIterator,
BasicBlockInstructionListIterator instructionIterator,
- InvokeNewArray invokeNewArray) {
- NewArrayEmpty newArrayEmpty = rewriteToNewArrayEmpty(code, instructionIterator, invokeNewArray);
+ NewArrayFilled newArrayFilled) {
+ NewArrayEmpty newArrayEmpty = rewriteToNewArrayEmpty(code, instructionIterator, newArrayFilled);
int index = 0;
- for (Value elementValue : invokeNewArray.inValues()) {
+ for (Value elementValue : newArrayFilled.inValues()) {
if (instructionIterator.getBlock().hasCatchHandlers()) {
BasicBlock splitBlock =
instructionIterator.splitCopyCatchHandlers(code, blockIterator, options);
diff --git a/src/main/java/com/android/tools/r8/ir/optimize/InliningConstraints.java b/src/main/java/com/android/tools/r8/ir/optimize/InliningConstraints.java
index 449bb2e..0a8b0e7 100644
--- a/src/main/java/com/android/tools/r8/ir/optimize/InliningConstraints.java
+++ b/src/main/java/com/android/tools/r8/ir/optimize/InliningConstraints.java
@@ -193,7 +193,7 @@
return ConstraintWithTarget.classIsVisible(context, type, appView);
}
- public ConstraintWithTarget forInvokeNewArray(DexType type, ProgramMethod context) {
+ public ConstraintWithTarget forNewArrayFilled(DexType type, ProgramMethod context) {
return ConstraintWithTarget.classIsVisible(context, type, appView);
}
diff --git a/src/main/java/com/android/tools/r8/ir/optimize/RedundantFieldLoadAndStoreElimination.java b/src/main/java/com/android/tools/r8/ir/optimize/RedundantFieldLoadAndStoreElimination.java
index e9c9747..40d0bf0 100644
--- a/src/main/java/com/android/tools/r8/ir/optimize/RedundantFieldLoadAndStoreElimination.java
+++ b/src/main/java/com/android/tools/r8/ir/optimize/RedundantFieldLoadAndStoreElimination.java
@@ -440,7 +440,7 @@
|| instruction.isIf()
|| instruction.isInstanceOf()
|| instruction.isInvokeMultiNewArray()
- || instruction.isInvokeNewArray()
+ || instruction.isNewArrayFilled()
|| instruction.isMoveException()
|| instruction.isNewArrayEmpty()
|| instruction.isNewArrayFilledData()
diff --git a/src/main/java/com/android/tools/r8/ir/optimize/enums/EnumUnboxerImpl.java b/src/main/java/com/android/tools/r8/ir/optimize/enums/EnumUnboxerImpl.java
index 78712ee..d6ef7b1 100644
--- a/src/main/java/com/android/tools/r8/ir/optimize/enums/EnumUnboxerImpl.java
+++ b/src/main/java/com/android/tools/r8/ir/optimize/enums/EnumUnboxerImpl.java
@@ -18,10 +18,10 @@
import static com.android.tools.r8.ir.code.Opcodes.INVOKE_CUSTOM;
import static com.android.tools.r8.ir.code.Opcodes.INVOKE_DIRECT;
import static com.android.tools.r8.ir.code.Opcodes.INVOKE_INTERFACE;
-import static com.android.tools.r8.ir.code.Opcodes.INVOKE_NEW_ARRAY;
import static com.android.tools.r8.ir.code.Opcodes.INVOKE_STATIC;
import static com.android.tools.r8.ir.code.Opcodes.INVOKE_SUPER;
import static com.android.tools.r8.ir.code.Opcodes.INVOKE_VIRTUAL;
+import static com.android.tools.r8.ir.code.Opcodes.NEW_ARRAY_FILLED;
import static com.android.tools.r8.ir.code.Opcodes.RETURN;
import static com.android.tools.r8.ir.code.Opcodes.STATIC_GET;
import static com.android.tools.r8.ir.code.Opcodes.STATIC_PUT;
@@ -71,10 +71,10 @@
import com.android.tools.r8.ir.code.Instruction;
import com.android.tools.r8.ir.code.InvokeCustom;
import com.android.tools.r8.ir.code.InvokeMethod;
-import com.android.tools.r8.ir.code.InvokeNewArray;
import com.android.tools.r8.ir.code.InvokeStatic;
import com.android.tools.r8.ir.code.InvokeVirtual;
import com.android.tools.r8.ir.code.MemberType;
+import com.android.tools.r8.ir.code.NewArrayFilled;
import com.android.tools.r8.ir.code.Phi;
import com.android.tools.r8.ir.code.Return;
import com.android.tools.r8.ir.code.Value;
@@ -595,10 +595,10 @@
markEnumAsUnboxable(Reason.ENUM_METHOD_CALLED_WITH_NULL_RECEIVER, enumClass);
}
}
- } else if (use.isInvokeNewArray()) {
+ } else if (use.isNewArrayFilled()) {
DexProgramClass enumClass =
getEnumUnboxingCandidateOrNull(
- use.asInvokeNewArray().getArrayType().toBaseType(factory));
+ use.asNewArrayFilled().getArrayType().toBaseType(factory));
if (enumClass != null) {
eligibleEnums.add(enumClass.getType());
}
@@ -1170,13 +1170,13 @@
case INVOKE_DIRECT:
case INVOKE_INTERFACE:
return analyzeInvokeUser(instruction.asInvokeMethod(), code, context, enumClass, enumValue);
- case INVOKE_NEW_ARRAY:
- return analyzeInvokeNewArrayUser(
- instruction.asInvokeNewArray(), code, context, enumClass, enumValue);
case INVOKE_STATIC:
case INVOKE_SUPER:
case INVOKE_VIRTUAL:
return analyzeInvokeUser(instruction.asInvokeMethod(), code, context, enumClass, enumValue);
+ case NEW_ARRAY_FILLED:
+ return analyzeNewArrayFilledUser(
+ instruction.asNewArrayFilled(), code, context, enumClass, enumValue);
case RETURN:
return analyzeReturnUser(instruction.asReturn(), code, context, enumClass, enumValue);
case STATIC_PUT:
@@ -1248,15 +1248,15 @@
return Reason.INVALID_ARRAY_PUT;
}
- private Reason analyzeInvokeNewArrayUser(
- InvokeNewArray invokeNewArray,
+ private Reason analyzeNewArrayFilledUser(
+ NewArrayFilled newArrayFilled,
IRCode code,
ProgramMethod context,
DexProgramClass enumClass,
Value enumValue) {
// MyEnum[] array = new MyEnum[] { MyEnum.A }; is valid.
// We need to prove that the value to put in and the array have correct types.
- TypeElement arrayType = invokeNewArray.getOutType();
+ TypeElement arrayType = newArrayFilled.getOutType();
assert arrayType.isArrayType();
ClassTypeElement arrayBaseType = arrayType.asArrayType().getBaseType().asClassType();
@@ -1268,7 +1268,7 @@
return Reason.INVALID_INVOKE_NEW_ARRAY;
}
- for (Value value : invokeNewArray.inValues()) {
+ for (Value value : newArrayFilled.inValues()) {
if (!isAssignableToArray(value, arrayBaseType)) {
return Reason.INVALID_INVOKE_NEW_ARRAY;
}
diff --git a/src/main/java/com/android/tools/r8/ir/optimize/enums/EnumUnboxingRewriter.java b/src/main/java/com/android/tools/r8/ir/optimize/enums/EnumUnboxingRewriter.java
index dda9843..e0774e9 100644
--- a/src/main/java/com/android/tools/r8/ir/optimize/enums/EnumUnboxingRewriter.java
+++ b/src/main/java/com/android/tools/r8/ir/optimize/enums/EnumUnboxingRewriter.java
@@ -32,10 +32,10 @@
import com.android.tools.r8.ir.code.InstructionListIterator;
import com.android.tools.r8.ir.code.InvokeMethod;
import com.android.tools.r8.ir.code.InvokeMethodWithReceiver;
-import com.android.tools.r8.ir.code.InvokeNewArray;
import com.android.tools.r8.ir.code.InvokeStatic;
import com.android.tools.r8.ir.code.InvokeVirtual;
import com.android.tools.r8.ir.code.MemberType;
+import com.android.tools.r8.ir.code.NewArrayFilled;
import com.android.tools.r8.ir.code.NewUnboxedEnumInstance;
import com.android.tools.r8.ir.code.Phi;
import com.android.tools.r8.ir.code.StaticGet;
@@ -190,8 +190,8 @@
block,
iterator,
instruction.asInvokeMethodWithReceiver());
- } else if (instruction.isInvokeNewArray()) {
- rewriteInvokeNewArray(instruction.asInvokeNewArray(), code, iterator);
+ } else if (instruction.isNewArrayFilled()) {
+ rewriteNewArrayFilled(instruction.asNewArrayFilled(), code, iterator);
} else if (instruction.isInvokeStatic()) {
rewriteInvokeStatic(
instruction.asInvokeStatic(),
@@ -483,23 +483,23 @@
}
}
- private void rewriteInvokeNewArray(
- InvokeNewArray invokeNewArray, IRCode code, InstructionListIterator instructionIterator) {
- DexType arrayBaseType = invokeNewArray.getArrayType().toBaseType(factory);
+ private void rewriteNewArrayFilled(
+ NewArrayFilled newArrayFilled, IRCode code, InstructionListIterator instructionIterator) {
+ DexType arrayBaseType = newArrayFilled.getArrayType().toBaseType(factory);
if (!unboxedEnumsData.isUnboxedEnum(arrayBaseType)) {
return;
}
DexType rewrittenArrayType =
- invokeNewArray.getArrayType().replaceBaseType(factory.intType, factory);
- List<Value> elements = new ArrayList<>(invokeNewArray.inValues().size());
+ newArrayFilled.getArrayType().replaceBaseType(factory.intType, factory);
+ List<Value> elements = new ArrayList<>(newArrayFilled.inValues().size());
Value zeroValue = null;
- for (Value element : invokeNewArray.inValues()) {
+ for (Value element : newArrayFilled.inValues()) {
if (element.getType().isNullType()) {
if (zeroValue == null) {
instructionIterator.previous();
zeroValue = instructionIterator.insertConstIntInstruction(code, options, 0);
Instruction next = instructionIterator.next();
- assert next == invokeNewArray;
+ assert next == newArrayFilled;
}
elements.add(zeroValue);
} else {
@@ -507,7 +507,7 @@
}
}
instructionIterator.replaceCurrentInstruction(
- new InvokeNewArray(
+ new NewArrayFilled(
rewrittenArrayType,
code.createValue(factory.intArrayType.toTypeElement(appView, definitelyNotNull())),
elements));
diff --git a/src/main/java/com/android/tools/r8/ir/optimize/info/MethodOptimizationInfoCollector.java b/src/main/java/com/android/tools/r8/ir/optimize/info/MethodOptimizationInfoCollector.java
index f658311..7b759b2 100644
--- a/src/main/java/com/android/tools/r8/ir/optimize/info/MethodOptimizationInfoCollector.java
+++ b/src/main/java/com/android/tools/r8/ir/optimize/info/MethodOptimizationInfoCollector.java
@@ -26,11 +26,11 @@
import static com.android.tools.r8.ir.code.Opcodes.INT_SWITCH;
import static com.android.tools.r8.ir.code.Opcodes.INVOKE_DIRECT;
import static com.android.tools.r8.ir.code.Opcodes.INVOKE_INTERFACE;
-import static com.android.tools.r8.ir.code.Opcodes.INVOKE_NEW_ARRAY;
import static com.android.tools.r8.ir.code.Opcodes.INVOKE_STATIC;
import static com.android.tools.r8.ir.code.Opcodes.INVOKE_VIRTUAL;
import static com.android.tools.r8.ir.code.Opcodes.MUL;
import static com.android.tools.r8.ir.code.Opcodes.NEW_ARRAY_EMPTY;
+import static com.android.tools.r8.ir.code.Opcodes.NEW_ARRAY_FILLED;
import static com.android.tools.r8.ir.code.Opcodes.NEW_INSTANCE;
import static com.android.tools.r8.ir.code.Opcodes.OR;
import static com.android.tools.r8.ir.code.Opcodes.REM;
@@ -80,8 +80,8 @@
import com.android.tools.r8.ir.code.InstructionIterator;
import com.android.tools.r8.ir.code.InvokeDirect;
import com.android.tools.r8.ir.code.InvokeMethod;
-import com.android.tools.r8.ir.code.InvokeNewArray;
import com.android.tools.r8.ir.code.InvokeStatic;
+import com.android.tools.r8.ir.code.NewArrayFilled;
import com.android.tools.r8.ir.code.NewInstance;
import com.android.tools.r8.ir.code.Return;
import com.android.tools.r8.ir.code.Value;
@@ -436,9 +436,9 @@
}
break;
- case INVOKE_NEW_ARRAY:
+ case NEW_ARRAY_FILLED:
{
- InvokeNewArray invoke = instruction.asInvokeNewArray();
+ NewArrayFilled invoke = instruction.asNewArrayFilled();
if (invoke.instructionMayHaveSideEffects(appView, context)) {
builder.setMayHaveOtherSideEffectsThanInstanceFieldAssignments();
}
diff --git a/src/main/java/com/android/tools/r8/lightir/Lir2IRConverter.java b/src/main/java/com/android/tools/r8/lightir/Lir2IRConverter.java
index a8cb780..2b04e91 100644
--- a/src/main/java/com/android/tools/r8/lightir/Lir2IRConverter.java
+++ b/src/main/java/com/android/tools/r8/lightir/Lir2IRConverter.java
@@ -60,7 +60,6 @@
import com.android.tools.r8.ir.code.InvokeDirect;
import com.android.tools.r8.ir.code.InvokeInterface;
import com.android.tools.r8.ir.code.InvokeMultiNewArray;
-import com.android.tools.r8.ir.code.InvokeNewArray;
import com.android.tools.r8.ir.code.InvokePolymorphic;
import com.android.tools.r8.ir.code.InvokeStatic;
import com.android.tools.r8.ir.code.InvokeSuper;
@@ -72,6 +71,7 @@
import com.android.tools.r8.ir.code.Mul;
import com.android.tools.r8.ir.code.Neg;
import com.android.tools.r8.ir.code.NewArrayEmpty;
+import com.android.tools.r8.ir.code.NewArrayFilled;
import com.android.tools.r8.ir.code.NewArrayFilledData;
import com.android.tools.r8.ir.code.NewInstance;
import com.android.tools.r8.ir.code.NewUnboxedEnumInstance;
@@ -966,11 +966,11 @@
}
@Override
- public void onInvokeNewArray(DexType type, List<EV> arguments) {
+ public void onNewArrayFilled(DexType type, List<EV> arguments) {
Value dest =
getOutValueForNextInstruction(
type.toTypeElement(appView, Nullability.definitelyNotNull()));
- addInstruction(new InvokeNewArray(type, dest, getValues(arguments)));
+ addInstruction(new NewArrayFilled(type, dest, getValues(arguments)));
}
@Override
diff --git a/src/main/java/com/android/tools/r8/lightir/LirBuilder.java b/src/main/java/com/android/tools/r8/lightir/LirBuilder.java
index b450066..73a842f 100644
--- a/src/main/java/com/android/tools/r8/lightir/LirBuilder.java
+++ b/src/main/java/com/android/tools/r8/lightir/LirBuilder.java
@@ -860,9 +860,9 @@
LirOpcodes.MULTIANEWARRAY, Collections.singletonList(type), arguments);
}
- public LirBuilder<V, EV> addInvokeNewArray(DexType type, List<V> arguments) {
+ public LirBuilder<V, EV> addNewArrayFilled(DexType type, List<V> arguments) {
return addInstructionTemplate(
- LirOpcodes.INVOKENEWARRAY, Collections.singletonList(type), arguments);
+ LirOpcodes.NEWARRAYFILLED, Collections.singletonList(type), arguments);
}
public LirBuilder<V, EV> addNewArrayFilledData(int elementWidth, long size, short[] data, V src) {
diff --git a/src/main/java/com/android/tools/r8/lightir/LirOpcodes.java b/src/main/java/com/android/tools/r8/lightir/LirOpcodes.java
index 9ac6b6c..393cd05 100644
--- a/src/main/java/com/android/tools/r8/lightir/LirOpcodes.java
+++ b/src/main/java/com/android/tools/r8/lightir/LirOpcodes.java
@@ -198,7 +198,7 @@
int FALLTHROUGH = 211;
int MOVEEXCEPTION = 212;
int DEBUGLOCALWRITE = 213;
- int INVOKENEWARRAY = 214;
+ int NEWARRAYFILLED = 214;
int NEWARRAYFILLEDDATA = 215;
int ITEMBASEDCONSTSTRING = 216;
int NEWUNBOXEDENUMINSTANCE = 217;
@@ -523,8 +523,8 @@
return "MOVEEXCEPTION";
case DEBUGLOCALWRITE:
return "DEBUGLOCALWRITE";
- case INVOKENEWARRAY:
- return "INVOKENEWARRAY";
+ case NEWARRAYFILLED:
+ return "NEWARRAYFILLED";
case NEWARRAYFILLEDDATA:
return "NEWARRAYFILLEDDATA";
case ITEMBASEDCONSTSTRING:
diff --git a/src/main/java/com/android/tools/r8/lightir/LirParsedInstructionCallback.java b/src/main/java/com/android/tools/r8/lightir/LirParsedInstructionCallback.java
index 4acc3c4..18125bd 100644
--- a/src/main/java/com/android/tools/r8/lightir/LirParsedInstructionCallback.java
+++ b/src/main/java/com/android/tools/r8/lightir/LirParsedInstructionCallback.java
@@ -390,7 +390,7 @@
onInstruction();
}
- public void onInvokeNewArray(DexType type, List<EV> arguments) {
+ public void onNewArrayFilled(DexType type, List<EV> arguments) {
onInstruction();
}
@@ -1217,11 +1217,11 @@
onInvokeMultiNewArray(type, arguments);
return;
}
- case LirOpcodes.INVOKENEWARRAY:
+ case LirOpcodes.NEWARRAYFILLED:
{
DexType type = getNextDexTypeOperand(view);
List<EV> arguments = getInvokeInstructionArguments(view);
- onInvokeNewArray(type, arguments);
+ onNewArrayFilled(type, arguments);
return;
}
case LirOpcodes.NEWARRAYFILLEDDATA:
diff --git a/src/main/java/com/android/tools/r8/lightir/LirPrinter.java b/src/main/java/com/android/tools/r8/lightir/LirPrinter.java
index f2fcbac..2e0273d 100644
--- a/src/main/java/com/android/tools/r8/lightir/LirPrinter.java
+++ b/src/main/java/com/android/tools/r8/lightir/LirPrinter.java
@@ -274,7 +274,7 @@
}
@Override
- public void onInvokeNewArray(DexType type, List<EV> arguments) {
+ public void onNewArrayFilled(DexType type, List<EV> arguments) {
appendOutValue();
appendValueArguments(arguments);
builder.append(type);
diff --git a/src/main/java/com/android/tools/r8/lightir/LirSizeEstimation.java b/src/main/java/com/android/tools/r8/lightir/LirSizeEstimation.java
index 0a37c4d..7b78efa 100644
--- a/src/main/java/com/android/tools/r8/lightir/LirSizeEstimation.java
+++ b/src/main/java/com/android/tools/r8/lightir/LirSizeEstimation.java
@@ -317,7 +317,7 @@
case DEBUGLOCALWRITE:
return DexMove.SIZE;
- case INVOKENEWARRAY:
+ case NEWARRAYFILLED:
return DexFilledNewArray.SIZE;
case ITEMBASEDCONSTSTRING:
diff --git a/src/main/java/com/android/tools/r8/lightir/LirUseRegistryCallback.java b/src/main/java/com/android/tools/r8/lightir/LirUseRegistryCallback.java
index 00e00ca..83a34f1 100644
--- a/src/main/java/com/android/tools/r8/lightir/LirUseRegistryCallback.java
+++ b/src/main/java/com/android/tools/r8/lightir/LirUseRegistryCallback.java
@@ -207,7 +207,7 @@
}
@Override
- public void onInvokeNewArray(DexType type, List<EV> arguments) {
+ public void onNewArrayFilled(DexType type, List<EV> arguments) {
registry.registerTypeReference(type);
}
diff --git a/src/main/java/com/android/tools/r8/naming/IdentifierNameStringUtils.java b/src/main/java/com/android/tools/r8/naming/IdentifierNameStringUtils.java
index 3b022c7..c9438e7 100644
--- a/src/main/java/com/android/tools/r8/naming/IdentifierNameStringUtils.java
+++ b/src/main/java/com/android/tools/r8/naming/IdentifierNameStringUtils.java
@@ -27,10 +27,10 @@
import com.android.tools.r8.ir.code.Instruction;
import com.android.tools.r8.ir.code.InstructionIterator;
import com.android.tools.r8.ir.code.InvokeMethod;
-import com.android.tools.r8.ir.code.InvokeNewArray;
import com.android.tools.r8.ir.code.InvokeStatic;
import com.android.tools.r8.ir.code.InvokeVirtual;
import com.android.tools.r8.ir.code.NewArrayEmpty;
+import com.android.tools.r8.ir.code.NewArrayFilled;
import com.android.tools.r8.ir.code.Value;
import com.android.tools.r8.naming.identifiernamestring.IdentifierNameStringLookupResult;
import com.android.tools.r8.shaking.AppInfoWithLiveness;
@@ -505,7 +505,7 @@
}
private static DexTypeList evaluateTypeArrayContent(
- InvokeNewArray newArray, DexItemFactory factory) {
+ NewArrayFilled newArray, DexItemFactory factory) {
List<Value> arrayValues = newArray.inValues();
int size = arrayValues.size();
DexType[] values = new DexType[size];
@@ -575,8 +575,8 @@
if (classListValue.definition.isNewArrayEmpty()) {
return evaluateTypeArrayContentFromConstructionToUse(
classListValue.definition.asNewArrayEmpty(), aliases, invoke, factory);
- } else if (classListValue.definition.isInvokeNewArray()) {
- return evaluateTypeArrayContent(classListValue.definition.asInvokeNewArray(), factory);
+ } else if (classListValue.definition.isNewArrayFilled()) {
+ return evaluateTypeArrayContent(classListValue.definition.asNewArrayFilled(), factory);
} else {
return null;
}
diff --git a/src/main/java/com/android/tools/r8/shaking/Enqueuer.java b/src/main/java/com/android/tools/r8/shaking/Enqueuer.java
index 4bbc625..d1a5e2c 100644
--- a/src/main/java/com/android/tools/r8/shaking/Enqueuer.java
+++ b/src/main/java/com/android/tools/r8/shaking/Enqueuer.java
@@ -104,9 +104,9 @@
import com.android.tools.r8.ir.code.Instruction;
import com.android.tools.r8.ir.code.InstructionIterator;
import com.android.tools.r8.ir.code.InvokeMethod;
-import com.android.tools.r8.ir.code.InvokeNewArray;
import com.android.tools.r8.ir.code.InvokeVirtual;
import com.android.tools.r8.ir.code.NewArrayEmpty;
+import com.android.tools.r8.ir.code.NewArrayFilled;
import com.android.tools.r8.ir.code.Value;
import com.android.tools.r8.ir.conversion.MethodConversionOptions;
import com.android.tools.r8.ir.desugar.CfInstructionDesugaringCollection;
@@ -5122,11 +5122,11 @@
return;
}
NewArrayEmpty newArrayEmpty = parametersValue.definition.asNewArrayEmpty();
- InvokeNewArray invokeNewArray = parametersValue.definition.asInvokeNewArray();
+ NewArrayFilled newArrayFilled = parametersValue.definition.asNewArrayFilled();
int parametersSize =
newArrayEmpty != null
? newArrayEmpty.sizeIfConst()
- : invokeNewArray != null ? invokeNewArray.size() : -1;
+ : newArrayFilled != null ? newArrayFilled.size() : -1;
if (parametersSize < 0) {
return;
}
@@ -5143,7 +5143,7 @@
missingIndices = parametersSize;
} else {
missingIndices = 0;
- List<Value> values = invokeNewArray.inValues();
+ List<Value> values = newArrayFilled.inValues();
for (int i = 0; i < parametersSize; ++i) {
DexType type =
ConstantValueUtils.getDexTypeRepresentedByValueForTracing(values.get(i), appView);
@@ -5220,11 +5220,11 @@
return;
}
- InvokeNewArray invokeNewArray = interfacesValue.definition.asInvokeNewArray();
+ NewArrayFilled newArrayFilled = interfacesValue.definition.asNewArrayFilled();
NewArrayEmpty newArrayEmpty = interfacesValue.definition.asNewArrayEmpty();
List<Value> values;
- if (invokeNewArray != null) {
- values = invokeNewArray.inValues();
+ if (newArrayFilled != null) {
+ values = newArrayFilled.inValues();
} else if (newArrayEmpty != null) {
values = new ArrayList<>(interfacesValue.uniqueUsers().size());
for (Instruction user : interfacesValue.uniqueUsers()) {
diff --git a/src/test/java/com/android/tools/r8/ir/analysis/type/TypeAnalysisTest.java b/src/test/java/com/android/tools/r8/ir/analysis/type/TypeAnalysisTest.java
index e370d88..4ce64fb 100644
--- a/src/test/java/com/android/tools/r8/ir/analysis/type/TypeAnalysisTest.java
+++ b/src/test/java/com/android/tools/r8/ir/analysis/type/TypeAnalysisTest.java
@@ -20,8 +20,8 @@
import com.android.tools.r8.ir.code.IRCode;
import com.android.tools.r8.ir.code.InstanceOf;
import com.android.tools.r8.ir.code.Instruction;
-import com.android.tools.r8.ir.code.InvokeNewArray;
import com.android.tools.r8.ir.code.NewArrayEmpty;
+import com.android.tools.r8.ir.code.NewArrayFilled;
import com.android.tools.r8.ir.code.NewInstance;
import com.android.tools.r8.ir.code.NumberConversion;
import com.android.tools.r8.ir.code.StaticGet;
@@ -178,7 +178,7 @@
IRCode code = test4Subject.buildIR();
Value array = null;
for (Instruction instruction : code.instructions()) {
- if (instruction instanceof InvokeNewArray) {
+ if (instruction instanceof NewArrayFilled) {
array = instruction.outValue();
break;
}
diff --git a/src/test/java/com/android/tools/r8/rewrite/arrays/ArrayWithDataLengthRewriteTest.java b/src/test/java/com/android/tools/r8/rewrite/arrays/ArrayWithDataLengthRewriteTest.java
index e9ff30c..5b46ee0 100644
--- a/src/test/java/com/android/tools/r8/rewrite/arrays/ArrayWithDataLengthRewriteTest.java
+++ b/src/test/java/com/android/tools/r8/rewrite/arrays/ArrayWithDataLengthRewriteTest.java
@@ -72,7 +72,7 @@
if (name.contains("filledArrayData")) {
assertTrue(irCode.streamInstructions().anyMatch(Instruction::isNewArrayFilledData));
} else if (name.contains("filledNewArray")) {
- assertTrue(irCode.streamInstructions().anyMatch(Instruction::isInvokeNewArray));
+ assertTrue(irCode.streamInstructions().anyMatch(Instruction::isNewArrayFilled));
}
}