comparison graal/com.oracle.truffle.api/src/com/oracle/truffle/api/nodes/NodeUtil.java @ 14569:5e04917e6616

Truffle: renamed NodeFilter to NodeCountFilter and changed it to have inclusive implementation semantics.
author Christian Humer <christian.humer@gmail.com>
date Mon, 17 Mar 2014 18:46:39 +0100
parents 9c01fabfb167
children 762c9aceb7d8
comparison
equal deleted inserted replaced
14568:2e90d9a9a677 14569:5e04917e6616
572 572
573 public static int countNodes(Node root) { 573 public static int countNodes(Node root) {
574 return countNodes(root, null, false); 574 return countNodes(root, null, false);
575 } 575 }
576 576
577 public static int countNodes(Node root, NodeFilter filter) { 577 public static int countNodes(Node root, NodeCountFilter filter) {
578 return countNodes(root, filter, false); 578 return countNodes(root, filter, false);
579 } 579 }
580 580
581 public static int countNodes(Node root, NodeFilter filter, boolean visitInlinedCallNodes) { 581 public static int countNodes(Node root, NodeCountFilter filter, boolean visitInlinedCallNodes) {
582 NodeCountVisitor nodeCount = new NodeCountVisitor(filter, visitInlinedCallNodes); 582 NodeCountVisitor nodeCount = new NodeCountVisitor(filter, visitInlinedCallNodes);
583 root.accept(nodeCount); 583 root.accept(nodeCount);
584 return nodeCount.nodeCount; 584 return nodeCount.nodeCount;
585 } 585 }
586 586
587 public interface NodeFilter { 587 public interface NodeCountFilter {
588 588
589 boolean isFiltered(Node node); 589 boolean isCounted(Node node);
590 590
591 } 591 }
592 592
593 private static final class NodeCountVisitor implements NodeVisitor { 593 private static final class NodeCountVisitor implements NodeVisitor {
594 594
595 private final boolean visitInlinedCallNodes; 595 private final boolean visitInlinedCallNodes;
596 int nodeCount; 596 int nodeCount;
597 private final NodeFilter filter; 597 private final NodeCountFilter filter;
598 598
599 private NodeCountVisitor(NodeFilter filter, boolean visitInlinedCallNodes) { 599 private NodeCountVisitor(NodeCountFilter filter, boolean visitInlinedCallNodes) {
600 this.filter = filter; 600 this.filter = filter;
601 this.visitInlinedCallNodes = visitInlinedCallNodes; 601 this.visitInlinedCallNodes = visitInlinedCallNodes;
602 } 602 }
603 603
604 @Override 604 @Override
605 public boolean visit(Node node) { 605 public boolean visit(Node node) {
606 if (filter == null || !filter.isFiltered(node)) { 606 if (filter == null || filter.isCounted(node)) {
607 nodeCount++; 607 nodeCount++;
608 } 608 }
609 609
610 if (visitInlinedCallNodes && node instanceof CallNode) { 610 if (visitInlinedCallNodes && node instanceof CallNode) {
611 CallNode call = (CallNode) node; 611 CallNode call = (CallNode) node;