coins.backend.ana
Class DFST

java.lang.Object
  extended bycoins.backend.ana.DFST
All Implemented Interfaces:
LocalAnalysis

public class DFST
extends java.lang.Object
implements LocalAnalysis

Depth First Spanning Tree of the CFG.


Field Summary
static coins.backend.ana.DFST.Analyzer analyzer
          Factory singleton.
 int[] dfn
          Depth First Number (reverse postorder)
 int[] dfnPre
          Depth First Number (preorder)
 int maxDfn
          Maximum dfn
 BasicBlk[] parent
          Link to parent basic block.
 
Method Summary
 BasicBlk[] blkVectorByPre()
          Return the vector of basic block in DFN preorder.
 BasicBlk[] blkVectorByRPost()
          Return the vector of basic block in DFN reverse postorder.
(package private)  void depthFirstSearch(BasicBlk blk, BasicBlk from)
          Depth First Search
 boolean isAncestorOf(BasicBlk x, BasicBlk y)
          Return true if node x is an ancestor of node y in the DFST.
 boolean isUpToDate()
          Return true if this analysis is up to date.
 void printAfterBlock(BasicBlk blk, java.io.PrintWriter output)
          Called after each Basic Block.
 void printAfterFunction(java.io.PrintWriter out)
          Called after function body.
 void printAfterStmt(LirNode stmt, java.io.PrintWriter output)
          Called after each statement.
 void printBeforeBlock(BasicBlk blk, java.io.PrintWriter output)
          Called before each Basic Block.
 void printBeforeFunction(java.io.PrintWriter output)
          Debug print entries required by interface.
 void printBeforeStmt(LirNode stmt, java.io.PrintWriter output)
          Called before each statement.
 void printIt(java.io.PrintWriter out)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

analyzer

public static final coins.backend.ana.DFST.Analyzer analyzer
Factory singleton.


dfn

public final int[] dfn
Depth First Number (reverse postorder)


dfnPre

public final int[] dfnPre
Depth First Number (preorder)


parent

public final BasicBlk[] parent
Link to parent basic block.


maxDfn

public final int maxDfn
Maximum dfn

Method Detail

depthFirstSearch

void depthFirstSearch(BasicBlk blk,
                      BasicBlk from)
Depth First Search


isUpToDate

public boolean isUpToDate()
Return true if this analysis is up to date.

Specified by:
isUpToDate in interface LocalAnalysis

blkVectorByRPost

public BasicBlk[] blkVectorByRPost()
Return the vector of basic block in DFN reverse postorder. Zeroth element is null, entry block is in [1].


blkVectorByPre

public BasicBlk[] blkVectorByPre()
Return the vector of basic block in DFN preorder. Zeroth element is null, entry block is in [1].


isAncestorOf

public boolean isAncestorOf(BasicBlk x,
                            BasicBlk y)
Return true if node x is an ancestor of node y in the DFST.


printBeforeFunction

public void printBeforeFunction(java.io.PrintWriter output)
Debug print entries required by interface.

Specified by:
printBeforeFunction in interface LocalAnalysis

printBeforeBlock

public void printBeforeBlock(BasicBlk blk,
                             java.io.PrintWriter output)
Description copied from interface: LocalAnalysis
Called before each Basic Block.

Specified by:
printBeforeBlock in interface LocalAnalysis

printAfterBlock

public void printAfterBlock(BasicBlk blk,
                            java.io.PrintWriter output)
Description copied from interface: LocalAnalysis
Called after each Basic Block.

Specified by:
printAfterBlock in interface LocalAnalysis

printBeforeStmt

public void printBeforeStmt(LirNode stmt,
                            java.io.PrintWriter output)
Description copied from interface: LocalAnalysis
Called before each statement.

Specified by:
printBeforeStmt in interface LocalAnalysis

printAfterStmt

public void printAfterStmt(LirNode stmt,
                           java.io.PrintWriter output)
Description copied from interface: LocalAnalysis
Called after each statement.

Specified by:
printAfterStmt in interface LocalAnalysis

printAfterFunction

public void printAfterFunction(java.io.PrintWriter out)
Description copied from interface: LocalAnalysis
Called after function body.

Specified by:
printAfterFunction in interface LocalAnalysis

printIt

public void printIt(java.io.PrintWriter out)