changeset 20026:3bda2c03d089

Add scope with the schedule in EffectsPhase
author Gilles Duboscq <gilles.m.duboscq@oracle.com>
date Wed, 25 Mar 2015 16:15:20 +0100
parents dc3c886e3cca
children 87419b0d9bfb
files graal/com.oracle.graal.virtual/src/com/oracle/graal/virtual/phases/ea/EffectsPhase.java
diffstat 1 files changed, 23 insertions(+), 20 deletions(-) [+]
line wrap: on
line diff
--- a/graal/com.oracle.graal.virtual/src/com/oracle/graal/virtual/phases/ea/EffectsPhase.java	Wed Mar 25 16:31:35 2015 +0100
+++ b/graal/com.oracle.graal.virtual/src/com/oracle/graal/virtual/phases/ea/EffectsPhase.java	Wed Mar 25 16:15:20 2015 +0100
@@ -83,33 +83,36 @@
                     schedule.apply(graph, false);
                     cfg = schedule.getCFG();
                 }
-
-                Closure<?> closure = createEffectsClosure(context, schedule, cfg);
-                ReentrantBlockIterator.apply(closure, cfg.getStartBlock());
+                try (Scope scheduleScope = Debug.scope("EffectsPhaseWithSchedule", schedule)) {
+                    Closure<?> closure = createEffectsClosure(context, schedule, cfg);
+                    ReentrantBlockIterator.apply(closure, cfg.getStartBlock());
 
-                if (!closure.hasChanged()) {
-                    break;
-                }
+                    if (!closure.hasChanged()) {
+                        break;
+                    }
 
-                // apply the effects collected during this iteration
-                HashSetNodeEventListener listener = new HashSetNodeEventListener();
-                try (NodeEventScope nes = graph.trackNodeEvents(listener)) {
-                    closure.applyEffects();
-                }
+                    // apply the effects collected during this iteration
+                    HashSetNodeEventListener listener = new HashSetNodeEventListener();
+                    try (NodeEventScope nes = graph.trackNodeEvents(listener)) {
+                        closure.applyEffects();
+                    }
 
-                if (Debug.isDumpEnabled()) {
-                    Debug.dump(graph, "after " + getName() + " iteration");
-                }
+                    if (Debug.isDumpEnabled()) {
+                        Debug.dump(graph, "after " + getName() + " iteration");
+                    }
 
-                new DeadCodeEliminationPhase(Required).apply(graph);
+                    new DeadCodeEliminationPhase(Required).apply(graph);
 
-                Set<Node> changedNodes = listener.getNodes();
-                for (Node node : graph.getNodes()) {
-                    if (node instanceof Simplifiable) {
-                        changedNodes.add(node);
+                    Set<Node> changedNodes = listener.getNodes();
+                    for (Node node : graph.getNodes()) {
+                        if (node instanceof Simplifiable) {
+                            changedNodes.add(node);
+                        }
                     }
+                    postIteration(graph, context, changedNodes);
+                } catch (Throwable t) {
+                    throw Debug.handle(t);
                 }
-                postIteration(graph, context, changedNodes);
             }
             changed = true;
         }