# HG changeset patch # User Lukas Stadler # Date 1454059358 -3600 # Node ID 2a73030c41ade180c54a821d37d2cc71ab2a60f8 # Parent 58fa03b34d5f5694ba86e0ec46eaa6ee11f9b3f3 detect runaway unroll via growth instead of fixed size diff -r 58fa03b34d5f -r 2a73030c41ad graal/com.oracle.graal.loop.phases/src/com/oracle/graal/loop/phases/LoopTransformations.java --- 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"); } }