25 import org.graalvm.compiler.core.common.type.Stamp; 26 import org.graalvm.compiler.graph.IterableNodeType; 27 import org.graalvm.compiler.graph.NodeClass; 28 import org.graalvm.compiler.nodeinfo.NodeInfo; 29 30 /** 31 * The {@code ControlSplitNode} is a base class for all instructions that split the control flow 32 * (ie. have more than one successor). 33 */ 34 @NodeInfo 35 public abstract class ControlSplitNode extends FixedNode implements IterableNodeType { 36 public static final NodeClass<ControlSplitNode> TYPE = NodeClass.create(ControlSplitNode.class); 37 38 protected ControlSplitNode(NodeClass<? extends ControlSplitNode> c, Stamp stamp) { 39 super(c, stamp); 40 } 41 42 public abstract double probability(AbstractBeginNode successor); 43 44 /** 45 * Primary successor of the control split. Data dependencies on the node have to be scheduled in 46 * the primary successor. 47 * 48 * @return the primary successor 49 */ 50 public abstract AbstractBeginNode getPrimarySuccessor(); 51 } | 25 import org.graalvm.compiler.core.common.type.Stamp; 26 import org.graalvm.compiler.graph.IterableNodeType; 27 import org.graalvm.compiler.graph.NodeClass; 28 import org.graalvm.compiler.nodeinfo.NodeInfo; 29 30 /** 31 * The {@code ControlSplitNode} is a base class for all instructions that split the control flow 32 * (ie. have more than one successor). 33 */ 34 @NodeInfo 35 public abstract class ControlSplitNode extends FixedNode implements IterableNodeType { 36 public static final NodeClass<ControlSplitNode> TYPE = NodeClass.create(ControlSplitNode.class); 37 38 protected ControlSplitNode(NodeClass<? extends ControlSplitNode> c, Stamp stamp) { 39 super(c, stamp); 40 } 41 42 public abstract double probability(AbstractBeginNode successor); 43 44 /** 45 * Attempts to set the probability for the given successor to the passed value (which has to be 46 * in the range of 0.0 and 1.0). Returns whether setting the probability was successful. 47 */ 48 public abstract boolean setProbability(AbstractBeginNode successor, double value); 49 50 /** 51 * Primary successor of the control split. Data dependencies on the node have to be scheduled in 52 * the primary successor. 53 * 54 * @return the primary successor 55 */ 56 public abstract AbstractBeginNode getPrimarySuccessor(); 57 58 /** 59 * Returns the number of successors. 60 */ 61 public abstract int getSuccessorCount(); 62 } |