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:
  • Field Details

  • Method Details

    • 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.
    • visit

      public void visit(TreeVisitor visitor)
    • setHeader

      public void setHeader(Block header)
    • header

      public Block header()
    • toString

      public String toString()
      Returns a string representation of this block.
      Overrides:
      toString in class 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: