Package EDU.purdue.cs.bloat.cfg
Class Block
- java.lang.Object
-
- EDU.purdue.cs.bloat.util.GraphNode
-
- EDU.purdue.cs.bloat.cfg.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
-
-
Field Summary
Fields Modifier and Type Field Description static intIRREDUCIBLEstatic intNON_HEADERstatic intREDUCIBLE
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description booleandominates(Block block)Returns whether or this Block dominates another given Block.FlowGraphgraph()Returns the CFG containing the block.Blockheader()Labellabel()Returns the label associated with this block.booleanpostdominates(Block block)Determines whether or not this block postdominates a given block.voidsetHeader(Block header)voidsetTree(Tree tree)Sets the expression tree for this block.StackOptimizerstackOptimizer()Returns the stack optimizer for this block.java.lang.StringtoString()Returns a string representation of this block.Treetree()Returns the expression tree for this block.voidvisit(TreeVisitor visitor)voidvisitChildren(TreeVisitor visitor)Visits the expression tree contained in this block.
-
-
-
Field Detail
-
NON_HEADER
public static final int NON_HEADER
- See Also:
- Constant Field Values
-
IRREDUCIBLE
public static final int IRREDUCIBLE
- See Also:
- Constant Field Values
-
REDUCIBLE
public static final int REDUCIBLE
- See Also:
- Constant Field Values
-
-
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.
-
visit
public void visit(TreeVisitor visitor)
-
setHeader
public void setHeader(Block header)
-
header
public Block header()
-
toString
public java.lang.String toString()
Returns a string representation of this block.- Overrides:
toStringin classjava.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
-
-