changeset 17299:072a25e613ba

Use Arrays.hashCode for hashing array fields.
author Roland Schatz <roland.schatz@oracle.com>
date Wed, 01 Oct 2014 14:24:59 +0200
parents 07d5cf34b3c5
children a926a44acfc6
files graal/com.oracle.graal.nodeinfo.processor/src/com/oracle/graal/nodeinfo/processor/GraphNodeGenerator.java
diffstat 1 files changed, 7 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/graal/com.oracle.graal.nodeinfo.processor/src/com/oracle/graal/nodeinfo/processor/GraphNodeGenerator.java	Wed Oct 01 13:04:23 2014 +0200
+++ b/graal/com.oracle.graal.nodeinfo.processor/src/com/oracle/graal/nodeinfo/processor/GraphNodeGenerator.java	Wed Oct 01 14:24:59 2014 +0200
@@ -473,6 +473,13 @@
                         b.startStatement().string("long longValue = Double.doubleToRawLongBits(", fname, ")").end();
                         b.startStatement().string("number += 23 * longValue ^ (longValue >>> 32)").end();
                         break;
+                    case ARRAY:
+                        if (((ArrayType) f.asType()).getComponentType().getKind().isPrimitive()) {
+                            b.startStatement().string("number += 31 * Arrays.hashCode(", fname, ")").end();
+                        } else {
+                            b.startStatement().string("number += 31 * Arrays.deepHashCode(", fname, ")").end();
+                        }
+                        break;
                     default:
                         b.startIf().string(fname, " != null").end().startBlock();
                         b.startStatement().string("number += 29 * ", fname + ".hashCode()").end();