# HG changeset patch # User Lukas Stadler # Date 1370425493 -7200 # Node ID fb010fd0b384d0dea7e8121904247095b6d79633 # Parent d59b9078978c3549a833bd51fd001818c1f27fba only create overflow guards for loops that have safepoints diff -r d59b9078978c -r fb010fd0b384 graal/com.oracle.graal.loop/src/com/oracle/graal/loop/phases/LoopSafepointEliminationPhase.java --- a/graal/com.oracle.graal.loop/src/com/oracle/graal/loop/phases/LoopSafepointEliminationPhase.java Wed Jun 05 11:44:05 2013 +0200 +++ b/graal/com.oracle.graal.loop/src/com/oracle/graal/loop/phases/LoopSafepointEliminationPhase.java Wed Jun 05 11:44:53 2013 +0200 @@ -39,9 +39,15 @@ loops.detectedCountedLoops(); for (LoopEx loop : loops.countedLoops()) { if (loop.lirLoop().children.isEmpty() && loop.counted().getKind() == Kind.Int) { - loop.counted().createOverFlowGuard(); + boolean hasSafepoint = false; for (LoopEndNode loopEnd : loop.loopBegin().loopEnds()) { - loopEnd.disableSafepoint(); + hasSafepoint |= loopEnd.canSafepoint(); + } + if (hasSafepoint) { + loop.counted().createOverFlowGuard(); + for (LoopEndNode loopEnd : loop.loopBegin().loopEnds()) { + loopEnd.disableSafepoint(); + } } } }