changeset 19918:c278c8c727aa

More checks that InductionVariable.direction is valid
author Tom Rodriguez <tom.rodriguez@oracle.com>
date Mon, 16 Mar 2015 15:51:43 -0700
parents 6575b4e3f629
children df0608c34899
files graal/com.oracle.graal.loop/src/com/oracle/graal/loop/CountedLoopInfo.java graal/com.oracle.graal.loop/src/com/oracle/graal/loop/LoopEx.java
diffstat 2 files changed, 5 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/graal/com.oracle.graal.loop/src/com/oracle/graal/loop/CountedLoopInfo.java	Mon Mar 16 15:46:28 2015 -0700
+++ b/graal/com.oracle.graal.loop/src/com/oracle/graal/loop/CountedLoopInfo.java	Mon Mar 16 15:51:43 2015 -0700
@@ -60,6 +60,7 @@
             if (iv.direction() == Direction.Up) {
                 range = add(graph, range, ConstantNode.forIntegerStamp(stamp, 1, graph));
             } else {
+                assert iv.direction() == Direction.Down;
                 range = sub(graph, range, ConstantNode.forIntegerStamp(stamp, 1, graph));
             }
         }
@@ -76,6 +77,7 @@
     }
 
     public long constantMaxTripCount() {
+        assert iv.direction() != null;
         long off = oneOff ? iv.direction() == Direction.Up ? 1 : -1 : 0;
         long max = (((ConstantNode) end).asJavaConstant().asLong() + off - iv.constantInit()) / iv.constantStride();
         return Math.max(0, max);
--- a/graal/com.oracle.graal.loop/src/com/oracle/graal/loop/LoopEx.java	Mon Mar 16 15:46:28 2015 -0700
+++ b/graal/com.oracle.graal.loop/src/com/oracle/graal/loop/LoopEx.java	Mon Mar 16 15:51:43 2015 -0700
@@ -218,11 +218,12 @@
                         if (initStamp.upperBound() > limitStamp.lowerBound()) {
                             return false;
                         }
-                    } else {
-                        assert iv.direction() == Direction.Down;
+                    } else if (iv.direction() == Direction.Down) {
                         if (initStamp.lowerBound() < limitStamp.upperBound()) {
                             return false;
                         }
+                    } else {
+                        return false;
                     }
                     oneOff = true;
                     break;