coins.ssa
Class PREQP

java.lang.Object
  extended bycoins.ssa.PREQP
All Implemented Interfaces:
LocalTransformer, Transformer

public class PREQP
extends java.lang.Object
implements LocalTransformer


Field Summary
(package private)  MemoryAliasAnalyze alias
           
(package private)  java.util.Hashtable cpMap
           
(package private)  boolean[] initialized
           
(package private)  int maxId
           
(package private)  boolean[] memArray
           
(package private)  java.util.Hashtable modMap
           
(package private)  java.util.Hashtable occurMap
           
(package private)  java.util.Hashtable phiMap
           
(package private)  java.util.Hashtable rPhiMap
           
static int THR
           
static int THR2
          The threshold of debug print
(package private)  coins.ssa.PREQP.VElem unavailVar
           
 
Constructor Summary
PREQP(SsaEnvironment e, SsaSymTab tab, int m)
          Constructor
 
Method Summary
 boolean doIt(Data data, ImList args)
          Transform the DATA component.
 boolean doIt(Function function, ImList args)
          Do optimize using Efficient Question Propagation.
(package private)  boolean eqp(LirNode e, BasicBlk v, BasicBlk succ, LirNode[] visited)
           
(package private)  LirNode insertPhi(coins.ssa.PREQP.VElem v)
           
(package private)  void invoke()
          Do optimization using Efficient Question Propagation.
(package private)  void localInit(BasicBlk v)
           
(package private)  void maintainTableDeleteExp(LirNode node, BasicBlk b)
           
(package private)  void maintainTableDeletePhi(LirNode node, LirNode orgNode, BasicBlk b)
           
(package private)  void maintainTableInsertExp(BiLink q, LirNode node, BasicBlk b)
           
(package private)  void maintainTableInsertPhi(BiLink q, LirNode node, BasicBlk b)
           
(package private)  void maintainTableReplaceExp(LirNode old, LirNode newN, BasicBlk b)
           
(package private)  void maintainTableReplacePhi(LirNode old, LirNode newN, BasicBlk b)
           
(package private)  java.lang.String makeExpKey(LirNode n)
           
(package private)  java.lang.String makeLocalKey(BasicBlk blk, LirNode n)
           
(package private)  java.lang.String makeLocalKey2(BasicBlk blk, BasicBlk succ, LirNode n)
           
(package private)  java.lang.String makeTmpPhiKey(BasicBlk blk, LirNode n)
          Make keys for expressions.
(package private)  boolean memIsHoistable(BasicBlk target, LirNode e)
           
(package private)  boolean modGraph(coins.ssa.PREQP.VElem v)
          The main routine of Efficient Question Propagation.
 java.lang.String name()
          Return the name of the transforming engine.
(package private)  java.lang.Boolean postEqp(LirNode e, BasicBlk v, LirNode[] pVisited)
           
(package private)  boolean propagate(LirNode e, BasicBlk v, LirNode[] visited)
           
 java.lang.String subject()
          Return brief description of the tranformation.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

maxId

int maxId

THR

public static final int THR
See Also:
Constant Field Values

THR2

public static final int THR2
The threshold of debug print

See Also:
Constant Field Values

unavailVar

coins.ssa.PREQP.VElem unavailVar

occurMap

java.util.Hashtable occurMap

modMap

java.util.Hashtable modMap

phiMap

java.util.Hashtable phiMap

rPhiMap

java.util.Hashtable rPhiMap

cpMap

java.util.Hashtable cpMap

initialized

boolean[] initialized

alias

MemoryAliasAnalyze alias

memArray

boolean[] memArray
Constructor Detail

PREQP

public PREQP(SsaEnvironment e,
             SsaSymTab tab,
             int m)
Constructor

Parameters:
e - The environment of the SSA module
tab - The symbol tabel of the SSA module
m - The current mode
Method Detail

doIt

public boolean doIt(Data data,
                    ImList args)
Description copied from interface: LocalTransformer
Transform the DATA component.

Specified by:
doIt in interface LocalTransformer
Parameters:
data - DATA to be transformed.
args - list of optional arguments.
Returns:
true if transformation suceeded.

name

public java.lang.String name()
Description copied from interface: Transformer
Return the name of the transforming engine. Used for trace tag name.

Specified by:
name in interface Transformer
Returns:
the name of the transforming engine.

subject

public java.lang.String subject()
Description copied from interface: Transformer
Return brief description of the tranformation.

Specified by:
subject in interface Transformer
Returns:
brief description of the tranformation.

modGraph

boolean modGraph(coins.ssa.PREQP.VElem v)
The main routine of Efficient Question Propagation. Return the answer of the question to the expression `e' in the basic block `v'.

Parameters:
v - The current basic block
Returns:
The answer of the question

insertPhi

LirNode insertPhi(coins.ssa.PREQP.VElem v)

propagate

boolean propagate(LirNode e,
                  BasicBlk v,
                  LirNode[] visited)

eqp

boolean eqp(LirNode e,
            BasicBlk v,
            BasicBlk succ,
            LirNode[] visited)

makeTmpPhiKey

java.lang.String makeTmpPhiKey(BasicBlk blk,
                               LirNode n)
Make keys for expressions.

Parameters:
blk - The current basic block
Returns:
Key for the specified expression

makeLocalKey

java.lang.String makeLocalKey(BasicBlk blk,
                              LirNode n)

makeLocalKey2

java.lang.String makeLocalKey2(BasicBlk blk,
                               BasicBlk succ,
                               LirNode n)

makeExpKey

java.lang.String makeExpKey(LirNode n)

postEqp

java.lang.Boolean postEqp(LirNode e,
                          BasicBlk v,
                          LirNode[] pVisited)

maintainTableInsertExp

void maintainTableInsertExp(BiLink q,
                            LirNode node,
                            BasicBlk b)

maintainTableInsertPhi

void maintainTableInsertPhi(BiLink q,
                            LirNode node,
                            BasicBlk b)

maintainTableDeleteExp

void maintainTableDeleteExp(LirNode node,
                            BasicBlk b)

maintainTableReplaceExp

void maintainTableReplaceExp(LirNode old,
                             LirNode newN,
                             BasicBlk b)

maintainTableDeletePhi

void maintainTableDeletePhi(LirNode node,
                            LirNode orgNode,
                            BasicBlk b)

maintainTableReplacePhi

void maintainTableReplacePhi(LirNode old,
                             LirNode newN,
                             BasicBlk b)

memIsHoistable

boolean memIsHoistable(BasicBlk target,
                       LirNode e)

invoke

void invoke()
Do optimization using Efficient Question Propagation.


localInit

void localInit(BasicBlk v)

doIt

public boolean doIt(Function function,
                    ImList args)
Do optimize using Efficient Question Propagation.

Specified by:
doIt in interface LocalTransformer
Parameters:
function - L-function to be transformed.
args - list of optional arguments.
Returns:
true if transformation suceeded.