changeset 23363:2a73030c41ad

detect runaway unroll via growth instead of fixed size
author Lukas Stadler <lukas.stadler@oracle.com>
date Fri, 29 Jan 2016 10:22:38 +0100
parents 58fa03b34d5f
children 5f3a13d32883
files graal/com.oracle.graal.loop.phases/src/com/oracle/graal/loop/phases/LoopTransformations.java
diffstat 1 files changed, 2 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/graal/com.oracle.graal.loop.phases/src/com/oracle/graal/loop/phases/LoopTransformations.java	Thu Jan 28 18:45:33 2016 +0100
+++ b/graal/com.oracle.graal.loop.phases/src/com/oracle/graal/loop/phases/LoopTransformations.java	Fri Jan 29 10:22:38 2016 +0100
@@ -61,12 +61,13 @@
         // assert loop.isCounted(); //TODO (gd) strenghten : counted with known trip count
         LoopBeginNode loopBegin = loop.loopBegin();
         StructuredGraph graph = loopBegin.graph();
+        int initialNodeCount = graph.getNodeCount();
         while (!loopBegin.isDeleted()) {
             Mark mark = graph.getMark();
             peel(loop);
             canonicalizer.applyIncremental(graph, context, mark);
             loop.invalidateFragments();
-            if (graph.getNodeCount() > MaximumDesiredSize.getValue() * 3) {
+            if (graph.getNodeCount() > initialNodeCount + MaximumDesiredSize.getValue() * 2) {
                 throw new BailoutException("FullUnroll : Graph seems to grow out of proportion");
             }
         }