Package compiler :: Module pyassem :: Class FlowGraph
[hide private]
[frames] | no frames]

_ClassType FlowGraph

Known Subclasses:

Instance Methods [hide private]
 
__init__(self)
 
startBlock(self, block)
 
nextBlock(self, block=None)
 
newBlock(self)
 
startExitBlock(self)
 
_enable_debug(self)
 
_disable_debug(self)
 
emit(self, *inst)
 
getBlocksInOrder(self)
Return the blocks in reverse postorder
 
fixupOrder(self, blocks, default_next)
Fixup bad order introduced by DFS.
 
fixupOrderHonorNext(self, blocks, default_next)
Fix one problem with DFS.
 
fixupOrderForward(self, blocks, default_next)
Make sure all JUMP_FORWARDs jump forward
 
getBlocks(self)
 
getRoot(self)
Return nodes appropriate for use with dominator
 
getContainedGraphs(self)
Class Variables [hide private]
  _debug = 0
Method Details [hide private]

getBlocksInOrder(self)

 

Return the blocks in reverse postorder

i.e. each node appears before all of its successors

fixupOrderHonorNext(self, blocks, default_next)

 

Fix one problem with DFS.

The DFS uses child block, but doesn't know about the special "next" block. As a result, the DFS can order blocks so that a block isn't next to the right block for implicit control transfers.