Fix error prone checks after introducing new equals/hashCode
Change-Id: Ieed954d30e136e55b1a7ed3f22c32350e7dfc84c
diff --git a/src/main/java/com/android/tools/r8/optimize/argumentpropagation/codescanner/BottomPrimitiveTypeValueState.java b/src/main/java/com/android/tools/r8/optimize/argumentpropagation/codescanner/BottomPrimitiveTypeValueState.java
index ba50708..b429da0 100644
--- a/src/main/java/com/android/tools/r8/optimize/argumentpropagation/codescanner/BottomPrimitiveTypeValueState.java
+++ b/src/main/java/com/android/tools/r8/optimize/argumentpropagation/codescanner/BottomPrimitiveTypeValueState.java
@@ -28,7 +28,7 @@
StateCloner cloner,
Action onChangedAction) {
if (inState.isBottom()) {
- assert inState == bottomPrimitiveTypeState();
+ assert inState.identical(bottomPrimitiveTypeState());
return this;
}
if (inState.isUnknown()) {
diff --git a/src/main/java/com/android/tools/r8/optimize/argumentpropagation/codescanner/ValueState.java b/src/main/java/com/android/tools/r8/optimize/argumentpropagation/codescanner/ValueState.java
index 313b340..a0ed391 100644
--- a/src/main/java/com/android/tools/r8/optimize/argumentpropagation/codescanner/ValueState.java
+++ b/src/main/java/com/android/tools/r8/optimize/argumentpropagation/codescanner/ValueState.java
@@ -11,6 +11,7 @@
import com.android.tools.r8.ir.analysis.value.AbstractValue;
import com.android.tools.r8.shaking.AppInfoWithLiveness;
import com.android.tools.r8.utils.Action;
+import com.android.tools.r8.utils.ObjectUtils;
public abstract class ValueState {
@@ -142,4 +143,8 @@
@Override
public abstract int hashCode();
+
+ public final boolean identical(ValueState state) {
+ return ObjectUtils.identical(this, state);
+ }
}
diff --git a/src/main/java/com/android/tools/r8/optimize/argumentpropagation/propagation/FlowGraphBuilder.java b/src/main/java/com/android/tools/r8/optimize/argumentpropagation/propagation/FlowGraphBuilder.java
index 4639273..5830d3f 100644
--- a/src/main/java/com/android/tools/r8/optimize/argumentpropagation/propagation/FlowGraphBuilder.java
+++ b/src/main/java/com/android/tools/r8/optimize/argumentpropagation/propagation/FlowGraphBuilder.java
@@ -265,7 +265,7 @@
fieldStates.remove(field);
FlowGraphFieldNode node = getFieldNode(field);
if (node != null && !node.getState().isUnknown()) {
- assert node.getState() == concreteFieldState;
+ assert node.getState().identical(concreteFieldState);
node.setState(concreteFieldStateOrBottom);
}
}
@@ -281,7 +281,7 @@
ValueState concreteParameterStateOrBottom = concreteParameterState.clearInFlow();
FlowGraphParameterNode node = getParameterNode(method, i);
if (node != null && !node.getState().isUnknown()) {
- assert node.getState() == concreteParameterState;
+ assert node.getState().identical(concreteParameterState);
node.setState(concreteParameterStateOrBottom);
}
}
diff --git a/src/main/java/com/android/tools/r8/optimize/argumentpropagation/propagation/FlowGraphNode.java b/src/main/java/com/android/tools/r8/optimize/argumentpropagation/propagation/FlowGraphNode.java
index 7f9f0f0..b2e3a53 100644
--- a/src/main/java/com/android/tools/r8/optimize/argumentpropagation/propagation/FlowGraphNode.java
+++ b/src/main/java/com/android/tools/r8/optimize/argumentpropagation/propagation/FlowGraphNode.java
@@ -47,7 +47,7 @@
getStaticType(),
StateCloner.getCloner(),
onChangedAction);
- if (newState != oldState) {
+ if (!newState.identical(oldState)) {
setState(newState);
onChangedAction.execute();
}
diff --git a/src/main/java/com/android/tools/r8/optimize/argumentpropagation/propagation/InFlowPropagator.java b/src/main/java/com/android/tools/r8/optimize/argumentpropagation/propagation/InFlowPropagator.java
index a2ee3c9..82f2350 100644
--- a/src/main/java/com/android/tools/r8/optimize/argumentpropagation/propagation/InFlowPropagator.java
+++ b/src/main/java/com/android/tools/r8/optimize/argumentpropagation/propagation/InFlowPropagator.java
@@ -346,7 +346,7 @@
ValueState state = node.getState();
ValueState previousState = fieldStates.set(field, state);
assert state.isUnknown()
- || state == previousState
+ || state.identical(previousState)
|| (state.isConcrete() && previousState.isBottom())
: "Expected current state to be >= previous state";
});