Mercurial > hg > graal-compiler
changeset 10793:6e12e0ace0d5
Truffle: add NodeUtil.countNodes overload that counts nodes of a specific type
author | Andreas Woess <andreas.woess@jku.at> |
---|---|
date | Wed, 17 Jul 2013 13:53:11 +0200 |
parents | 7a8d6ba83a04 |
children | 3fe325c3f31c |
files | graal/com.oracle.truffle.api/src/com/oracle/truffle/api/nodes/NodeUtil.java |
diffstat | 1 files changed, 14 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- 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; } }