coins.flow
Class DataFlowImpl

java.lang.Object
  extended bycoins.flow.DataFlowImpl
All Implemented Interfaces:
DataFlow
Direct Known Subclasses:
DataFlowHirImpl

public class DataFlowImpl
extends java.lang.Object
implements DataFlow

Implementation of the DataFlow interface. There are some dependencies between the methods in this class. For example, findReach() mustn't be called before both findDef() and findKill() have been called, and findKill() in turn depends on the result of findDefined(). Access restrictions (or the like) that reflect these dependencies are not yet implemented. Please be careful in using. findAll() method calls these methods in the correct order.


Field Summary
protected  DefVector DEF_INVERTED
           
protected  DefVector DEF_ZERO
           
protected  ExpVector EXP_INVERTED
           
protected  ExpVector EXP_ZERO
           
 int fDbgFlow
           
protected  int fDefCount
           
protected  int[] fDefNodeIndexTable
           
protected  FlowAnalSym[] fFlowAnalSymTable
           
 Flow flow
           
 FlowRoot flowRoot
           
protected  RecordAlias fRecordAlias
           
protected  ShowDataFlow fShowDataFlow
           
protected  SubpFlow fSubpFlow
           
protected  java.util.Set[] fUndefinedUseNodesOfSym
           
 HirRoot hirRoot
           
 IoRoot ioRoot
           
 ShowDataFlowByName showDataFlowByName
           
 SymRoot symRoot
           
 
Constructor Summary
DataFlowImpl()
           
DataFlowImpl(FlowRoot pFlowRoot, SubpFlow pSubpFlow)
          Constructs a DataFlow instance and prepares for DFA.
 
Method Summary
protected  void addEGenExpId(java.util.Set pEGenSet, java.util.Set pEKillSet, SetRefRepr pSetRefRepr)
          addEGenExpId EGen computation by using ExpId.
protected  void allocateSpace()
          allocateSpace Allocates space to store BitVector instances for the entire flow.
protected  java.util.Set callModSyms(IR pCallNode, SubpFlow pCurrentSubpFlow)
           
 void clean()
          Cleans the environment that may contain junk information for the current DFA.
 int defLookup(int pNodeIndex)
          Changes the IR node index into the "Def" index.
 int defReverseLookup(int pBitPosition)
          Changes the "Def" index into the IR node index.
 int expLookup(int pExpIdIndex)
          Changes the ExpId index into the position in the ExpVector.
 int expReverseLookup(int pBitPosition)
          Changes the position in the ExpVector into the ExpId index.
 void findAll()
          Finds and sets all the data flow information.
 void findAllBitVectors()
          Finds and sets all the BitVectors, that is, Def, Kill, In, Out, Reach, Defined, Exposed, EGen, EKill, AvailIn, AvailOut, LiveIn, LiveOut, DefIn, and DefOut vectors.
 void findAvailInAvailOut()
          Finds and sets the AvailIn and AvailOut vectors from the EGen and EKill vectors using the data flow equations.
 void findBasic()
          Finds and sets the data flow items that are independent of the control flow, that is, Def, Kill, Defined, Exposed, EGen, and EKill vectors.
 void findDef()
          Finds and sets the Def vectors for the entire flow.
 void findDef(BBlock pBBlock)
          Finds and sets the Def vector for the given BBlock.
 void findDefInDefOut()
          Finds and sets the DefIn and DefOut vectors from the Defined vectors using the data flow equations.
 void findDefined()
          Finds and sets the Defined vectors for the entire flow.
 void findDefined(BBlock pBBlock)
          Finds and sets the Defined vector for the given BBlock.
 void findDefUse()
          Finds and sets the DefUseList for each FlowAnalSym without considering side effects of call and alias.
 void findDefUseExhaustively()
          Finds and sets the DefUseList for each FlowAnalSym considering side effects of call and alias.
 void findEGen()
          Finds and sets the EGen vectors for the entire flow.
 void findEGen(BBlock pBBlock)
          Finds and sets the EGen vector for the given BBlock.
 void findEKill()
          Finds and sets the EKill vectors for the entire flow.
 void findEKill(BBlock pBBlock)
          Finds and sets the EGen vector for the given BBlock.
 void findExposed()
          Finds and sets the Exposed vectors for the entire flow.
 void findExposed(BBlock pBBlock)
          Finds and sets the Exposed vector for the given BBlock.
 void findKill()
          Finds and sets the Kill vectors for the entire flow.
 void findKill(BBlock pBBlock)
          Finds and sets the Kill vector for the given BBlock using the Defined vector for that BBlock.
 void findLiveInLiveOut()
          Finds and sets the LiveIn and LiveOut vectors from the Exposed and Defined vectors using the data flow equations.
 void findReach()
          Finds and sets the Reach vectors from the Def and Kill vectors using the data flow equations.
 void findUsed()
          Finds and sets the Used vectors for the entire flow.
 void findUsed(BBlock pBBlock)
          Finds and sets the Used vector for the given BBlock.
 void findUseDef()
          Find UseDef relations and DefUse relations without considering side effects of call and alias.
protected  void findUseDef(BBlock pBBlock, boolean pExhaustive)
          findUseDef Compute both DefUse relations and UseDef relations for pBBlock.
 void findUseDefExhaustively()
          Find UseDef relations and DefUse relations considering side effects of call and alias.
 java.util.List getBBlockList()
          Returns the List of BBlocks in the flow.
 int getDefCount()
          getDefCount
 int getDefIndex(int NodeIndex)
          getDefIndex
 int getDefNodeIndex(int pDefSetRefReprNo)
          getNodeIndex
 FlowAnalSym getFlowAnalSym(int ExpIndex)
          getExpId
 int getFlowAnalSymCount()
          // getExpIdCount getFlowAnalSymCount
 IR getNode(int pNodeIndex)
          getNode(int) Returns the node that has the given index.
 IR getNodeFromDefIndex(int pDefIndex)
          Returns the IR node that corresponds to the given DefSetRefRepr index (entry of the DefVector).
 int getPointCount()
          getPointCount
 java.util.Set getUndefinedUseNodeOfSym(FlowAnalSym lSym)
           
 java.util.Set getUseFlowAnalSyms(FlowAnalSym pFlowAnalSym)
          Returns the Set of ExpIds that are contained in the given ExpId and are used.
 java.util.Set getUseFlowAnalSyms(IR pSubtree)
          !!HIR Returns the Set of ExpIds that fall under the given subtree and are used.
 java.util.Set getUseFlowAnalSymsForHir(HIR pSubtree)
           
protected  void handleCall(IR pCallNode, SubpFlow pSubpFlow, java.util.Set pDDefSyms, ListValuedMap pSymToPDefNode)
          findUseDefObsolete Compute both DefUse relations and UseDef relations for pBBlock.
protected  void initiateDataFlow()
           
protected  void recordExpId()
          allocateExpId Creates a table that retrieves ExpId from its index value.
(package private)  void recordSetRefReprs()
          Records the SetRefReprs each BBlock contains.
 void showAll()
          Shows all the information found in this DFA.
 void showAllBitVectors()
          Shows all the BitVectors.
 void showAvailIn()
          Shows the AvailIn vector for every BBlock.
 void showAvailInAvailOutRelated()
          Shows BitVectors related to (needed to solve) AvailIn/AvailOut vectors, that is, EGen, EKill, AvailIn, and AvailOut vectors.
 void showAvailOut()
          Shows the AvailOut vector for every BBlock.
 void showBasic()
          Shows all the data flow items that are independent of the control flow, that is, Def, Kill, Defined, Exposed, EGen, and EKill vectors.
 void showDef()
          Shows the Def vector for every BBlock.
 void showDefIn()
          Shows the DefIn vector for every BBlock.
 void showDefInDefOutRelated()
          Shows BitVectors related to (needed to solve) DefIn/DefOut vectors, that is, Defined, DefIn, and DefOut vectors.
 void showDefined()
          Shows the Defined vector for every BBlock.
 void showDefOut()
          Shows the DefOut vector for every BBlock.
 void showDefUse()
          Shows the DefUseList for each FlowAnalSym.
 void showDefVectors()
          Shows all the DefVectors for all the BBlocks.
 void showEGen()
          Shows the EGen vector for every BBlock.
 void showEKill()
          Shows the EKill vector for every BBlock.
 void showExposed()
          Shows the Exposed vector for every BBlock.
 void showExpVectors()
          Shows all the ExpVectors for all the BBlocks.
 void showKill()
          Shows the Kill vector for every BBlock.
 void showLiveIn()
          Shows the LiveIn vector for every BBlock.
 void showLiveInLiveOutRelated()
          Shows BitVectors related to (needed to solve) LiveIn/LiveOut vectors, that is, Exposed, Defined, LiveIn, and LiveOut vectors.
 void showLiveOut()
          Shows the LiveOut vector for every BBlock.
 void showReach()
          Shows the Reach vector for every BBlock.
 void showReachRelated()
          Shows BitVectors related to (needed to solve) Reach vectors, that is, Def, Kill, and Reach vectors.
 void showSolved()
          Shows all the data flow items data flow equations have found, that is, In, Out, Reach, AvailIn, AvailOut, LiveIn, LiveOut, DefIn, and DefOut vectors.
 void showSummary()
          Show summary of data flow information.
 void showUseDef()
          Shows the UseDefList for each FlowAnalSym.
(package private)  void showVector(BitVector pBitVector)
          Shows the given BitVector.
(package private)  void showVector(BitVector pBitVector, java.lang.String pComment)
          Shows the given BitVector w/ a comment(heading).
 void solveAll()
          Solves all the data flow equations to find In, Out, Reach, AvailIn, AvailOut, LiveIn, LiveOut, DefIn, and DefOut vectors.
(package private)  ExpVector toExpVector(java.util.Set pSymbolSet)
          toExpVector Converts the given Set of symbols to an ExpVector where each bit of the vector corresponds to an element in the Set set.
(package private)  java.util.Set toSet(ExpVector pExpVector)
          Converts the given ExpVector to a Set that has elements that correspond to the set bits of the ExpVector.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

flowRoot

public final FlowRoot flowRoot

ioRoot

public final IoRoot ioRoot

symRoot

public final SymRoot symRoot

hirRoot

public final HirRoot hirRoot

flow

public final Flow flow

showDataFlowByName

public ShowDataFlowByName showDataFlowByName

fSubpFlow

protected SubpFlow fSubpFlow

fShowDataFlow

protected ShowDataFlow fShowDataFlow

fDefCount

protected int fDefCount

DEF_ZERO

protected DefVector DEF_ZERO

DEF_INVERTED

protected DefVector DEF_INVERTED

EXP_ZERO

protected ExpVector EXP_ZERO

EXP_INVERTED

protected ExpVector EXP_INVERTED

fDefNodeIndexTable

protected int[] fDefNodeIndexTable

fFlowAnalSymTable

protected FlowAnalSym[] fFlowAnalSymTable

fUndefinedUseNodesOfSym

protected java.util.Set[] fUndefinedUseNodesOfSym

fRecordAlias

protected RecordAlias fRecordAlias

fDbgFlow

public final int fDbgFlow
Constructor Detail

DataFlowImpl

public DataFlowImpl(FlowRoot pFlowRoot,
                    SubpFlow pSubpFlow)
Constructs a DataFlow instance and prepares for DFA.


DataFlowImpl

public DataFlowImpl()
Method Detail

initiateDataFlow

protected void initiateDataFlow()

recordSetRefReprs

void recordSetRefReprs()
Records the SetRefReprs each BBlock contains. This is moved to HirSubpFlowImpl. //##63


getBBlockList

public java.util.List getBBlockList()
Returns the List of BBlocks in the flow. (Exclude null and 0-numbered BBlock)

Specified by:
getBBlockList in interface DataFlow
Returns:
the List of BBlocks in the flow.

recordExpId

protected void recordExpId()
allocateExpId Creates a table that retrieves ExpId from its index value.


getDefCount

public int getDefCount()
getDefCount

Specified by:
getDefCount in interface DataFlow
Returns:
the # of value-setting SetRefReprs.

getFlowAnalSymCount

public int getFlowAnalSymCount()
// getExpIdCount getFlowAnalSymCount

Specified by:
getFlowAnalSymCount in interface DataFlow
Returns:
the # of FlowAnalSyms generated in this flow.

getPointCount

public int getPointCount()
getPointCount

Specified by:
getPointCount in interface DataFlow
Returns:
the # of "Points" in this flow.

getFlowAnalSym

public FlowAnalSym getFlowAnalSym(int ExpIndex)
getExpId

Specified by:
getFlowAnalSym in interface DataFlow
Returns:
the ExpId that has the given index.

getDefIndex

public int getDefIndex(int NodeIndex)
getDefIndex

Specified by:
getDefIndex in interface DataFlow
Returns:
the DefSetRefRepr index (SetRefRepr no. that is assigned to value-setting SetRefReprs) of the node that has the given IR index.

getDefNodeIndex

public int getDefNodeIndex(int pDefSetRefReprNo)
getNodeIndex

Specified by:
getDefNodeIndex in interface DataFlow
Parameters:
pDefSetRefReprNo - index of value-setting SetRefRepr.
Returns:
the node index corresponding to the given "DefSetRefReprNo".

getNode

public IR getNode(int pNodeIndex)
getNode(int) Returns the node that has the given index.

Specified by:
getNode in interface DataFlow
Parameters:
pNodeIndex - index of the node to be gotten.
Returns:
the node that has the given index.

getNodeFromDefIndex

public IR getNodeFromDefIndex(int pDefIndex)
Returns the IR node that corresponds to the given DefSetRefRepr index (entry of the DefVector).

Specified by:
getNodeFromDefIndex in interface DataFlow
Returns:
the IR node that corresponds to the given DefSetRefRepr index (entry of the DefVector).

allocateSpace

protected void allocateSpace()
allocateSpace Allocates space to store BitVector instances for the entire flow.


findDef

public void findDef()
Finds and sets the Def vectors for the entire flow.

Specified by:
findDef in interface DataFlow

findDef

public void findDef(BBlock pBBlock)
Finds and sets the Def vector for the given BBlock.

Specified by:
findDef in interface DataFlow
Parameters:
pBBlock - BBlock whose Def vector to find.

findKill

public void findKill()
Finds and sets the Kill vectors for the entire flow. See #findDefined()

Specified by:
findKill in interface DataFlow

findKill

public void findKill(BBlock pBBlock)
Finds and sets the Kill vector for the given BBlock using the Defined vector for that BBlock.

Specified by:
findKill in interface DataFlow
Parameters:
pBBlock - BBlock whose Kill vector to find. See #findDefined()

findDefined

public void findDefined()
Finds and sets the Defined vectors for the entire flow.

Specified by:
findDefined in interface DataFlow

findDefined

public void findDefined(BBlock pBBlock)
Finds and sets the Defined vector for the given BBlock.

Specified by:
findDefined in interface DataFlow
Parameters:
pBBlock - BBlock whose Defined vector to find.

findUsed

public void findUsed()
Finds and sets the Used vectors for the entire flow.

Specified by:
findUsed in interface DataFlow

findUsed

public void findUsed(BBlock pBBlock)
Finds and sets the Used vector for the given BBlock.

Specified by:
findUsed in interface DataFlow
Parameters:
pBBlock - BBlock whose Used vector to find.

findExposed

public void findExposed()
Finds and sets the Exposed vectors for the entire flow.

Specified by:
findExposed in interface DataFlow

findExposed

public void findExposed(BBlock pBBlock)
Finds and sets the Exposed vector for the given BBlock.

Specified by:
findExposed in interface DataFlow
Parameters:
pBBlock - BBlock whose Exposed vector to find.

findEGen

public void findEGen()
Finds and sets the EGen vectors for the entire flow.

Specified by:
findEGen in interface DataFlow

addEGenExpId

protected void addEGenExpId(java.util.Set pEGenSet,
                            java.util.Set pEKillSet,
                            SetRefRepr pSetRefRepr)
addEGenExpId EGen computation by using ExpId. Result of alias analysis is considered in the computation.

Parameters:
pEGenSet - accumulated set of EGen ExpIds in the current BBlock.
pEKillSet - accumulated set of EKill ExpIds in the current BBlock.
pSetRefRepr - SetRefRepr of an expression.

findEGen

public void findEGen(BBlock pBBlock)
Finds and sets the EGen vector for the given BBlock.

Specified by:
findEGen in interface DataFlow
Parameters:
pBBlock - BBlock whose EGen vector to find.

findEKill

public void findEKill()
Finds and sets the EKill vectors for the entire flow.

Specified by:
findEKill in interface DataFlow

findEKill

public void findEKill(BBlock pBBlock)
Finds and sets the EGen vector for the given BBlock.

Specified by:
findEKill in interface DataFlow
Parameters:
pBBlock - BBlock whose EGen vector to be found.

findReach

public void findReach()
Finds and sets the Reach vectors from the Def and Kill vectors using the data flow equations. Implementation of the algorithm on p.275 Nakada (1999). See #findDef() See #findKill()

Specified by:
findReach in interface DataFlow

findAvailInAvailOut

public void findAvailInAvailOut()
Finds and sets the AvailIn and AvailOut vectors from the EGen and EKill vectors using the data flow equations. Implementation of the algorithm on p. 280, Nakada (1999).

Specified by:
findAvailInAvailOut in interface DataFlow

findLiveInLiveOut

public void findLiveInLiveOut()
Finds and sets the LiveIn and LiveOut vectors from the Exposed and Defined vectors using the data flow equations. See #findExposed() See #findDefined()

Specified by:
findLiveInLiveOut in interface DataFlow

findDefInDefOut

public void findDefInDefOut()
Finds and sets the DefIn and DefOut vectors from the Defined vectors using the data flow equations. See #findDefined()

Specified by:
findDefInDefOut in interface DataFlow

defLookup

public int defLookup(int pNodeIndex)
Changes the IR node index into the "Def" index.

Specified by:
defLookup in interface DataFlow
Parameters:
pNodeIndex - index of the value-setting node (AssignStmt in HIR).

defReverseLookup

public int defReverseLookup(int pBitPosition)
Changes the "Def" index into the IR node index.

Specified by:
defReverseLookup in interface DataFlow
Parameters:
pBitPosition - index in the DefVector for which to find the node index.

expLookup

public int expLookup(int pExpIdIndex)
Changes the ExpId index into the position in the ExpVector. Currently does nothing.

Specified by:
expLookup in interface DataFlow
Parameters:
pExpIdIndex - index of ExpId.

expReverseLookup

public int expReverseLookup(int pBitPosition)
Changes the position in the ExpVector into the ExpId index. Currently does nothing.

Specified by:
expReverseLookup in interface DataFlow
Parameters:
pBitPosition - position in the ExpVector.

getUseFlowAnalSyms

public java.util.Set getUseFlowAnalSyms(IR pSubtree)
!!HIR Returns the Set of ExpIds that fall under the given subtree and are used. The ExpId that is attached to the "Def node" will not be included if the given subtree is a value-setting node (AssignStmt in HIR). The ExpId that corresponds to the given subtree is also included in the Set. Supports HIR only so far.

Specified by:
getUseFlowAnalSyms in interface DataFlow
Parameters:
pSubtree - IR node that is the root of the subtree to examine.
Returns:
the Set of ExpIds that fall under the given subtree and are used.

getUseFlowAnalSymsForHir

public java.util.Set getUseFlowAnalSymsForHir(HIR pSubtree)
Specified by:
getUseFlowAnalSymsForHir in interface DataFlow

getUseFlowAnalSyms

public java.util.Set getUseFlowAnalSyms(FlowAnalSym pFlowAnalSym)
Returns the Set of ExpIds that are contained in the given ExpId and are used. The ExpId that is attached to the "Def node" will not be included if the given ExpId is attached to a value-setting node (AssignStmt in HIR). The given ExpId is also contained in the returned Set.

Returns:
the Set of ExpIds that are contained and used. See #getUseExpIds()

clean

public void clean()
Cleans the environment that may contain junk information for the current DFA.


findBasic

public void findBasic()
Finds and sets the data flow items that are independent of the control flow, that is, Def, Kill, Defined, Exposed, EGen, and EKill vectors. See #findDef() See #findDefined() See #findKill() See #findExposed() See #findEGen() See #findEKill()

Specified by:
findBasic in interface DataFlow
See Also:
DataFlow.findDef(), DataFlow.findDefined(), DataFlow.findKill(), DataFlow.findExposed(), DataFlow.findEGen(), DataFlow.findEKill()

solveAll

public void solveAll()
Solves all the data flow equations to find In, Out, Reach, AvailIn, AvailOut, LiveIn, LiveOut, DefIn, and DefOut vectors. See #findInOut() See #findReach() See #findAvailInAvailOut() See #findLiveInLiveOut() See #findDefInDefOut()

Specified by:
solveAll in interface DataFlow
See Also:
DataFlow.findReach(), DataFlow.findAvailInAvailOut(), DataFlow.findLiveInLiveOut(), DataFlow.findDefInDefOut()

findAllBitVectors

public void findAllBitVectors()
Finds and sets all the BitVectors, that is, Def, Kill, In, Out, Reach, Defined, Exposed, EGen, EKill, AvailIn, AvailOut, LiveIn, LiveOut, DefIn, and DefOut vectors. See #findBasic() See #solveAll()

Specified by:
findAllBitVectors in interface DataFlow
See Also:
DataFlow.findBasic(), DataFlow.solveAll()

findDefUse

public void findDefUse()
Finds and sets the DefUseList for each FlowAnalSym without considering side effects of call and alias.

Specified by:
findDefUse in interface DataFlow

findDefUseExhaustively

public void findDefUseExhaustively()
Finds and sets the DefUseList for each FlowAnalSym considering side effects of call and alias.

Specified by:
findDefUseExhaustively in interface DataFlow

findUseDef

public void findUseDef()
Find UseDef relations and DefUse relations without considering side effects of call and alias.

Specified by:
findUseDef in interface DataFlow

findUseDefExhaustively

public void findUseDefExhaustively()
Find UseDef relations and DefUse relations considering side effects of call and alias.

Specified by:
findUseDefExhaustively in interface DataFlow

findUseDef

protected void findUseDef(BBlock pBBlock,
                          boolean pExhaustive)
findUseDef Compute both DefUse relations and UseDef relations for pBBlock.

Parameters:
pBBlock -

handleCall

protected void handleCall(IR pCallNode,
                          SubpFlow pSubpFlow,
                          java.util.Set pDDefSyms,
                          ListValuedMap pSymToPDefNode)
findUseDefObsolete Compute both DefUse relations and UseDef relations for pBBlock.


callModSyms

protected java.util.Set callModSyms(IR pCallNode,
                                    SubpFlow pCurrentSubpFlow)

findAll

public void findAll()
Finds and sets all the data flow information. This method consists of findAllBitVectors and findDefUse. See #findAllBitVectors() See #findDefUse()

Specified by:
findAll in interface DataFlow
See Also:
DataFlow.findAllBitVectors(), DataFlow.findDefUse()

showDef

public void showDef()
Shows the Def vector for every BBlock. See #findDef() See ShowDataFlow#showDef()

Specified by:
showDef in interface DataFlow

showKill

public void showKill()
Shows the Kill vector for every BBlock. See #findKill() See ShowDataFlow#showKill()

Specified by:
showKill in interface DataFlow

showReach

public void showReach()
Shows the Reach vector for every BBlock. See #findReach() See ShowDataFlow#showReach()

Specified by:
showReach in interface DataFlow

showDefined

public void showDefined()
Shows the Defined vector for every BBlock. See #findDefined() See ShowDataFlow#showDefined()

Specified by:
showDefined in interface DataFlow

showExposed

public void showExposed()
Shows the Exposed vector for every BBlock. See #findExposed() See ShowDataFlow#showExposed()

Specified by:
showExposed in interface DataFlow

showEGen

public void showEGen()
Shows the EGen vector for every BBlock. See #findEGen() See ShowDataFlow#showEGen()

Specified by:
showEGen in interface DataFlow

showEKill

public void showEKill()
Shows the EKill vector for every BBlock. See #findEKill() See ShowDataFlow#showEKill()

Specified by:
showEKill in interface DataFlow

showAvailIn

public void showAvailIn()
Shows the AvailIn vector for every BBlock. See #findAvailInAvailOut() See ShowDataFlow#showAvailIn()

Specified by:
showAvailIn in interface DataFlow

showAvailOut

public void showAvailOut()
Shows the AvailOut vector for every BBlock. See #findAvailInAvailOut() See ShowDataFlow#showAvailOut()

Specified by:
showAvailOut in interface DataFlow

showLiveIn

public void showLiveIn()
Shows the LiveIn vector for every BBlock. See #findLiveInLiveOut() See ShowDataFlow#showLiveIn()

Specified by:
showLiveIn in interface DataFlow

showLiveOut

public void showLiveOut()
Shows the LiveOut vector for every BBlock. See #findLiveInLiveOut() See ShowDataFlow#showLiveOut()

Specified by:
showLiveOut in interface DataFlow

showDefIn

public void showDefIn()
Shows the DefIn vector for every BBlock. See #findDefInDefOut() See ShowDataFlow#showDefIn()

Specified by:
showDefIn in interface DataFlow

showDefOut

public void showDefOut()
Shows the DefOut vector for every BBlock. See #findDefInDefOut() See ShowDataFlow#showDefOut()

Specified by:
showDefOut in interface DataFlow

showDefVectors

public void showDefVectors()
Shows all the DefVectors for all the BBlocks. See #showDef() See #showKill() See #showIn() See #showOut() See #showReach() See ShowDataFlow#showDefVectors()

Specified by:
showDefVectors in interface DataFlow
See Also:
DataFlow.showDef(), //@see #showIn() //@see #showOut(), DataFlow.showReach()

showExpVectors

public void showExpVectors()
Shows all the ExpVectors for all the BBlocks. See #showDefined() See #showExposed() See #showEGen() See #showEKill() See #showAvailIn() See #showAvailOut() See #showLiveIn() See #showLiveOut() See #showDefIn() See #showDefOut() See ShowDataFlow#showExpVectors()

Specified by:
showExpVectors in interface DataFlow
See Also:
DataFlow.showDefined(), DataFlow.showExposed(), DataFlow.showEGen(), DataFlow.showEKill(), DataFlow.showAvailIn(), DataFlow.showAvailOut(), DataFlow.showLiveIn(), DataFlow.showLiveOut(), DataFlow.showDefIn(), DataFlow.showDefOut()

showBasic

public void showBasic()
Shows all the data flow items that are independent of the control flow, that is, Def, Kill, Defined, Exposed, EGen, and EKill vectors. See #showDef() See #showKill() See #showDefined() See #showExposed() See #showEGen() See #showEKill() See ShowDataFlow#showBasic()

Specified by:
showBasic in interface DataFlow
See Also:
DataFlow.showDef(), DataFlow.showKill(), DataFlow.showDefined(), DataFlow.showExposed(), DataFlow.showEGen(), DataFlow.showEKill()

showSolved

public void showSolved()
Shows all the data flow items data flow equations have found, that is, In, Out, Reach, AvailIn, AvailOut, LiveIn, LiveOut, DefIn, and DefOut vectors. See #showIn() See #showOut() See #showReach() See #showAvailIn() See #showAvailOut() See #showLiveIn() See #showLiveOut() See #showDefIn() See #showDefOut() See ShowDataFlow#showSolved()

Specified by:
showSolved in interface DataFlow
See Also:
DataFlow.showReach(), DataFlow.showAvailIn(), DataFlow.showAvailOut(), DataFlow.showLiveIn(), DataFlow.showLiveOut(), DataFlow.showDefIn(), DataFlow.showDefOut()

showReachRelated

public void showReachRelated()
Shows BitVectors related to (needed to solve) Reach vectors, that is, Def, Kill, and Reach vectors. See #showDef() See #showKill() See #showReach() See ShowDataFlow#showReachRelated()

Specified by:
showReachRelated in interface DataFlow
See Also:
DataFlow.showDef(), DataFlow.showKill(), DataFlow.showReach()

showAvailInAvailOutRelated

public void showAvailInAvailOutRelated()
Shows BitVectors related to (needed to solve) AvailIn/AvailOut vectors, that is, EGen, EKill, AvailIn, and AvailOut vectors. See #showEGen() See #showEKill() See #showAvailIn() See #showAvailOut() See ShowDataFlow#showAvailInAvailOutRelated()

Specified by:
showAvailInAvailOutRelated in interface DataFlow
See Also:
DataFlow.showEGen(), DataFlow.showEKill(), DataFlow.showAvailIn(), DataFlow.showAvailOut()

showLiveInLiveOutRelated

public void showLiveInLiveOutRelated()
Shows BitVectors related to (needed to solve) LiveIn/LiveOut vectors, that is, Exposed, Defined, LiveIn, and LiveOut vectors. See #showExposed() See #showDefined() See #showLiveIn() See #showLiveOut() See ShowDataFlow#showLiveInLiveOutRelated()

Specified by:
showLiveInLiveOutRelated in interface DataFlow
See Also:
DataFlow.showExposed(), DataFlow.showDefined(), DataFlow.showLiveIn(), DataFlow.showLiveOut()

showDefInDefOutRelated

public void showDefInDefOutRelated()
Shows BitVectors related to (needed to solve) DefIn/DefOut vectors, that is, Defined, DefIn, and DefOut vectors. See #showDefined() See #showDefIn() See #showDefOut() See ShowDataFlow#showDefInDefOutRelated()

Specified by:
showDefInDefOutRelated in interface DataFlow
See Also:
DataFlow.showDefined(), DataFlow.showDefIn(), DataFlow.showDefOut()

showAllBitVectors

public void showAllBitVectors()
Shows all the BitVectors. See #showDefVectors() See #showExpVectors() See ShowDataFlow#showAllBitVectors()

Specified by:
showAllBitVectors in interface DataFlow
See Also:
DataFlow.showDefVectors(), DataFlow.showExpVectors()

showDefUse

public void showDefUse()
Shows the DefUseList for each FlowAnalSym. See ShowDataFlow#showDefUse()

Specified by:
showDefUse in interface DataFlow

showUseDef

public void showUseDef()
Shows the UseDefList for each FlowAnalSym. See ShowDataFlow#showUseDef()

Specified by:
showUseDef in interface DataFlow

showAll

public void showAll()
Shows all the information found in this DFA. See #showAllBitVectors() See #showDefUse() See ShowDataFlow#showAll()

Specified by:
showAll in interface DataFlow
See Also:
DataFlow.showAllBitVectors(), DataFlow.showDefUse()

showSummary

public void showSummary()
Description copied from interface: DataFlow
Show summary of data flow information.

Specified by:
showSummary in interface DataFlow

showVector

void showVector(BitVector pBitVector)
Shows the given BitVector.

Parameters:
pBitVector - BitVector to display See ShowDataFlow#showVector()

showVector

void showVector(BitVector pBitVector,
                java.lang.String pComment)
Shows the given BitVector w/ a comment(heading).

Parameters:
pBitVector - BitVector to display
pComment - Comment that is displayed before the BitVector See ShowDataFlow#showVector()

getUndefinedUseNodeOfSym

public java.util.Set getUndefinedUseNodeOfSym(FlowAnalSym lSym)
Specified by:
getUndefinedUseNodeOfSym in interface DataFlow

toExpVector

ExpVector toExpVector(java.util.Set pSymbolSet)
toExpVector Converts the given Set of symbols to an ExpVector where each bit of the vector corresponds to an element in the Set set.

Returns:
ExpVector w/ the relevant bits set.

toSet

java.util.Set toSet(ExpVector pExpVector)
Converts the given ExpVector to a Set that has elements that correspond to the set bits of the ExpVector.

Parameters:
pExpVector - ExpVector to convert.
Returns:
Set that contains the relevant elements.