Cleanup value getters in field instructions
Change-Id: Ib8ff91c653972463b9b33d33d67597d22335571c
diff --git a/src/main/java/com/android/tools/r8/ir/analysis/TypeChecker.java b/src/main/java/com/android/tools/r8/ir/analysis/TypeChecker.java
index 34ea885..1638902 100644
--- a/src/main/java/com/android/tools/r8/ir/analysis/TypeChecker.java
+++ b/src/main/java/com/android/tools/r8/ir/analysis/TypeChecker.java
@@ -18,7 +18,6 @@
import com.android.tools.r8.ir.code.Return;
import com.android.tools.r8.ir.code.StaticPut;
import com.android.tools.r8.ir.code.Throw;
-import com.android.tools.r8.ir.code.Value;
/**
* Utility to determine if a given IR code object type checks.
@@ -96,11 +95,7 @@
public boolean checkFieldPut(FieldInstruction instruction) {
assert instruction.isFieldPut();
- Value value =
- instruction.isInstancePut()
- ? instruction.asInstancePut().value()
- : instruction.asStaticPut().inValue();
- TypeLatticeElement valueType = value.getTypeLattice();
+ TypeLatticeElement valueType = instruction.value().getTypeLattice();
TypeLatticeElement fieldType =
TypeLatticeElement.fromDexType(
instruction.getField().type, valueType.nullability(), appView);
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 c4de637..a238f67 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
@@ -91,7 +91,7 @@
DexEncodedField field = appView.appInfo().resolveField(staticPut.getField());
if (field == null
|| field.field.holder != context
- || staticPut.inValue().mayDependOnEnvironment(appView, code)
+ || staticPut.value().mayDependOnEnvironment(appView, code)
|| instruction.instructionInstanceCanThrow(appView, context).isThrowing()) {
return ClassInitializerSideEffect.SIDE_EFFECTS_THAT_CANNOT_BE_POSTPONED;
}
diff --git a/src/main/java/com/android/tools/r8/ir/code/FieldInstruction.java b/src/main/java/com/android/tools/r8/ir/code/FieldInstruction.java
index 0863b5e..4b1f622b 100644
--- a/src/main/java/com/android/tools/r8/ir/code/FieldInstruction.java
+++ b/src/main/java/com/android/tools/r8/ir/code/FieldInstruction.java
@@ -28,7 +28,7 @@
this.field = field;
}
- public abstract Value fieldValue();
+ public abstract Value value();
public FieldMemberType getType() {
return FieldMemberType.fromDexType(field.type);
diff --git a/src/main/java/com/android/tools/r8/ir/code/InstanceGet.java b/src/main/java/com/android/tools/r8/ir/code/InstanceGet.java
index 78a9733..8859225 100644
--- a/src/main/java/com/android/tools/r8/ir/code/InstanceGet.java
+++ b/src/main/java/com/android/tools/r8/ir/code/InstanceGet.java
@@ -58,7 +58,7 @@
}
@Override
- public Value fieldValue() {
+ public Value value() {
return outValue;
}
diff --git a/src/main/java/com/android/tools/r8/ir/code/InstancePut.java b/src/main/java/com/android/tools/r8/ir/code/InstancePut.java
index 3ddecf8..dbef3e0 100644
--- a/src/main/java/com/android/tools/r8/ir/code/InstancePut.java
+++ b/src/main/java/com/android/tools/r8/ir/code/InstancePut.java
@@ -49,16 +49,12 @@
return inValues.get(0);
}
+ @Override
public Value value() {
return inValues.get(1);
}
@Override
- public Value fieldValue() {
- return value();
- }
-
- @Override
public void buildDex(DexBuilder builder) {
com.android.tools.r8.code.Instruction instruction;
int valueRegister = builder.allocatedRegister(value(), getNumber());
diff --git a/src/main/java/com/android/tools/r8/ir/code/StaticGet.java b/src/main/java/com/android/tools/r8/ir/code/StaticGet.java
index 2f5fa64..b4cc421 100644
--- a/src/main/java/com/android/tools/r8/ir/code/StaticGet.java
+++ b/src/main/java/com/android/tools/r8/ir/code/StaticGet.java
@@ -46,7 +46,7 @@
}
@Override
- public Value fieldValue() {
+ public Value value() {
return outValue;
}
diff --git a/src/main/java/com/android/tools/r8/ir/code/StaticPut.java b/src/main/java/com/android/tools/r8/ir/code/StaticPut.java
index 076c0cd..b52e39d 100644
--- a/src/main/java/com/android/tools/r8/ir/code/StaticPut.java
+++ b/src/main/java/com/android/tools/r8/ir/code/StaticPut.java
@@ -41,20 +41,16 @@
return visitor.visit(this);
}
- public Value inValue() {
+ @Override
+ public Value value() {
assert inValues.size() == 1;
return inValues.get(0);
}
@Override
- public Value fieldValue() {
- return inValue();
- }
-
- @Override
public void buildDex(DexBuilder builder) {
com.android.tools.r8.code.Instruction instruction;
- int src = builder.allocatedRegister(inValue(), getNumber());
+ int src = builder.allocatedRegister(value(), getNumber());
DexField field = getField();
switch (getType()) {
case INT:
@@ -157,7 +153,7 @@
// If the value being written by this instruction is an array, then make sure that the value
// being written by the other instruction is the exact same value. Otherwise, the verifier
// may incorrectly join the types of these arrays to Object[].
- if (inValue().getTypeLattice().isArrayType() && inValue() != staticPut.inValue()) {
+ if (value().getTypeLattice().isArrayType() && value() != staticPut.value()) {
return false;
}
}
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 2a19174..99cc6b4 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
@@ -341,7 +341,7 @@
iterator.replaceCurrentInstruction(
new InvokeStatic(replacementMethod, current.outValue(), current.inValues()));
} else if (actualField != field) {
- StaticPut newStaticPut = new StaticPut(staticPut.inValue(), actualField);
+ StaticPut newStaticPut = new StaticPut(staticPut.value(), actualField);
iterator.replaceCurrentInstruction(newStaticPut);
}
} else if (current.isCheckCast()) {
diff --git a/src/main/java/com/android/tools/r8/ir/optimize/ClassInitializerDefaultsOptimization.java b/src/main/java/com/android/tools/r8/ir/optimize/ClassInitializerDefaultsOptimization.java
index 93019d5..8589552 100644
--- a/src/main/java/com/android/tools/r8/ir/optimize/ClassInitializerDefaultsOptimization.java
+++ b/src/main/java/com/android/tools/r8/ir/optimize/ClassInitializerDefaultsOptimization.java
@@ -130,7 +130,7 @@
for (StaticPut put : finalFieldPuts) {
DexEncodedField field = appView.appInfo().resolveField(put.getField());
DexType fieldType = field.field.type;
- Value inValue = put.inValue();
+ Value inValue = put.value();
if (fieldType == dexItemFactory.stringType) {
fieldsWithStaticValues.put(field, getDexStringValue(inValue, method.method.holder));
} else if (fieldType.isClassType() || fieldType.isArrayType()) {
@@ -176,7 +176,7 @@
continue;
}
// Get a hold of the in-value.
- Value inValue = instruction.asStaticPut().inValue();
+ Value inValue = instruction.asStaticPut().value();
// Remove the static-put instruction.
instructionIterator.removeOrReplaceByDebugLocalRead();
@@ -358,12 +358,12 @@
// instruction to read a different value.
continue;
}
- if (put.inValue().isDexItemBasedConstStringThatNeedsToComputeClassName()) {
+ if (put.value().isDexItemBasedConstStringThatNeedsToComputeClassName()) {
continue;
}
- if (put.inValue().isConstant()) {
+ if (put.value().isConstant()) {
if ((field.type.isClassType() || field.type.isArrayType())
- && put.inValue().isZero()) {
+ && put.value().isZero()) {
finalFieldPut.put(put.getField(), put);
puts.add(put);
} else if (field.type.isPrimitiveType()
@@ -421,8 +421,8 @@
if (put.getField().type != dexItemFactory.stringType) {
return false;
}
- if (put.inValue().definition != null) {
- return isClassNameConstantOf(clazz, put.inValue().definition);
+ if (put.value().definition != null) {
+ return isClassNameConstantOf(clazz, put.value().definition);
}
return false;
}
diff --git a/src/main/java/com/android/tools/r8/ir/optimize/CodeRewriter.java b/src/main/java/com/android/tools/r8/ir/optimize/CodeRewriter.java
index ccbf3be..6941096 100644
--- a/src/main/java/com/android/tools/r8/ir/optimize/CodeRewriter.java
+++ b/src/main/java/com/android/tools/r8/ir/optimize/CodeRewriter.java
@@ -1444,9 +1444,9 @@
if (insn.isStaticPut()) {
StaticPut staticPut = insn.asStaticPut();
- if (singletonField != null ||
- createdSingletonInstance == null ||
- staticPut.inValue() != createdSingletonInstance) {
+ if (singletonField != null
+ || createdSingletonInstance == null
+ || staticPut.value() != createdSingletonInstance) {
return null;
}
diff --git a/src/main/java/com/android/tools/r8/ir/optimize/EnumOrdinalMapCollector.java b/src/main/java/com/android/tools/r8/ir/optimize/EnumOrdinalMapCollector.java
index 8bc736f..99c9195 100644
--- a/src/main/java/com/android/tools/r8/ir/optimize/EnumOrdinalMapCollector.java
+++ b/src/main/java/com/android/tools/r8/ir/optimize/EnumOrdinalMapCollector.java
@@ -66,7 +66,7 @@
if (staticPut.getField().type != clazz.type) {
continue;
}
- Instruction newInstance = staticPut.inValue().definition;
+ Instruction newInstance = staticPut.value().definition;
if (newInstance == null || !newInstance.isNewInstance()) {
continue;
}
diff --git a/src/main/java/com/android/tools/r8/ir/optimize/RedundantFieldLoadElimination.java b/src/main/java/com/android/tools/r8/ir/optimize/RedundantFieldLoadElimination.java
index 2b7ee0d..b50496e 100644
--- a/src/main/java/com/android/tools/r8/ir/optimize/RedundantFieldLoadElimination.java
+++ b/src/main/java/com/android/tools/r8/ir/optimize/RedundantFieldLoadElimination.java
@@ -238,8 +238,8 @@
private void eliminateRedundantRead(
InstructionListIterator it, FieldInstruction redundant, FieldInstruction active) {
- redundant.outValue().replaceUsers(active.fieldValue());
+ redundant.outValue().replaceUsers(active.value());
it.removeOrReplaceByDebugLocalRead();
- active.fieldValue().uniquePhiUsers().forEach(Phi::removeTrivialPhi);
+ active.value().uniquePhiUsers().forEach(Phi::removeTrivialPhi);
}
}
diff --git a/src/main/java/com/android/tools/r8/ir/optimize/staticizer/StaticizingProcessor.java b/src/main/java/com/android/tools/r8/ir/optimize/staticizer/StaticizingProcessor.java
index cafc3bb..cf4d14b 100644
--- a/src/main/java/com/android/tools/r8/ir/optimize/staticizer/StaticizingProcessor.java
+++ b/src/main/java/com/android/tools/r8/ir/optimize/staticizer/StaticizingProcessor.java
@@ -519,7 +519,7 @@
StaticPut staticPut = instruction.asStaticPut();
DexField field = mapFieldIfMoved(staticPut.getField());
if (field != staticPut.getField()) {
- it.replaceCurrentInstruction(new StaticPut(staticPut.inValue(), field));
+ it.replaceCurrentInstruction(new StaticPut(staticPut.value(), field));
}
continue;
}
diff --git a/src/main/java/com/android/tools/r8/ir/optimize/string/StringBuilderOptimizer.java b/src/main/java/com/android/tools/r8/ir/optimize/string/StringBuilderOptimizer.java
index 68bfe5e..1ea8b3e 100644
--- a/src/main/java/com/android/tools/r8/ir/optimize/string/StringBuilderOptimizer.java
+++ b/src/main/java/com/android/tools/r8/ir/optimize/string/StringBuilderOptimizer.java
@@ -754,7 +754,7 @@
return legitimate;
}
if (escapeRoute.isStaticPut()) {
- legitimate = isUsingToStringAlias(escapeAnalysis, escapeRoute.asStaticPut().inValue());
+ legitimate = isUsingToStringAlias(escapeAnalysis, escapeRoute.asStaticPut().value());
logEscapingRoute(legitimate);
return legitimate;
}
diff --git a/src/main/java/com/android/tools/r8/naming/IdentifierNameStringMarker.java b/src/main/java/com/android/tools/r8/naming/IdentifierNameStringMarker.java
index 85ed54a..c3aa1cd 100644
--- a/src/main/java/com/android/tools/r8/naming/IdentifierNameStringMarker.java
+++ b/src/main/java/com/android/tools/r8/naming/IdentifierNameStringMarker.java
@@ -140,10 +140,7 @@
if (!identifierNameStrings.containsKey(field)) {
return iterator;
}
- Value in =
- instruction.isStaticPut()
- ? instruction.asStaticPut().inValue()
- : instruction.asInstancePut().value();
+ Value in = instruction.value();
if (!in.isConstString()) {
warnUndeterminedIdentifierIfNecessary(field, method.method.holder, instruction, null);
return iterator;