Mercurial > hg > graal-compiler
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;