diff graal/com.oracle.truffle.api/src/com/oracle/truffle/api/nodes/NodeUtil.java @ 10704:84b944726df2

Truffle: introduce NodeUtil.countNodes
author Andreas Woess <andreas.woess@jku.at>
date Thu, 11 Jul 2013 12:22:51 +0200
parents 98b004bf3985
children 99789440ce28
line wrap: on
line diff
--- a/graal/com.oracle.truffle.api/src/com/oracle/truffle/api/nodes/NodeUtil.java	Thu Jul 11 12:10:17 2013 +0200
+++ b/graal/com.oracle.truffle.api/src/com/oracle/truffle/api/nodes/NodeUtil.java	Thu Jul 11 12:22:51 2013 +0200
@@ -508,6 +508,26 @@
         return nodeList;
     }
 
+    public static int countNodes(Node root) {
+        NodeCountVisitor nodeCount = new NodeCountVisitor();
+        root.accept(nodeCount);
+        return nodeCount.nodeCount;
+    }
+
+    private static class NodeCountVisitor implements NodeVisitor {
+
+        int nodeCount;
+
+        @Override
+        public boolean visit(Node node) {
+            if (node instanceof RootNode && nodeCount > 0) {
+                return false;
+            }
+            nodeCount++;
+            return true;
+        }
+    }
+
     public static String printCompactTreeToString(Node node) {
         StringWriter out = new StringWriter();
         printCompactTree(new PrintWriter(out), null, node, 1);