src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.core.common/src/org/graalvm/compiler/core/common/cfg/Loop.java
changeset 58877 aec7bf35d6f5
parent 58299 6df94ce3ab2f
equal deleted inserted replaced
58876:1a8d65e71a66 58877:aec7bf35d6f5
   175             lastId = block.getId();
   175             lastId = block.getId();
   176         }
   176         }
   177         return true;
   177         return true;
   178     }
   178     }
   179 
   179 
   180     /**
       
   181      * Determines if one loop is a transitive parent of another loop.
       
   182      *
       
   183      * @param childLoop The loop for which parentLoop might be a transitive parent loop.
       
   184      * @param parentLoop The loop which might be a transitive parent loop of child loop.
       
   185      * @return {@code true} if parentLoop is a (transitive) parent loop of childLoop, {@code false}
       
   186      *         otherwise
       
   187      */
       
   188     public static <T extends AbstractBlockBase<T>> boolean transitiveParentLoop(Loop<T> childLoop, Loop<T> parentLoop) {
       
   189         Loop<T> curr = childLoop;
       
   190         while (curr != null) {
       
   191             if (curr == parentLoop) {
       
   192                 return true;
       
   193             }
       
   194             curr = curr.getParent();
       
   195         }
       
   196         return false;
       
   197     }
       
   198 
       
   199     @Override
   180     @Override
   200     public int hashCode() {
   181     public int hashCode() {
   201         return index + depth * 31;
   182         return index + depth * 31;
   202     }
   183     }
   203 
   184