Class Block


  • public class Block
    extends GraphNode
    Block represents a basic block of code used in control flow graphs. A basic block is always entered at its beginning and exits at its end. That is, its first statement is a label and its last statement is a jump. There are no other labels or jumps in between.

    Each Block knows its parent block and its children in the dominator and postdominator trees. It also knows which blocks are in its dominance frontier and its postdominance frontier.

    See Also:
    FlowGraph, DominatorTree, DominanceFrontier
    • Method Detail

      • stackOptimizer

        public StackOptimizer stackOptimizer()
        Returns the stack optimizer for this block.
        Returns:
        The stack optimizer.
      • tree

        public Tree tree()
        Returns the expression tree for this block.
        Returns:
        The tree.
      • setTree

        public void setTree​(Tree tree)
        Sets the expression tree for this block.
      • graph

        public FlowGraph graph()
        Returns the CFG containing the block.
        Returns:
        The CFG.
      • label

        public Label label()
        Returns the label associated with this block.
      • visitChildren

        public void visitChildren​(TreeVisitor visitor)
        Visits the expression tree contained in this block.
      • setHeader

        public void setHeader​(Block header)
      • header

        public Block header()
      • toString

        public java.lang.String toString()
        Returns a string representation of this block.
        Overrides:
        toString in class java.lang.Object
      • dominates

        public boolean dominates​(Block block)
        Returns whether or this Block dominates another given Block. A node X dominates a node Y when every path from the first node in the CFG (Enter) to Y must pass through X.
      • postdominates

        public boolean postdominates​(Block block)
        Determines whether or not this block postdominates a given block. A block X is said to postdominate a block Y when every path from Y to the last node in the CFG (Exit) passes through X. This relationship can be thought of as the reverse of dominance. That is, X dominates Y in the reverse CFG.
        See Also:
        DominatorTree