< prev index next >

src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.core.common/src/org/graalvm/compiler/core/common/cfg/Loop.java

Print this page




  24 package org.graalvm.compiler.core.common.cfg;
  25 
  26 import java.util.ArrayList;
  27 import java.util.List;
  28 
  29 public abstract class Loop<T extends AbstractBlockBase<T>> {
  30 
  31     private final Loop<T> parent;
  32     private final List<Loop<T>> children;
  33 
  34     private final int depth;
  35     private final int index;
  36     private final T header;
  37     private final List<T> blocks;
  38     private final List<T> exits;
  39 
  40     protected Loop(Loop<T> parent, int index, T header) {
  41         this.parent = parent;
  42         if (parent != null) {
  43             this.depth = parent.getDepth() + 1;
  44             parent.getChildren().add(this);
  45         } else {
  46             this.depth = 1;
  47         }
  48         this.index = index;
  49         this.header = header;
  50         this.blocks = new ArrayList<>();
  51         this.children = new ArrayList<>();
  52         this.exits = new ArrayList<>();
  53     }
  54 
  55     public abstract long numBackedges();
  56 
  57     @Override
  58     public String toString() {
  59         return "loop " + index + " depth " + getDepth() + (parent != null ? " outer " + parent.index : "");
  60     }
  61 
  62     public Loop<T> getParent() {
  63         return parent;
  64     }




  24 package org.graalvm.compiler.core.common.cfg;
  25 
  26 import java.util.ArrayList;
  27 import java.util.List;
  28 
  29 public abstract class Loop<T extends AbstractBlockBase<T>> {
  30 
  31     private final Loop<T> parent;
  32     private final List<Loop<T>> children;
  33 
  34     private final int depth;
  35     private final int index;
  36     private final T header;
  37     private final List<T> blocks;
  38     private final List<T> exits;
  39 
  40     protected Loop(Loop<T> parent, int index, T header) {
  41         this.parent = parent;
  42         if (parent != null) {
  43             this.depth = parent.getDepth() + 1;

  44         } else {
  45             this.depth = 1;
  46         }
  47         this.index = index;
  48         this.header = header;
  49         this.blocks = new ArrayList<>();
  50         this.children = new ArrayList<>();
  51         this.exits = new ArrayList<>();
  52     }
  53 
  54     public abstract long numBackedges();
  55 
  56     @Override
  57     public String toString() {
  58         return "loop " + index + " depth " + getDepth() + (parent != null ? " outer " + parent.index : "");
  59     }
  60 
  61     public Loop<T> getParent() {
  62         return parent;
  63     }


< prev index next >