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