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