changeset 11672:25de2c04c956

Small performance improvement to inlining.
author Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
date Mon, 16 Sep 2013 20:37:25 +0200
parents 3522f7c99c5f
children 1c5bc8307c76
files graal/com.oracle.graal.graph/src/com/oracle/graal/graph/NodeClass.java
diffstat 1 files changed, 8 insertions(+), 12 deletions(-) [+]
line wrap: on
line diff
--- a/graal/com.oracle.graal.graph/src/com/oracle/graal/graph/NodeClass.java	Mon Sep 16 20:23:26 2013 +0200
+++ b/graal/com.oracle.graal.graph/src/com/oracle/graal/graph/NodeClass.java	Mon Sep 16 20:37:25 2013 +0200
@@ -991,14 +991,15 @@
         for (Entry<Node, Node> entry : newNodes.entrySet()) {
             Node oldNode = entry.getKey();
             Node node = entry.getValue();
+            NodeClass oldNodeClass = oldNode.getNodeClass();
+            NodeClass nodeClass = node.getNodeClass();
             for (NodeClassIterator iter = oldNode.inputs().iterator(); iter.hasNext();) {
                 Position pos = iter.nextPosition();
-                if (!pos.isValidFor(node, oldNode)) {
+                if (!nodeClass.isValid(pos, oldNodeClass)) {
                     continue;
                 }
-                Node input = oldNode.getNodeClass().get(oldNode, pos);
+                Node input = oldNodeClass.get(oldNode, pos);
                 Node target = newNodes.get(input);
-                NodeClass nodeClass = node.getNodeClass();
                 if (target == null) {
                     Node replacement = input;
                     if (replacements != null) {
@@ -1013,27 +1014,22 @@
                 }
                 nodeClass.set(node, pos, target);
             }
-        }
 
-        // re-wire successors
-        for (Entry<Node, Node> entry : newNodes.entrySet()) {
-            Node oldNode = entry.getKey();
-            Node node = entry.getValue();
             for (NodeClassIterator iter = oldNode.successors().iterator(); iter.hasNext();) {
                 Position pos = iter.nextPosition();
-                if (!pos.isValidFor(node, oldNode)) {
+                if (!nodeClass.isValid(pos, oldNodeClass)) {
                     continue;
                 }
-                Node succ = oldNode.getNodeClass().get(oldNode, pos);
+                Node succ = oldNodeClass.get(oldNode, pos);
                 Node target = newNodes.get(succ);
                 if (target == null) {
                     Node replacement = replacements.replacement(succ);
                     if (replacement != succ) {
-                        assert isAssignable(node.getNodeClass().fieldTypes.get(node.getNodeClass().successorOffsets[pos.index]), replacement);
+                        assert isAssignable(nodeClass.fieldTypes.get(node.getNodeClass().successorOffsets[pos.index]), replacement);
                         target = replacement;
                     }
                 }
-                node.getNodeClass().set(node, pos, target);
+                nodeClass.set(node, pos, target);
             }
         }
         return newNodes;