|
SandMark version 2.0 |
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object | +--EDU.purdue.cs.bloat.util.GraphNode | +--sandmark.obfuscate.boolsplitter.dcfg.Block
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.
FlowGraph
,
DominatorTree
,
DominanceFrontier
Field Summary | |
(package private) int |
blockType
|
boolean |
built
|
(package private) java.util.Set |
domChildren
|
(package private) java.util.Set |
domFrontier
|
(package private) Block |
domParent
|
(package private) FlowGraph |
graph
|
(package private) Block |
header
|
static int |
IRREDUCIBLE
|
(package private) EDU.purdue.cs.bloat.editor.Label |
label
|
static int |
NON_HEADER
|
(package private) java.util.Set |
pdomChildren
|
(package private) java.util.Set |
pdomFrontier
|
(package private) Block |
pdomParent
|
static int |
REDUCIBLE
|
(package private) StackOptimizer |
stackOptimizer
|
Subroutine |
sub
|
(package private) Tree |
tree
|
Fields inherited from class EDU.purdue.cs.bloat.util.GraphNode |
postIndex, preds, preIndex, succs |
Constructor Summary | |
(package private) |
Block(EDU.purdue.cs.bloat.editor.Label label,
FlowGraph graph)
Constructor. |
Method Summary | |
(package private) int |
blockType()
Returns the type of this Block. |
(package private) java.util.Collection |
domChildren()
Returns the basic blocks that this Block immediately dominates. |
(package private) java.util.Collection |
domFrontier()
Returns the blocks that are in this block's dominance frontier. |
boolean |
dominates(Block block)
Returns whether or this Block dominates another given Block. |
(package private) Block |
domParent()
Returns the immediate dominator of this Block. |
FlowGraph |
graph()
Returns the CFG containing the block. |
Block |
header()
|
EDU.purdue.cs.bloat.editor.Label |
label()
Returns the label associated with this block. |
(package private) java.util.Collection |
pdomChildren()
Returns the children of this Block in the CFG's postdominator tree. |
(package private) java.util.Collection |
pdomFrontier()
Returns the postdominance frontier for this node. |
(package private) Block |
pdomParent()
Returns the parent of this Block in the CFG's postdominator tree. |
boolean |
postdominates(Block block)
Determines whether or not this block postdominates a given block. |
(package private) void |
setBlockType(int blockType)
Sets the type of this Block. |
(package private) void |
setDomParent(Block block)
Specifies that Block dominates this Block (parent in the dominator tree, the immediate dominator). |
void |
setHeader(Block header)
|
(package private) void |
setPdomParent(Block block)
Sets this Block's parent in the postdominator tree. |
void |
setTree(Tree tree)
Sets the expression tree for this block. |
StackOptimizer |
stackOptimizer()
Returns the stack optimizer for this block. |
java.lang.String |
toString()
Returns a string representation of this block. |
Tree |
tree()
Returns the expression tree for this block. |
void |
visit(TreeVisitor visitor)
|
void |
visitChildren(TreeVisitor visitor)
Visits the expression tree contained in this block. |
Methods inherited from class EDU.purdue.cs.bloat.util.GraphNode |
preds, succs |
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
Field Detail |
public static final int NON_HEADER
public static final int IRREDUCIBLE
public static final int REDUCIBLE
FlowGraph graph
EDU.purdue.cs.bloat.editor.Label label
Tree tree
Block domParent
Block pdomParent
java.util.Set domChildren
java.util.Set pdomChildren
java.util.Set domFrontier
java.util.Set pdomFrontier
int blockType
Block header
StackOptimizer stackOptimizer
public boolean built
public Subroutine sub
Constructor Detail |
Block(EDU.purdue.cs.bloat.editor.Label label, FlowGraph graph)
label
- The block's label. The label may be thought of as the line
of code at which the block begins.graph
- The CFG containing the block.Method Detail |
public StackOptimizer stackOptimizer()
public Tree tree()
public void setTree(Tree tree)
public FlowGraph graph()
public EDU.purdue.cs.bloat.editor.Label label()
public void visitChildren(TreeVisitor visitor)
public void visit(TreeVisitor visitor)
void setBlockType(int blockType)
int blockType()
public void setHeader(Block header)
public Block header()
public java.lang.String toString()
toString
in class java.lang.Object
java.util.Collection domChildren()
Block domParent()
void setDomParent(Block block)
block
- Block that dominates this Block.public boolean dominates(Block block)
java.util.Collection pdomChildren()
Block pdomParent()
void setPdomParent(Block block)
public boolean postdominates(Block block)
DominatorTree
java.util.Collection domFrontier()
DominanceFrontier
java.util.Collection pdomFrontier()
|
SandMark version 2.0 Mon Jun 17 12:30:47 MST 2002 |
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |