coins.aflow
Class SetRefReprHirImpl

java.lang.Object
  extended bycoins.aflow.SetRefReprImpl
      extended bycoins.aflow.SetRefReprHirImpl
All Implemented Interfaces:
SetRefRepr, SetRefReprHir
Direct Known Subclasses:
SetRefReprHirEImpl

public class SetRefReprHirImpl
extends SetRefReprImpl
implements SetRefReprHir

Implementation of the SetRefRepr interface for HIR


Field Summary
 Flow flow
           
protected  Stmt fStmt
           
 HirRoot hirRoot
           
 
Fields inherited from class coins.aflow.SetRefReprImpl
fBBlock, fDefSym, fFlags, fIR, flowRoot, fOpCode, fResults, fUseExpIdList, fUseNodeList, symRoot
 
Fields inherited from interface coins.aflow.SetRefRepr
HAS_CONTROL, IS_RETURN, SETS
 
Constructor Summary
protected SetRefReprHirImpl(HIR pSubtree, BBlock pBBlock)
           
 
Method Summary
 java.util.List callNodes()
           
protected static boolean checkWhetherBranch(Stmt pStmt)
           
 IR defNode()
          Returns the IR node which links to the definitely defined (set) symbol.
 FlowAnalSym defSym()
          Returns the symbol that is definitely defined in this SetRefRepr.
 java.util.List exps()
           
protected  java.util.List exps(boolean pFromTop, boolean pFromLeft)
           
protected  java.util.List expsUnder(HIR pSubtree)
           
protected  java.util.Set flowAnalSymNodesUnder(HIR pSubtree)
           
protected  java.util.Set flowAnalSymsUnder(HIR pHIR)
           
 Stmt getStmt()
          Returns the Stmt node that originated this SetRefReprHir.
 boolean hasCallWithSideEffect()
           
protected static boolean hasDefiniteValue(Exp pExp)
           
 java.util.Set lhsSyms()
          Returns the set of symbols that correspond to the set of nodes that are within the LHS of this SetRefRepr.
 java.util.Set modSyms()
          modSyms: //##25-1 Get the set of FlowAnalSym symbols whose value is set during the evaluation of the subtree corresponding to this SetRefRepr.
 java.util.Set modSyms00()
          Returns the set of symbols that are accessed by its name in the subprogram containing this SetRefRepr and possibly defined in this SetRefRepr.
protected  void modSymsUnder(HIR pHIR, java.util.Set pModSyms)
           
protected  java.util.Set symsModifiedForLhsExp(Exp pExp)
          Get the set of symbols that may be modified when pExp is used as LHS (left hand side) expression.
 java.util.List useNodeList()
          Returns the List of nodes that are associated with a Sym that are used (read), in the depth first order that appears under the subtree returned by getIR().
protected  java.util.List useNodeList(boolean pFromTop, boolean pFromLeft)
           
 boolean writesToDefiniteAddress()
           
 
Methods inherited from class coins.aflow.SetRefReprImpl
allFalse, defFlowExpId, expIterator, expListIterator, expListIterator, expListIteratorFromBottom, getBBlock, getDAvailIn, getDDefIn, getDDefined, getDefSym, getDExposed, getDKill, getDReach, getDUsed, getFlag, getFlowExpIds, getIR, getPDefined, getPEKill, getPExposed, getPKill, getPLiveOut, getPReach, getPUsed, getUseFlowExpIds, hasControl, isReturn, nodeIterator, nodeListIterator, nodeListIterator, setFlag, sets, topUseNode, toString, useNodeIterator, useSyms
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface coins.aflow.SetRefRepr
allFalse, defFlowExpId, expIterator, expListIterator, expListIterator, getBBlock, getDAvailIn, getDDefIn, getDDefined, getDefSym, getDExposed, getDKill, getDReach, getDUsed, getFlag, getIR, getPDefined, getPEKill, getPExposed, getPKill, getPLiveOut, getPReach, getPUsed, hasControl, isReturn, nodeIterator, nodeListIterator, nodeListIterator, setFlag, sets, topUseNode, toString, useNodeIterator, useSyms
 

Field Detail

fStmt

protected Stmt fStmt

hirRoot

public final HirRoot hirRoot

flow

public final Flow flow
Constructor Detail

SetRefReprHirImpl

protected SetRefReprHirImpl(HIR pSubtree,
                            BBlock pBBlock)
Method Detail

getStmt

public Stmt getStmt()
Description copied from interface: SetRefReprHir
Returns the Stmt node that originated this SetRefReprHir. This is usually same as getIR(), but is differnet when this SetRefReprHir originates from an IfStmt.

Specified by:
getStmt in interface SetRefReprHir

useNodeList

public java.util.List useNodeList()
Description copied from interface: SetRefRepr
Returns the List of nodes that are associated with a Sym that are used (read), in the depth first order that appears under the subtree returned by getIR(). Nodes that correspond to Syms that are possibly used are included.

Specified by:
useNodeList in interface SetRefRepr

exps

public java.util.List exps()
Specified by:
exps in class SetRefReprImpl

defNode

public IR defNode()
Description copied from interface: SetRefRepr
Returns the IR node which links to the definitely defined (set) symbol. Returns null if sets() returns false.

Specified by:
defNode in interface SetRefRepr
Returns:
the IR node which links to the defined (set) symbol.

modSyms

public java.util.Set modSyms()
modSyms: //##25-1 Get the set of FlowAnalSym symbols whose value is set during the evaluation of the subtree corresponding to this SetRefRepr.

Specified by:
modSyms in interface SetRefRepr
Returns:
the set of symbols to be modified.

modSymsUnder

protected void modSymsUnder(HIR pHIR,
                            java.util.Set pModSyms)

flowAnalSymsUnder

protected java.util.Set flowAnalSymsUnder(HIR pHIR)

lhsSyms

public java.util.Set lhsSyms()
Description copied from interface: SetRefRepr
Returns the set of symbols that correspond to the set of nodes that are within the LHS of this SetRefRepr. Returns null if sets() returns false. The return value is a superset of the return value of getModSyms().

Specified by:
lhsSyms in interface SetRefRepr

expsUnder

protected java.util.List expsUnder(HIR pSubtree)

flowAnalSymNodesUnder

protected java.util.Set flowAnalSymNodesUnder(HIR pSubtree)

useNodeList

protected java.util.List useNodeList(boolean pFromTop,
                                     boolean pFromLeft)

exps

protected java.util.List exps(boolean pFromTop,
                              boolean pFromLeft)
Specified by:
exps in class SetRefReprImpl

hasCallWithSideEffect

public boolean hasCallWithSideEffect()
Specified by:
hasCallWithSideEffect in interface SetRefRepr

callNodes

public java.util.List callNodes()
Specified by:
callNodes in interface SetRefRepr

checkWhetherBranch

protected static boolean checkWhetherBranch(Stmt pStmt)

writesToDefiniteAddress

public boolean writesToDefiniteAddress()
Specified by:
writesToDefiniteAddress in interface SetRefRepr

hasDefiniteValue

protected static boolean hasDefiniteValue(Exp pExp)

defSym

public FlowAnalSym defSym()
Description copied from interface: SetRefRepr
Returns the symbol that is definitely defined in this SetRefRepr. Returns null if sets() returns false, or, for example, in HIR, if this SetRefRepr corresponds to an assignment to an array element.

Specified by:
defSym in interface SetRefRepr

modSyms00

public java.util.Set modSyms00()
Description copied from interface: SetRefRepr
Returns the set of symbols that are accessed by its name in the subprogram containing this SetRefRepr and possibly defined in this SetRefRepr. Symbols that can be externally defined (i.e. via exteranl calls) are included as well (differs from modSym in this point). //##25-1 This is used in FindPEKill, FindDEGen. //##25-1

Specified by:
modSyms00 in interface SetRefRepr

symsModifiedForLhsExp

protected java.util.Set symsModifiedForLhsExp(Exp pExp)
Get the set of symbols that may be modified when pExp is used as LHS (left hand side) expression.

Parameters:
pExp - LHS expression that is used as LHS operand of AssignStmt, call-operand, etc.
Returns:
the set of symbols that may be modified.