# HG changeset patch # User Lukas Stadler # Date 1412168161 -7200 # Node ID ed30fa9d37ac7eee3248368895805db6c92af266 # Parent a926a44acfc68fd6143359aa3eead9bc3c5c0055# Parent 831e96d0777df3ae158ed15765fcb7c443389d97 Merge diff -r 831e96d0777d -r ed30fa9d37ac graal/com.oracle.graal.nodeinfo.processor/src/com/oracle/graal/nodeinfo/processor/GraphNodeGenerator.java --- 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(); diff -r 831e96d0777d -r ed30fa9d37ac graal/com.oracle.graal.phases/src/com/oracle/graal/phases/util/GraphOrder.java --- 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) {