diff graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/GuardLoweringPhase.java @ 10081:20fd8760cb34

pull ScheduledNodeIterator into separate class
author Lukas Stadler <lukas.stadler@jku.at>
date Tue, 18 Jun 2013 16:38:18 +0200
parents 063a712fe8d8
children a268b0de65d6
line wrap: on
line diff
--- a/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/GuardLoweringPhase.java	Tue Jun 18 12:46:06 2013 +0200
+++ b/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/GuardLoweringPhase.java	Tue Jun 18 16:38:18 2013 +0200
@@ -34,55 +34,12 @@
 import com.oracle.graal.nodes.extended.*;
 import com.oracle.graal.nodes.util.*;
 import com.oracle.graal.phases.*;
+import com.oracle.graal.phases.graph.*;
 import com.oracle.graal.phases.schedule.*;
 import com.oracle.graal.phases.tiers.*;
 
 public class GuardLoweringPhase extends BasePhase<MidTierContext> {
 
-    private abstract static class ScheduledNodeIterator {
-
-        private FixedWithNextNode lastFixed;
-        private FixedWithNextNode reconnect;
-        private ListIterator<ScheduledNode> iterator;
-
-        public void processNodes(List<ScheduledNode> nodes, FixedWithNextNode begin) {
-            assert begin != null;
-            lastFixed = begin;
-            reconnect = null;
-            iterator = nodes.listIterator();
-            while (iterator.hasNext()) {
-                Node node = iterator.next();
-                if (!node.isAlive()) {
-                    continue;
-                }
-                if (reconnect != null && node instanceof FixedNode) {
-                    reconnect.setNext((FixedNode) node);
-                    reconnect = null;
-                }
-                if (node instanceof FixedWithNextNode) {
-                    lastFixed = (FixedWithNextNode) node;
-                }
-                processNode(node);
-            }
-        }
-
-        protected void insert(FixedNode start, FixedWithNextNode end) {
-            this.lastFixed.setNext(start);
-            this.lastFixed = end;
-            this.reconnect = end;
-        }
-
-        protected void replaceCurrent(FixedWithNextNode newNode) {
-            Node current = iterator.previous();
-            iterator.next(); // needed because of the previous() call
-            current.replaceAndDelete(newNode);
-            insert(newNode, newNode);
-            iterator.set(newNode);
-        }
-
-        protected abstract void processNode(Node node);
-    }
-
     private static class UseImplicitNullChecks extends ScheduledNodeIterator {
 
         private final IdentityHashMap<ValueNode, GuardNode> nullGuarded = new IdentityHashMap<>();