Package Libs :: Module libcontrolflow :: Class DominatorTree
[hide private]
[frames] | no frames]

Class DominatorTree

source code

Instance Methods [hide private]
  __init__(self, imm, addr, blocks=False, recursion=False)
This class takes a function start address and calculate all Dominator Tree related tables: - Predecessors - Iterated Predecessors - Dominators - Immediate Dominators - Post Dominators - Immediate Post Dominators @type imm: Debbuger OBJECT @param imm: Debbuger @type addr: DWORD @param addr: function start address @type blocks: DICTIONARY|False @param blocks: Optionally you can provide a dictionary with the node address as key and a list of edges (mainly for testing purposes).
  Initializate(self)
  CalculatePredecessors(self)
  CalculateIterativePredecessors(self)
  __iterative_predecessors_helper(self, base, newbase)
  CalculateDominators(self)
Based in algorithm from "Advanced COMPILER DESIGN IMPLEMENTATION"
  CalculateImmediateDominators(self)
  CalculatePostAndImmediatePostDominators(self)
  getDominators(self)
  getImmediateDominators(self)
  getPostDominators(self)
  getImmediatePostDominators(self)
  getPredecessors(self)
  getIteratedPredecessors(self)
  getControlFlowGraph(self)

Method Details [hide private]

__init__(self, imm, addr, blocks=False, recursion=False)
(Constructor)

source code 

This class takes a function start address and calculate all Dominator Tree related tables:
- Predecessors
- Iterated Predecessors
- Dominators
- Immediate Dominators
- Post Dominators
- Immediate Post Dominators

@type  imm: Debbuger OBJECT
@param imm: Debbuger

@type  addr: DWORD
@param addr: function start address

@type  blocks: DICTIONARY|False
@param blocks: Optionally you can provide a dictionary with the node address as key and a list of edges (mainly for testing purposes).

Initializate(self)

source code 
None

CalculatePredecessors(self)

source code 
None

CalculateIterativePredecessors(self)

source code 
None

__iterative_predecessors_helper(self, base, newbase)

source code 
None

CalculateDominators(self)

source code 
Based in algorithm from "Advanced COMPILER DESIGN IMPLEMENTATION"

CalculateImmediateDominators(self)

source code 
None

CalculatePostAndImmediatePostDominators(self)

source code 
None

getDominators(self)

source code 
None

getImmediateDominators(self)

source code 
None

getPostDominators(self)

source code 
None

getImmediatePostDominators(self)

source code 
None

getPredecessors(self)

source code 
None

getIteratedPredecessors(self)

source code 
None

getControlFlowGraph(self)

source code 
None