# HG changeset patch # User Chris Seaton # Date 1379073760 -3600 # Node ID ccf047a30f18fb08f2d8d74edb602e041d94fef4 # Parent 46e7087387173de2abe10400232ed62e4750fe91 Truffle: NodeUtil.getNthParent. diff -r 46e708738717 -r ccf047a30f18 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 Fri Sep 13 11:57:18 2013 +0200 +++ b/graal/com.oracle.truffle.api/src/com/oracle/truffle/api/nodes/NodeUtil.java Fri Sep 13 13:02:40 2013 +0100 @@ -423,6 +423,24 @@ return result; } + /** + * Get the nth parent of a node, where the 0th parent is the node itself. Returns null if there + * are less than n ancestors. + */ + public static Node getNthParent(Node node, int n) { + Node parent = node; + + for (int i = 0; i < n; i++) { + parent = parent.getParent(); + + if (parent == null) { + return null; + } + } + + return parent; + } + /** find annotation in class/interface hierarchy. */ public static T findAnnotation(Class clazz, Class annotationClass) { if (clazz.getAnnotation(annotationClass) != null) {