coins.backend.ana
Class InterferenceGraph

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

public class InterferenceGraph
extends java.lang.Object
implements LocalAnalysis

Create interference graph and disturbance graph


Field Summary
static coins.backend.ana.InterferenceGraph.Analyzer analyzer
          Factory singleton.
static coins.backend.ana.InterferenceGraph.Analyzer2 analyzerCopyNotInterfere
          Factory singleton.
 
Method Summary
 int disturbedFactor(int x)
          Return disturbed factor of x.
 int disturbingFactor(int x)
          Return disturbing factor of x.
 NumberSet disturbSet(int x)
          Return the set of variables disturbing x.
 NumberSet disturbSet(Symbol x)
          Return the set of variables disturbing x.
 boolean interfere(int x, int y)
          Return true if register x interferes register y.
 boolean interfere(Symbol x, Symbol y)
          Return true if register x interferes register y
 NumberSet interfereSet(int x)
          Return the list of variables interfering x.
 NumberSet interfereSet(Symbol x)
          Return the list of variables interfering x.
 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 output)
          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 setDisturb(int x, int y)
           
 void setDisturb(Symbol x, Symbol y)
           
 boolean setInterfere(int x, int y)
           
 boolean setInterfere(Symbol x, Symbol y)
          Add new edge (x, y) to IG.
 boolean unsetInterfere(int x, int y)
           
 
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.InterferenceGraph.Analyzer analyzer
Factory singleton.


analyzerCopyNotInterfere

public static final coins.backend.ana.InterferenceGraph.Analyzer2 analyzerCopyNotInterfere
Factory singleton.

Method Detail

setInterfere

public boolean setInterfere(Symbol x,
                            Symbol y)
Add new edge (x, y) to IG. Return true if it's new.


setInterfere

public boolean setInterfere(int x,
                            int y)

unsetInterfere

public boolean unsetInterfere(int x,
                              int y)

setDisturb

public void setDisturb(Symbol x,
                       Symbol y)

setDisturb

public void setDisturb(int x,
                       int y)

interfere

public boolean interfere(int x,
                         int y)
Return true if register x interferes register y. Names of register variables are index numbers.


interfere

public boolean interfere(Symbol x,
                         Symbol y)
Return true if register x interferes register y


interfereSet

public NumberSet interfereSet(int x)
Return the list of variables interfering x.


interfereSet

public NumberSet interfereSet(Symbol x)
Return the list of variables interfering x.


disturbSet

public NumberSet disturbSet(int x)
Return the set of variables disturbing x.


disturbSet

public NumberSet disturbSet(Symbol x)
Return the set of variables disturbing x.


disturbingFactor

public int disturbingFactor(int x)
Return disturbing factor of x.


disturbedFactor

public int disturbedFactor(int x)
Return disturbed factor of x.


isUpToDate

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

Specified by:
isUpToDate in interface LocalAnalysis

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 output)
Description copied from interface: LocalAnalysis
Called after function body.

Specified by:
printAfterFunction in interface LocalAnalysis