joeq.Compiler.Analysis.IPSSA
Class DefinitionGraph

java.lang.Object
  extended by joeq.Compiler.Analysis.IPSSA.DefinitionGraph

public abstract class DefinitionGraph
extends java.lang.Object

This is a graph consisting of definitions that uses as much sharing as possible. Provides a dot printer.

Author:
V.Benjamin Livshits

Nested Class Summary
static interface DefinitionGraph.EdgeInfo
           
 
Constructor Summary
DefinitionGraph()
           
 
Method Summary
 void addEdge(SSADefinition def1, SSADefinition def2)
          By default a true predicate edge is added
abstract  void addEdge(SSADefinition def1, SSADefinition def2, DefinitionGraph.EdgeInfo ei)
           
abstract  SSAIterator.DefinitionIterator getAllReached(SSADefinition def)
          All reaching definitions
abstract  SSAIterator.DefinitionIterator getAllReaching(SSADefinition def)
          All reaching definitions
 int getEdgeCount()
           
abstract  DefinitionGraph.EdgeInfo getEdgeInfo(SSADefinition def1, SSADefinition def2)
          null returned means that there is no edge
 int getNodeCount()
           
abstract  SSAIterator.DefinitionIterator getReached(SSADefinition def)
           
abstract  SSAIterator.DefinitionIterator getReaching(SSADefinition def)
          One level of pointees
 java.util.Set getRoots()
          Retrieves all roots of the forest that we are constructing
 java.util.Set getTerminals()
           
abstract  boolean isRootNode(SSADefinition def)
           
abstract  boolean isTerminalNode(SSADefinition def)
           
 void printDot(java.io.PrintStream out)
          Prints the subtree starting at definition def in a dot graph form.
 void printReachedToDot(SSADefinition def, java.io.PrintStream out)
           
 void printReachingToDot(SSADefinition def, java.io.PrintStream out)
           
 java.lang.String toString()
           
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

DefinitionGraph

public DefinitionGraph()
Method Detail

getEdgeCount

public int getEdgeCount()

getNodeCount

public int getNodeCount()

addEdge

public abstract void addEdge(SSADefinition def1,
                             SSADefinition def2,
                             DefinitionGraph.EdgeInfo ei)

isRootNode

public abstract boolean isRootNode(SSADefinition def)

isTerminalNode

public abstract boolean isTerminalNode(SSADefinition def)

getRoots

public java.util.Set getRoots()
Retrieves all roots of the forest that we are constructing


getTerminals

public java.util.Set getTerminals()

getReached

public abstract SSAIterator.DefinitionIterator getReached(SSADefinition def)

getAllReached

public abstract SSAIterator.DefinitionIterator getAllReached(SSADefinition def)
All reaching definitions


getReaching

public abstract SSAIterator.DefinitionIterator getReaching(SSADefinition def)
One level of pointees


getAllReaching

public abstract SSAIterator.DefinitionIterator getAllReaching(SSADefinition def)
All reaching definitions


toString

public java.lang.String toString()
Overrides:
toString in class java.lang.Object

printDot

public void printDot(java.io.PrintStream out)
Prints the subtree starting at definition def in a dot graph form.


printReachedToDot

public void printReachedToDot(SSADefinition def,
                              java.io.PrintStream out)

printReachingToDot

public void printReachingToDot(SSADefinition def,
                               java.io.PrintStream out)

addEdge

public void addEdge(SSADefinition def1,
                    SSADefinition def2)
By default a true predicate edge is added


getEdgeInfo

public abstract DefinitionGraph.EdgeInfo getEdgeInfo(SSADefinition def1,
                                                     SSADefinition def2)
null returned means that there is no edge