Mercurial > hg > graal-compiler
changeset 5488:21cab9000931
.filter() on Graph.getNode now tries to use the fast node iterator if possible
author | Gilles Duboscq <duboscq@ssw.jku.at> |
---|---|
date | Wed, 06 Jun 2012 18:55:39 +0200 |
parents | 9743ae819f73 |
children | 5d0d72b37f88 |
files | graal/com.oracle.graal.graph/src/com/oracle/graal/graph/Graph.java graal/com.oracle.graal.graph/src/com/oracle/graal/graph/iterators/NodeIterable.java |
diffstat | 2 files changed, 12 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/graal/com.oracle.graal.graph/src/com/oracle/graal/graph/Graph.java Tue Jun 05 17:38:48 2012 +0200 +++ b/graal/com.oracle.graal.graph/src/com/oracle/graal/graph/Graph.java Wed Jun 06 18:55:39 2012 +0200 @@ -313,6 +313,15 @@ public Iterator<Node> iterator() { return new NodeIterator(); } + + @SuppressWarnings("unchecked") + @Override + public <F extends Node> NodeIterable<F> filter(Class<F> clazz) { + if (IterableNodeType.class.isAssignableFrom(clazz)) { + return getNodes((Class) clazz); + } + return super.filter(clazz); + } }; }
--- a/graal/com.oracle.graal.graph/src/com/oracle/graal/graph/iterators/NodeIterable.java Tue Jun 05 17:38:48 2012 +0200 +++ b/graal/com.oracle.graal.graph/src/com/oracle/graal/graph/iterators/NodeIterable.java Wed Jun 06 18:55:39 2012 +0200 @@ -34,10 +34,10 @@ return new FilteredNodeIterable<>(this).until(clazz); } @SuppressWarnings("unchecked") - public <F extends T> FilteredNodeIterable<F> filter(Class<F> clazz) { - return (FilteredNodeIterable<F>) new FilteredNodeIterable<>(this).and(NodePredicates.isA(clazz)); + public <F extends T> NodeIterable<F> filter(Class<F> clazz) { + return (NodeIterable<F>) new FilteredNodeIterable<>(this).and(NodePredicates.isA(clazz)); } - public FilteredNodeIterable<T> filterInterface(Class<?> iface) { + public NodeIterable<T> filterInterface(Class<?> iface) { return new FilteredNodeIterable<>(this).and(NodePredicates.isAInterface(iface)); } public FilteredNodeIterable<T> filter(NodePredicate predicate) {