Mercurial > hg > truffle
changeset 3166:462c89186179
Added GVN to GuardNode and Compare.
author | Thomas Wuerthinger <thomas@wuerthinger.net> |
---|---|
date | Wed, 06 Jul 2011 16:43:19 +0200 |
parents | 8044bdfaab06 |
children | 132aa6f2bbc0 |
files | graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/ir/Compare.java graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/ir/GuardNode.java graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/ir/RegisterFinalizer.java graal/com.oracle.max.graal.runtime/src/com/oracle/max/graal/runtime/HotSpotRuntime.java |
diffstat | 4 files changed, 17 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- 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
--- 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 extends Op> T lookup(Class<T> clazz) {
--- 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();
--- 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();