changeset 16569:d780f8b87d89

NonNullParametersPhase (and its HSAIL cousin) should join non-null rather than attempt to re-create the paramater stamp.
author Gilles Duboscq <duboscq@ssw.jku.at>
date Tue, 15 Jul 2014 16:50:02 +0200
parents 4d3008ddb5a0
children c54912403cb3
files graal/com.oracle.graal.hotspot.hsail/src/com/oracle/graal/hotspot/hsail/HSAILHotSpotBackend.java graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/NonNullParametersPhase.java
diffstat 2 files changed, 6 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/graal/com.oracle.graal.hotspot.hsail/src/com/oracle/graal/hotspot/hsail/HSAILHotSpotBackend.java	Tue Jul 15 13:12:58 2014 +0200
+++ b/graal/com.oracle.graal.hotspot.hsail/src/com/oracle/graal/hotspot/hsail/HSAILHotSpotBackend.java	Tue Jul 15 16:50:02 2014 +0200
@@ -238,10 +238,12 @@
         @Override
         protected void run(StructuredGraph graph) {
             int argCount = 0;
+            Stamp nonNull = StampFactory.objectNonNull();
             for (ParameterNode param : graph.getNodes(ParameterNode.class)) {
                 argCount++;
                 if (argCount < numArgs && param.stamp() instanceof ObjectStamp) {
-                    param.setStamp(StampFactory.declaredNonNull(((ObjectStamp) param.stamp()).type()));
+                    ObjectStamp paramStamp = (ObjectStamp) param.stamp();
+                    param.setStamp(paramStamp.join(nonNull));
                 }
             }
         }
--- a/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/NonNullParametersPhase.java	Tue Jul 15 13:12:58 2014 +0200
+++ b/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/NonNullParametersPhase.java	Tue Jul 15 16:50:02 2014 +0200
@@ -34,9 +34,11 @@
 
     @Override
     protected void run(StructuredGraph graph) {
+        Stamp nonNull = StampFactory.objectNonNull();
         for (ParameterNode param : graph.getNodes(ParameterNode.class)) {
             if (param.stamp() instanceof ObjectStamp) {
-                param.setStamp(StampFactory.declaredNonNull(((ObjectStamp) param.stamp()).type()));
+                ObjectStamp paramStamp = (ObjectStamp) param.stamp();
+                param.setStamp(paramStamp.join(nonNull));
             }
         }
     }