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 }
|