changeset 13290:492c9907b9bf

Move Access.setNullCheck to FixedAccessNode.setNullCheck. FloatingAccessNode.asFixedNode retruns a FixedAccessNode
author Gilles Duboscq <duboscq@ssw.jku.at>
date Wed, 11 Dec 2013 14:02:23 +0100
parents 1734954cc73d
children 01fd11e44f73
files graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/Access.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/FloatingAccessNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/FloatingReadNode.java graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/FloatingReadPhase.java graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/GuardLoweringPhase.java
diffstat 5 files changed, 7 insertions(+), 18 deletions(-) [+]
line wrap: on
line diff
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/Access.java	Wed Dec 11 13:48:42 2013 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/Access.java	Wed Dec 11 14:02:23 2013 +0100
@@ -30,6 +30,4 @@
 
     LocationNode nullCheckLocation();
 
-    void setNullCheck(boolean check);
-
 }
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/FloatingAccessNode.java	Wed Dec 11 13:48:42 2013 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/FloatingAccessNode.java	Wed Dec 11 14:02:23 2013 +0100
@@ -31,7 +31,6 @@
     @Input private ValueNode object;
     @Input private LocationNode location;
     @Input private FrameState deoptState;
-    private boolean nullCheck;
     private BarrierType barrierType;
     private boolean compressible;
 
@@ -51,14 +50,6 @@
         return location.getLocationIdentity();
     }
 
-    public boolean getNullCheck() {
-        return nullCheck;
-    }
-
-    public void setNullCheck(boolean check) {
-        this.nullCheck = check;
-    }
-
     public FloatingAccessNode(ValueNode object, LocationNode location, Stamp stamp) {
         super(stamp);
         this.object = object;
@@ -75,7 +66,7 @@
 
     @Override
     public boolean canDeoptimize() {
-        return nullCheck;
+        return false;
     }
 
     @Override
@@ -103,5 +94,5 @@
         return compressible;
     }
 
-    public abstract Access asFixedNode();
+    public abstract FixedAccessNode asFixedNode();
 }
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/FloatingReadNode.java	Wed Dec 11 13:48:42 2013 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/FloatingReadNode.java	Wed Dec 11 14:02:23 2013 +0100
@@ -71,7 +71,7 @@
     }
 
     @Override
-    public Access asFixedNode() {
+    public FixedAccessNode asFixedNode() {
         return graph().add(new ReadNode(object(), nullCheckLocation(), stamp(), getGuard(), getBarrierType(), isCompressible()));
     }
 
--- a/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/FloatingReadPhase.java	Wed Dec 11 13:48:42 2013 +0100
+++ b/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/FloatingReadPhase.java	Wed Dec 11 14:02:23 2013 +0100
@@ -226,7 +226,6 @@
             if (accessNode.canFloat()) {
                 MemoryNode lastLocationAccess = state.getLastLocationAccess(locationIdentity);
                 FloatingAccessNode floatingNode = accessNode.asFloatingNode(lastLocationAccess);
-                floatingNode.setNullCheck(accessNode.getNullCheck());
                 ValueAnchorNode anchor = null;
                 GuardingNode guard = accessNode.getGuard();
                 if (guard != null) {
--- a/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/GuardLoweringPhase.java	Wed Dec 11 13:48:42 2013 +0100
+++ b/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/GuardLoweringPhase.java	Wed Dec 11 14:02:23 2013 +0100
@@ -95,12 +95,13 @@
             GuardNode guard = nullGuarded.get(access.object());
             if (guard != null && isImplicitNullCheck(access.nullCheckLocation())) {
                 access.setGuard(guard.getGuard());
-                Access fixedAccess = access;
+                FixedAccessNode fixedAccess;
                 if (access instanceof FloatingAccessNode) {
                     fixedAccess = ((FloatingAccessNode) access).asFixedNode();
-                    replaceCurrent((FixedWithNextNode) fixedAccess.asNode());
+                    replaceCurrent(fixedAccess.asNode());
+                } else {
+                    fixedAccess = (FixedAccessNode) access;
                 }
-                assert fixedAccess instanceof FixedNode;
                 fixedAccess.setNullCheck(true);
                 LogicNode condition = guard.condition();
                 guard.replaceAndDelete(fixedAccess.asNode());