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();