# HG changeset patch # User Thomas Wuerthinger # Date 1309963399 -7200 # Node ID 462c89186179d9b4c09033db444c1fd8721a323d # Parent 8044bdfaab06c7e9d77032467d55315e992bfb4f Added GVN to GuardNode and Compare. diff -r 8044bdfaab06 -r 462c89186179 graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/ir/Compare.java --- a/graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/ir/Compare.java Wed Jul 06 16:15:15 2011 +0200 +++ b/graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/ir/Compare.java Wed Jul 06 16:43:19 2011 +0200 @@ -95,6 +95,15 @@ setY(y); } + @Override + public boolean valueEqual(Node i) { + if (i instanceof Compare) { + Compare compare = (Compare) i; + return compare.condition == condition && compare.unorderedIsTrue == unorderedIsTrue; + } + return super.valueEqual(i); + } + /** * Gets the condition (comparison operation) for this instruction. * @return the condition diff -r 8044bdfaab06 -r 462c89186179 graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/ir/GuardNode.java --- a/graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/ir/GuardNode.java Wed Jul 06 16:15:15 2011 +0200 +++ b/graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/ir/GuardNode.java Wed Jul 06 16:43:19 2011 +0200 @@ -75,6 +75,11 @@ return new GuardNode(null, into); } + @Override + public boolean valueEqual(Node i) { + return i instanceof GuardNode; + } + @SuppressWarnings("unchecked") @Override public T lookup(Class clazz) { diff -r 8044bdfaab06 -r 462c89186179 graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/ir/RegisterFinalizer.java --- a/graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/ir/RegisterFinalizer.java Wed Jul 06 16:15:15 2011 +0200 +++ b/graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/ir/RegisterFinalizer.java Wed Jul 06 16:43:19 2011 +0200 @@ -107,11 +107,11 @@ } if (needsCheck) { - if (GraalOptions.TraceGVN) { + if (GraalOptions.TraceCanonicalizer) { TTY.println("Could not canonicalize finalizer " + object + " (declaredType=" + declaredType + ", exactType=" + exactType + ")"); } } else { - if (GraalOptions.TraceGVN) { + if (GraalOptions.TraceCanonicalizer) { TTY.println("Canonicalized finalizer for object " + object); } return finalizer.next(); diff -r 8044bdfaab06 -r 462c89186179 graal/com.oracle.max.graal.runtime/src/com/oracle/max/graal/runtime/HotSpotRuntime.java --- a/graal/com.oracle.max.graal.runtime/src/com/oracle/max/graal/runtime/HotSpotRuntime.java Wed Jul 06 16:15:15 2011 +0200 +++ b/graal/com.oracle.max.graal.runtime/src/com/oracle/max/graal/runtime/HotSpotRuntime.java Wed Jul 06 16:43:19 2011 +0200 @@ -307,7 +307,7 @@ LocationNode arrayLocation = createArrayLocation(graph, elementKind); arrayLocation.setIndex(storeIndexed.index()); Value value = storeIndexed.value(); - if (elementKind == CiKind.Object) { + if (elementKind == CiKind.Object && !value.isNullConstant()) { // Store check! if (storeIndexed.array().exactType() != null) { RiType elementType = storeIndexed.array().exactType().componentType();