Mercurial > hg > truffle
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; |