coins.flow
Class MySubpFlow

java.lang.Object
  extended bycoins.flow.SubpFlowImpl
      extended bycoins.flow.HirSubpFlowImpl
          extended bycoins.flow.MySubpFlow
All Implemented Interfaces:
HirSubpFlow, SubpFlow

public class MySubpFlow
extends HirSubpFlowImpl
implements HirSubpFlow

MySubpFlow is an example of extending data flow analysis by making subclass of HirSugpFlow. This class adds new data flow information which can be get by getTransparent(bblock). The method computeTransparent() of this calss is called from FlowImpl if hirAnal option is specified.


Field Summary
(package private)  ExpVector[] fTransparent
           
 
Fields inherited from class coins.flow.HirSubpFlowImpl
EXP_ID_HASH_SIZE, fStmtExpCount, fStmtExpSeq, fStmtExpSeqIndexForBBlock
 
Fields inherited from class coins.flow.SubpFlowImpl
fAflowSubpFlow, failed, fAlias, fArrayOfSetRefReprList, fAssignCount, fBBlockCount, fBBlockList, fBBlockOfIR, fBBlockOfLabel, fBBlockTable, fBBlockVectorBitCount, fBBlockVectorWordCount, fCallCount, fComplexity, fComputedFlag, fDbgLevel, fDefCount, fDefIndex, fDefinedSyms, fDefNodeListOfSym, fDefPoint, fDefRefCount, fDefRefIndex, fDefRefPoint, fDefUseExhaustiveList, fDefUseList, fDefVectorBitCount, fDefVectorWordCount, fDfoList, fDom, fDomList, fEntryBBlock, fExitBBlock, fExpIdList, fExpIdNumber, fExpIdTable, fExpVectorBitCount, fExpVectorWordCount, fFlowAdapter, fFlowAnalSymTable, fFlowIrLink, fFlowIrLinkSize, fGlobalSymsUsed, fHirAnalExtended, fInverseDfoList, fIrIndexMax, fIrIndexMin, fIteratorInitiated, fListOfBBlocksFromEntry, fListOfBBlocksFromExit, flow, flowRoot, fMaximalCompoundVars, fMaxIndexOfCopiedNode, fMultipleSetRef, fNodeCount, fNodeCountLim1, fNodeCountLim2, fPointVectorBitCount, fPointVectorWordCount, fPostDom, fPostDomList, fPrevBBlockInSearch, fRecordAlias, fSetOfAddressTakenVariables, fSetOfGlobalVariables, fSetRefReprTable, fSubpDefinition, fSubtreesContainingCall, fSubtreesCopied, fSymCountLim1, fSymCountLim2, fSymExpCount, fSymIndexTable, fTempExpCorrespondence, fUseDefExhaustiveList, fUseDefList, fUsedGlobalSymCount, fUsedSymCount, fUsedSymSet, fUseNodeListOfSym, hasCall, hasCallInSubp, hasPointerAssign, hasStructUnion, hasUsePointer, hirRoot, ioRoot, symRoot
 
Fields inherited from interface coins.flow.SubpFlow
CF_BBLOCK, CF_CFG, CF_DOMINATOR, CF_INDEXED, CF_POSTDOMINATOR, DF_AVAILIN, DF_AVAILOUT, DF_DEF, DF_DEFIN, DF_DEFINED, DF_DEFOUT, DF_DEFUSE, DF_DEFUSEEXHAUST, DF_DEFUSELIST, DF_EGEN, DF_EKILL, DF_EXPID, DF_EXPOSED, DF_KILL, DF_LIVEIN, DF_LIVEOUT, DF_MAX, DF_MIN, DF_REACH, DF_SETREFREPR, DF_TRSNSPARENT, DF_USED, DF_USEDEFEXHAUST, DF_USEDEFLIST, FLAG_EXPID_LHS
 
Constructor Summary
MySubpFlow(FlowRoot pFlowRoot, SubpDefinition pSubpDefinition)
           
 
Method Summary
 void computeTransparent()
          The method computeTransparent finds tranparent expressions that are neither killed nore defined within a basic block.
 ExpVector getTransparent(BBlock pBBlock)
          Get the transparent expression for the basic block pBBlock.
 
Methods inherited from class coins.flow.HirSubpFlowImpl
allocateExpIdForSubp, allocateExpIdToNode, computeBBlockSetRefReprs, computeHashCodeOfNode, divideHirIntoBasicBlocks, divideLirIntoBasicBlocks, getFlowIrLink, getHashCodeOfIndexedNode, hasCall, isSameTree, recordSetRefReprs, recordSetRefReprs, recordSetRefReprsForNode, selectExpId, setHashCodeOfIndexedNode
 
Methods inherited from class coins.flow.SubpFlowImpl
addDefNode, addUseNode, allocateBBlockOfIR, bblock, bblock, bblockNodeIterator, bblockStmtIterator, bblockSubtreeIterator, bblockVector, cfgFromExitIterator, cfgIterator, changeListOfFlowBBlocksToListOfAflowBBlocks, clearControlFlow, clearDataFlow, computeSetOfAddressTakenVariables, computeSetOfAddressTakenVariables, computeSetOfGlobalVariables, copyFlowAnalData, correlateBBlockAndIR, defVector, defVectorIterator, expVector, expVectorIterator, flowAnalSymVector, generateExpIdName, getAflowSubpFlow, getAssignCount, getBBlock, getBBlock, getBBlock0, getBBlockForLabel, getBBlockFromNodeIndex, getBBlockList, getBBlockOfIR, getBBlockTable, getBBlockVectorBitCount, getBBlockVectorWordCount, getCallCount, getComplexityLevel, getDefCount, getDefIndex, getDefinedSyms, getDefNodeList, getDefPoint, getDefUseExhaustiveList, getDefUseList, getDefVectorBitCount, getDefVectorWordCount, getDominatorList, getDominators, getEntryBBlock, getExitBBlock, getExpId, getExpId, getExpIdList, getExpOfTemp, getExpVectorBitCount, getExpVectorWordCount, getFlowAdapter, getFlowAnalStateLevel, getFlowAnalSymTable, getFlowRoot, getIndexedNode, getIndexedSym, getIrIndexMax, getIrIndexMin, getLinkedSubtreeOfExpId, getListOfBBlocksFromEntry, getListOfBBlocksFromExit, getListOfDefUseExhaustiveList, getListOfDefUseList, getListOfUseDefExhaustiveList, getListOfUseDefList, getMaximalCompoundVars, getNumberOfBBlocks, getNumberOfDefUsedGlobalSymbols, getNumberOfNodes, getPointVectorBitCount, getPointVectorWordCount, getPostDominatorList, getPostDominators, getPrevBBlockInSearch, getReachableBBlocks, getRecordAlias, getRefPoint, getRestructureFlag, getSetRefReprList, getSetRefReprOfIR, getSubpDefinition, getSubpSym, getSymExpCount, getUseDefExhaustiveList, getUseDefList, getUsedSymCount, getUsedSyms, geUseNodeList, hasCallUnder, initiateControlFlowAnal, initiateDataFlowAnal, isComputed, isComputedOrUnderComputation, isFailed, pointVector, pointVectorIterator, printComputedFlag, printExpIdAndIrCorrespondence, recordBBlock, recordDefPoint, recordDefRefPoint, recordSym, resetComputedFlag, resetControlAndDataFlowInformation, resetExpId, resetFlowSymLink, resetFlowSymLinkForRecordedSym, resetFlowSymLinkForTable, resetGlobalFlowSymLink, setBBlock, setBBlock, setBBlockOfIR, setBBlockVectorBitCount, setComputedFlag, setDefVectorBitCount, setEntryBBlock, setExitBBlock, setExpId, setExpOfTemp, setExpVectorBitCount, setFlowAnalStateLevel, setNumberOfNodes, setOfAddressTakenVariables, setOfGlobalVariables, setPointVectorBitCount, setPrevBBlockInSearch, setRecordAlias, setRestructureFlag, setSetRefReprList, setSetRefReprOfIR, setUnderComputation, sortExpIdCollection, subtreesContainingCall, summarize
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface coins.flow.HirSubpFlow
allocateExpIdForSubp, divideHirIntoBasicBlocks, divideLirIntoBasicBlocks
 
Methods inherited from interface coins.flow.SubpFlow
bblock, bblock, bblockNodeIterator, bblockStmtIterator, bblockSubtreeIterator, cfgFromExitIterator, cfgIterator, changeListOfFlowBBlocksToListOfAflowBBlocks, clearControlFlow, clearDataFlow, computeBBlockSetRefReprs, computeSetOfAddressTakenVariables, computeSetOfGlobalVariables, copyFlowAnalData, defVector, defVectorIterator, expVector, expVectorIterator, flowAnalSymVector, generateExpIdName, getAssignCount, getBBlock, getBBlock, getBBlock0, getBBlockForLabel, getBBlockFromNodeIndex, getBBlockList, getBBlockOfIR, getBBlockTable, getBBlockVectorBitCount, getBBlockVectorWordCount, getCallCount, getComplexityLevel, getDefCount, getDefIndex, getDefinedSyms, getDefNodeList, getDefPoint, getDefUseExhaustiveList, getDefUseList, getDefVectorBitCount, getDefVectorWordCount, getDominatorList, getDominators, getEntryBBlock, getExitBBlock, getExpId, getExpId, getExpIdList, getExpOfTemp, getExpVectorBitCount, getExpVectorWordCount, getFlowAdapter, getFlowAnalStateLevel, getFlowAnalSymTable, getFlowRoot, getIndexedNode, getIndexedSym, getIrIndexMax, getIrIndexMin, getLinkedSubtreeOfExpId, getListOfBBlocksFromEntry, getListOfBBlocksFromExit, getMaximalCompoundVars, getNumberOfBBlocks, getNumberOfDefUsedGlobalSymbols, getNumberOfNodes, getPointVectorBitCount, getPointVectorWordCount, getPostDominatorList, getPostDominators, getPrevBBlockInSearch, getReachableBBlocks, getRecordAlias, getRefPoint, getRestructureFlag, getSetRefReprList, getSetRefReprOfIR, getSubpDefinition, getSubpSym, getSymExpCount, getUseDefExhaustiveList, getUseDefList, getUsedSymCount, getUsedSyms, geUseNodeList, hasCall, hasCallUnder, initiateControlFlowAnal, initiateDataFlowAnal, isComputed, isComputedOrUnderComputation, isFailed, pointVector, pointVectorIterator, printExpIdAndIrCorrespondence, recordBBlock, recordDefPoint, recordDefRefPoint, resetComputedFlag, resetControlAndDataFlowInformation, resetFlowSymLink, resetFlowSymLinkForRecordedSym, resetGlobalFlowSymLink, setBBlock, setBBlock, setBBlockVectorBitCount, setComputedFlag, setDefVectorBitCount, setEntryBBlock, setExitBBlock, setExpId, setExpOfTemp, setExpVectorBitCount, setFlowAnalStateLevel, setNumberOfNodes, setOfAddressTakenVariables, setOfGlobalVariables, setPointVectorBitCount, setPrevBBlockInSearch, setRecordAlias, setRestructureFlag, setSetRefReprList, setSetRefReprOfIR, setUnderComputation, sortExpIdCollection, subtreesContainingCall, summarize
 

Field Detail

fTransparent

ExpVector[] fTransparent
Constructor Detail

MySubpFlow

public MySubpFlow(FlowRoot pFlowRoot,
                  SubpDefinition pSubpDefinition)
Method Detail

computeTransparent

public void computeTransparent()
The method computeTransparent finds tranparent expressions that are neither killed nore defined within a basic block.


getTransparent

public ExpVector getTransparent(BBlock pBBlock)
Get the transparent expression for the basic block pBBlock. Expressions are represented by ExpId correnponding to the expression.

Parameters:
pBBlock - basic block.
Returns:
extression vector showing transparent expressions.