# HG changeset patch # User Andreas Woess # Date 1374061991 -7200 # Node ID 6e12e0ace0d5b974272d7c8e97e9adac5d390516 # Parent 7a8d6ba83a04fcc6536207a2680798a6765bf611 Truffle: add NodeUtil.countNodes overload that counts nodes of a specific type diff -r 7a8d6ba83a04 -r 6e12e0ace0d5 graal/com.oracle.truffle.api/src/com/oracle/truffle/api/nodes/NodeUtil.java --- a/graal/com.oracle.truffle.api/src/com/oracle/truffle/api/nodes/NodeUtil.java Tue Jul 16 17:41:21 2013 -0700 +++ b/graal/com.oracle.truffle.api/src/com/oracle/truffle/api/nodes/NodeUtil.java Wed Jul 17 13:53:11 2013 +0200 @@ -541,21 +541,32 @@ } public static int countNodes(Node root) { - NodeCountVisitor nodeCount = new NodeCountVisitor(); + return countNodes(root, null); + } + + public static int countNodes(Node root, Class clazz) { + NodeCountVisitor nodeCount = new NodeCountVisitor(clazz); root.accept(nodeCount); return nodeCount.nodeCount; } - private static class NodeCountVisitor implements NodeVisitor { + private static final class NodeCountVisitor implements NodeVisitor { + private final Class clazz; int nodeCount; + private NodeCountVisitor(Class clazz) { + this.clazz = clazz; + } + @Override public boolean visit(Node node) { if (node instanceof RootNode && nodeCount > 0) { return false; } - nodeCount++; + if (clazz == null || clazz.isInstance(node)) { + nodeCount++; + } return true; } }