changeset 17301:ed30fa9d37ac

Merge
author Lukas Stadler <lukas.stadler@oracle.com>
date Wed, 01 Oct 2014 14:56:01 +0200
parents a926a44acfc6 (diff) 831e96d0777d (current diff)
children 7c58f75be8d6
files
diffstat 2 files changed, 9 insertions(+), 2 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:55:02 2014 +0200
+++ b/graal/com.oracle.graal.nodeinfo.processor/src/com/oracle/graal/nodeinfo/processor/GraphNodeGenerator.java	Wed Oct 01 14:56:01 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();
--- a/graal/com.oracle.graal.phases/src/com/oracle/graal/phases/util/GraphOrder.java	Wed Oct 01 13:55:02 2014 +0200
+++ b/graal/com.oracle.graal.phases/src/com/oracle/graal/phases/util/GraphOrder.java	Wed Oct 01 14:56:01 2014 +0200
@@ -211,8 +211,8 @@
                         if (node instanceof AbstractEndNode) {
                             MergeNode merge = ((AbstractEndNode) node).merge();
                             for (PhiNode phi : merge.phis()) {
-                                assert currentState.isMarked(phi.valueAt((AbstractEndNode) node)) : phi.valueAt((AbstractEndNode) node) + " not available at phi " + phi + " / end " + node +
-                                                " in block " + block;
+                                ValueNode phiValue = phi.valueAt((AbstractEndNode) node);
+                                assert phiValue == null || currentState.isMarked(phiValue) : phiValue + " not available at phi " + phi + " / end " + node + " in block " + block;
                             }
                         }
                         if (stateAfter != null) {