changeset 12658:ef6745a4597a

Use Arrays.deepEquals in global value numbering.
author Roland Schatz <roland.schatz@oracle.com>
date Mon, 04 Nov 2013 11:40:33 +0100
parents a66169e30623
children 55b23f75d3b0
files graal/com.oracle.graal.graph/src/com/oracle/graal/graph/NodeClass.java
diffstat 1 files changed, 11 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/graal/com.oracle.graal.graph/src/com/oracle/graal/graph/NodeClass.java	Mon Nov 04 11:32:37 2013 +0100
+++ b/graal/com.oracle.graal.graph/src/com/oracle/graal/graph/NodeClass.java	Mon Nov 04 11:40:33 2013 +0100
@@ -700,7 +700,9 @@
                     }
                 } else {
                     Object o = unsafe.getObject(n, dataOffsets[i]);
-                    if (o != null) {
+                    if (o instanceof Object[]) {
+                        number += Arrays.deepHashCode((Object[]) o);
+                    } else if (o != null) {
                         number += o.hashCode();
                     }
                 }
@@ -780,8 +782,14 @@
                 Object objectB = unsafe.getObject(b, dataOffsets[i]);
                 if (objectA != objectB) {
                     if (objectA != null && objectB != null) {
-                        if (!(objectA.equals(objectB))) {
-                            return false;
+                        if (objectA instanceof Object[] && objectB instanceof Object[]) {
+                            if (!Arrays.deepEquals((Object[]) objectA, (Object[]) objectB)) {
+                                return false;
+                            }
+                        } else {
+                            if (!(objectA.equals(objectB))) {
+                                return false;
+                            }
                         }
                     } else {
                         return false;