changeset 8296:ec8ed9925f5a

Fix implicit null checks depending on themselves Dependencies can be pointing to any node Fix missing argument to guard lowering phase
author Gilles Duboscq <duboscq@ssw.jku.at>
date Fri, 15 Mar 2013 13:35:45 +0100
parents 60f90b4b6a12
children 7d6cee014fb8
files graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/GraalCompiler.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/ValueNode.java graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/GuardLoweringPhase.java
diffstat 3 files changed, 3 insertions(+), 7 deletions(-) [+]
line wrap: on
line diff
--- a/graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/GraalCompiler.java	Thu Mar 14 21:36:28 2013 +0100
+++ b/graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/GraalCompiler.java	Fri Mar 15 13:35:45 2013 +0100
@@ -201,7 +201,7 @@
 
         plan.runPhases(PhasePosition.LOW_LEVEL, graph);
 
-        new GuardLoweringPhase().apply(graph);
+        new GuardLoweringPhase(target).apply(graph);
 
         // Add safepoints to loops
         new SafepointInsertionPhase().apply(graph);
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/ValueNode.java	Thu Mar 14 21:36:28 2013 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/ValueNode.java	Fri Mar 15 13:35:45 2013 +0100
@@ -28,7 +28,6 @@
 import com.oracle.graal.graph.*;
 import com.oracle.graal.graph.iterators.*;
 import com.oracle.graal.nodes.type.*;
-import com.oracle.graal.nodes.type.GenericStamp.*;
 import com.oracle.graal.nodes.util.*;
 
 /**
@@ -174,9 +173,6 @@
 
     @Override
     public boolean verify() {
-        for (ValueNode v : dependencies().nonNull()) {
-            assertTrue(!(v.stamp() instanceof GenericStamp) || ((GenericStamp) v.stamp()).type() == GenericStampType.Dependency, "cannot depend on node with stamp %s", v.stamp());
-        }
         assertTrue(kind() != null, "Should have a valid kind");
         assertTrue(kind() == kind().getStackKind(), "Should have a stack kind : %s", kind());
         return super.verify();
--- a/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/GuardLoweringPhase.java	Thu Mar 14 21:36:28 2013 +0100
+++ b/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/GuardLoweringPhase.java	Fri Mar 15 13:35:45 2013 +0100
@@ -124,9 +124,9 @@
                 Access access = (Access) node;
                 GuardNode guard = nullGuarded.get(access.object());
                 if (guard != null && isImplicitNullCheck(access.location(), target)) {
+                    NodeInputList<ValueNode> dependencies = ((ValueNode) access).dependencies();
+                    dependencies.remove(guard);
                     if (access instanceof FloatingReadNode) {
-                        NodeInputList<ValueNode> dependencies = ((FloatingReadNode) access).dependencies();
-                        dependencies.remove(guard);
                         ReadNode read = graph.add(new ReadNode(access.object(), access.location(), ((FloatingReadNode) access).stamp(), dependencies));
                         node.replaceAndDelete(read);
                         access = read;