|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
java.lang.Objectcoins.flow.SubpFlowImpl
SubpFlowImpl class Subprogram flow analysis class. Fields and methods are common between HIR and LIR.
| 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 | |
SubpFlowImpl()
|
|
SubpFlowImpl(FlowRoot pFlowRoot,
SubpDefinition pSubpDefinition)
|
|
| Method Summary | |
void |
addDefNode(FlowAnalSym pSym,
IR pDefNode)
|
void |
addUseNode(FlowAnalSym pSym,
IR pUseNode)
|
void |
allocateBBlockOfIR()
|
BBlock |
bblock()
Create dummy basic block. |
BBlock |
bblock(LabeledStmt pLabeledStmt)
Create new basic block corresponding to the HIR labeled statement pLabeledStmt. |
BBlockNodeIterator |
bblockNodeIterator(BBlock pBBlock)
bblockNodeItrator Get iterator that traverse all nodes of the basic block pBBlock. |
BBlockStmtIterator |
bblockStmtIterator(BBlockHir pBBlock)
bblockStmtIterator get iterator to traverse statements in the basic block pBBlock. |
BBlockSubtreeIterator |
bblockSubtreeIterator(BBlock pBBlock)
bblockSubtreeItrator Get iterator that traverse top subtrees of the basic block pBBlock. |
BBlockVector |
bblockVector()
|
java.util.Iterator |
cfgFromExitIterator()
cfgFromExitIterator Traverse basic blocks in CFG (control flow graph) in inverse depth first order from the exit BBlock. |
java.util.Iterator |
cfgIterator()
cfgIterator Traverse basic blocks in CFG (control flow graph) in depth first order. |
java.util.List |
changeListOfFlowBBlocksToListOfAflowBBlocks(java.util.List pListOfFlowBBlocks)
|
void |
clearControlFlow()
Clear all control/data flow analysis information. |
void |
clearDataFlow()
Clear data flow information. |
void |
computeBBlockSetRefReprs()
|
java.util.Set |
computeSetOfAddressTakenVariables()
computeSetOfAddressTakenVariables Compute the set of variables whose address is taken (e.g. |
void |
computeSetOfAddressTakenVariables(HIR pHir,
java.util.Set pSet,
boolean pAddrOperand)
computeSetOfAddressTakenVariables Compute the set of variables whose address is taken (e.g. |
java.util.Set |
computeSetOfGlobalVariables()
computeSetOfGlobalVariables Compute the set of global variables and record it in fSetOfGlobalVariables. |
void |
copyFlowAnalData(SubpFlow pSubpFlow)
|
void |
correlateBBlockAndIR()
|
DefVector |
defVector()
|
DefVectorIterator |
defVectorIterator(DefVector pDefVector)
|
ExpVector |
expVector()
|
ExpVectorIterator |
expVectorIterator(ExpVector pExpVector)
|
FlowAnalSymVector |
flowAnalSymVector()
|
java.lang.String |
generateExpIdName()
generateExpIdName Generate a name of expression identifier _xId1, _xId2, _xId3, ... |
SubpFlow |
getAflowSubpFlow(FlowResults pFlowResults)
|
int |
getAssignCount()
|
BBlock |
getBBlock(HIR pHir)
|
BBlock |
getBBlock(int pBlockNumber)
getBBlock Get the basic block whose block number is pBlockNumber. |
BBlock |
getBBlock0(Label pLabel)
|
BBlock |
getBBlockForLabel(Label pLabel)
|
BBlock |
getBBlockFromNodeIndex(int pNodeIndex)
|
java.util.List |
getBBlockList()
Returns the List of BBlocks in the flow excluding null and 0-numbered BBlock. |
BBlock |
getBBlockOfIR(int pIndex)
|
java.util.ArrayList |
getBBlockTable()
Get BBlockTable of this subprogram. |
int |
getBBlockVectorBitCount()
|
int |
getBBlockVectorWordCount()
|
int |
getCallCount()
|
int |
getComplexityLevel()
Get the complexity level of this subprogram. |
int |
getDefCount()
|
int |
getDefIndex(int pNodeIndex)
Get def-index from node index. |
java.util.Set |
getDefinedSyms()
getDefinedSyms Set of all symbols whose value is set in this subprogram. |
java.util.List |
getDefNodeList(FlowAnalSym pSym)
|
IR |
getDefPoint(int pIndex)
Get IR node from def-index |
DefUseList |
getDefUseExhaustiveList()
|
DefUseList |
getDefUseList()
|
int |
getDefVectorBitCount()
|
int |
getDefVectorWordCount()
|
java.util.List |
getDominatorList(BBlock pBBlock)
Get the list of dominators of pBBlock. |
BBlockVector |
getDominators(BBlock pBBlock)
Get BBlockVector representing dominators of pBBlock. |
BBlock |
getEntryBBlock()
Get the entry basic block. |
BBlock |
getExitBBlock()
|
ExpId |
getExpId(IR pIr)
|
ExpId |
getExpId(IR pIr,
int pIndex)
|
java.util.List |
getExpIdList()
|
Exp |
getExpOfTemp(Var pTempVar)
Get the expression represented by the temporal variable pTempVar. |
int |
getExpVectorBitCount()
|
int |
getExpVectorWordCount()
|
FlowAdapter |
getFlowAdapter()
|
int |
getFlowAnalStateLevel()
|
FlowAnalSym[] |
getFlowAnalSymTable()
|
FlowRoot |
getFlowRoot()
|
IR |
getIndexedNode(int pNodeIndex)
|
FlowAnalSym |
getIndexedSym(int pSymIndex)
|
int |
getIrIndexMax()
|
int |
getIrIndexMin()
|
HIR |
getLinkedSubtreeOfExpId(ExpId pExpId)
|
java.util.List |
getListOfBBlocksFromEntry()
|
java.util.List |
getListOfBBlocksFromExit()
|
DefUseList |
getListOfDefUseExhaustiveList()
|
DefUseList |
getListOfDefUseList()
|
UseDefList |
getListOfUseDefExhaustiveList()
|
UseDefList |
getListOfUseDefList()
|
java.util.Set |
getMaximalCompoundVars()
Get the set of maximal compound variables. |
int |
getNumberOfBBlocks()
|
int |
getNumberOfDefUsedGlobalSymbols()
|
int |
getNumberOfNodes()
|
int |
getPointVectorBitCount()
|
int |
getPointVectorWordCount()
|
java.util.List |
getPostDominatorList(BBlock pBBlock)
Get the list of post dominators of pBBlock. |
BBlockVector |
getPostDominators(BBlock pBBlock)
Get BBlockVector representing post dominators of pBBlock. |
BBlock |
getPrevBBlockInSearch()
|
java.util.List |
getReachableBBlocks()
Get list of BBlocks reachable from entry BBLock. |
RecordAlias |
getRecordAlias()
If returned value is not null, then alias is considered in data flow analysis. |
IR |
getRefPoint(int pIndex)
Get IR node from ref-index |
boolean |
getRestructureFlag()
|
SetRefReprList |
getSetRefReprList(BBlock pBBlock)
|
SetRefRepr |
getSetRefReprOfIR(IR pIR)
|
SubpDefinition |
getSubpDefinition()
|
Subp |
getSubpSym()
|
int |
getSymExpCount()
|
UseDefList |
getUseDefExhaustiveList()
|
UseDefList |
getUseDefList()
|
int |
getUsedSymCount()
|
java.util.Set |
getUsedSyms()
getUsed Set of all symbols whose value is used in this subprogram. |
java.util.List |
geUseNodeList(FlowAnalSym pSym)
|
boolean |
hasCallUnder(IR pIR)
Returns true if the given IR node has as its decendant a call node. |
void |
initiateControlFlowAnal(SubpDefinition pSubpDefinition,
int pIndexMin,
int pIndexMax)
|
void |
initiateDataFlowAnal(SubpDefinition pSubpDefinition)
initiateDataFlowAnal Initiate bit vectors, and initiate fields in SetRefRepls, etc. |
boolean |
isComputed(int pItemIndex)
Test if a control/data flow item is already computed or not. |
boolean |
isComputedOrUnderComputation(int pItemIndex)
|
boolean |
isFailed()
|
PointVector |
pointVector()
|
PointVectorIterator |
pointVectorIterator(PointVector pPointVector)
|
(package private) void |
printComputedFlag()
|
void |
printExpIdAndIrCorrespondence()
|
void |
recordBBlock(BBlock pBlock,
int pBlockNumber)
|
int |
recordDefPoint(IR pIR)
|
int |
recordDefRefPoint(IR pIR)
|
protected int |
recordSym(FlowAnalSym pSym)
|
void |
resetComputedFlag(int pItemIndex)
Reset computed flag for all items whose item numbers are greater or equal to pItemIndex. |
void |
resetControlAndDataFlowInformation()
Clear all control/data flow analysis information after executing setIndexNumberTOAllNodes. |
void |
resetExpId()
|
void |
resetFlowSymLink(SymTable pSymTable)
resetFlowSymLink Reset all flow analysis information of symbols in pSymTable and its descendents. |
void |
resetFlowSymLinkForRecordedSym()
linkLirWithDataFlowForSubp Reset links between flow information and LIR nodes, symbols, etc. |
void |
resetFlowSymLinkForTable(SymTable pSymTable)
|
void |
resetGlobalFlowSymLink()
resetGlobalFlowSymLink Reset all flow analysis information of symbols that are contained in ancestor symbol table (symTableRoot, etc) without traversing its descendents. |
void |
setBBlock(HIR pHir,
BBlock pBBlock)
|
void |
setBBlock(Label pLabel,
BBlock pBBlock)
|
void |
setBBlockOfIR(BBlock pBBlock,
int pIndex)
|
void |
setBBlockVectorBitCount(int pBitCount)
|
void |
setComputedFlag(int pItemIndex)
Set the control/data flow item to be computed as true. |
void |
setDefVectorBitCount(int pBitCount)
|
void |
setEntryBBlock(BBlock pBlock)
|
void |
setExitBBlock(BBlock pBlock)
|
void |
setExpId(IR pIr,
ExpId pExpId)
|
void |
setExpOfTemp(Var pTempVar,
Exp pExp)
Record pExp as the expression represented by the temporal variable pTempVar. |
void |
setExpVectorBitCount(int pBitCount)
|
void |
setFlowAnalStateLevel(int pState)
|
void |
setNumberOfNodes(int pCount)
|
java.util.Set |
setOfAddressTakenVariables()
|
java.util.Set |
setOfGlobalVariables()
|
void |
setPointVectorBitCount(int pBitCount)
|
void |
setPrevBBlockInSearch(BBlock pPrev)
setPrevBBlockInSearch getPrevBBlockInSearch Methods used in linking basic blocks in depth first order, etc. |
void |
setRecordAlias(RecordAlias pRecordAlias)
Record a RecordAlias instance in order to indicate that alias is considered in data flow analysis. |
void |
setRestructureFlag()
|
void |
setSetRefReprList(BBlock pBBlock,
SetRefReprList pSetRefReprList)
|
void |
setSetRefReprOfIR(SetRefRepr pSetRefRepr,
IR pIR)
|
void |
setUnderComputation(int pItemIndex)
Set computed flag for the item indicated by pItemIndex. |
java.util.List |
sortExpIdCollection(java.util.Collection pExpIdCollection)
Sort the list or set of FLowAnalSyms (pExpIdCollection) so that non-ExpId symbols come first and then ExpIds sorted in the ascending order of suffix (nn of of the name of ExpId _xIdnn). |
java.util.Set |
subtreesContainingCall()
|
void |
summarize()
Compute fDefinedSyms showing symbols used in this subprogram ?? and print if dbgLevel >= 4. |
| Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Methods inherited from interface coins.flow.SubpFlow |
hasCall |
| Field Detail |
public final FlowRoot flowRoot
public final IoRoot ioRoot
public final SymRoot symRoot
public final HirRoot hirRoot
public Flow flow
protected int fUsedGlobalSymCount
protected int fPointVectorBitCount
protected int fPointVectorWordCount
protected int fExpVectorBitCount
protected int fExpVectorWordCount
protected int fDefVectorBitCount
protected int fDefVectorWordCount
protected int fBBlockVectorBitCount
protected int fBBlockVectorWordCount
protected SubpDefinition fSubpDefinition
protected BBlock fPrevBBlockInSearch
protected int fNodeCount
protected IR[] fFlowIrLink
protected int fFlowIrLinkSize
protected int fBBlockCount
protected int fUsedSymCount
protected int fSymExpCount
protected int fDefRefCount
protected int fDefCount
protected BBlock fEntryBBlock
protected int fAssignCount
protected int fCallCount
protected BBlock fExitBBlock
protected java.util.ArrayList fBBlockTable
protected java.util.List fBBlockList
protected java.util.List fListOfBBlocksFromEntry
protected java.util.List fListOfBBlocksFromExit
protected java.util.Set fUsedSymSet
protected FlowAnalSym[] fSymIndexTable
protected java.util.List fDfoList
protected java.util.List fInverseDfoList
protected int fExpIdNumber
protected java.util.Set fDefinedSyms
protected FlowAnalSym[] fFlowAnalSymTable
protected BBlock[] fBBlockOfIR
protected int[] fDefRefIndex
protected int[] fDefIndex
protected java.util.Map fBBlockOfLabel
protected java.util.List fExpIdList
protected java.util.Set fMaximalCompoundVars
protected java.util.Set fGlobalSymsUsed
protected DefUseList fDefUseList
protected UseDefList fUseDefList
protected DefUseList fDefUseExhaustiveList
protected UseDefList fUseDefExhaustiveList
protected java.util.List[] fDefNodeListOfSym
protected java.util.List[] fUseNodeListOfSym
public boolean fHirAnalExtended
protected SetRefRepr[] fSetRefReprTable
protected int fIrIndexMin
protected int fIrIndexMax
protected ExpId[] fExpIdTable
public int fMaxIndexOfCopiedNode
public java.util.List fSubtreesCopied
protected java.util.Set fSetOfGlobalVariables
protected java.util.Set fSetOfAddressTakenVariables
protected java.util.Map fTempExpCorrespondence
protected AliasAnal fAlias
protected RecordAlias fRecordAlias
protected IR[] fDefRefPoint
protected IR[] fDefPoint
public boolean[] hasCall
public boolean hasCallInSubp
public boolean[] hasUsePointer
public boolean[] hasStructUnion
public boolean[] hasPointerAssign
protected SetRefReprList[] fArrayOfSetRefReprList
protected BBlockVector[] fDom
protected BBlockVector[] fPostDom
protected java.util.List[] fDomList
protected java.util.List[] fPostDomList
public java.util.Set fSubtreesContainingCall
protected int[] fComputedFlag
public final int fDbgLevel
protected int fComplexity
protected final int fNodeCountLim1
protected final int fNodeCountLim2
protected final int fSymCountLim1
protected final int fSymCountLim2
protected FlowAdapter fFlowAdapter
public boolean fIteratorInitiated
public java.util.Map fMultipleSetRef
protected boolean failed
protected SubpFlow fAflowSubpFlow
| Constructor Detail |
public SubpFlowImpl(FlowRoot pFlowRoot,
SubpDefinition pSubpDefinition)
public SubpFlowImpl()
| Method Detail |
public BBlock getEntryBBlock()
SubpFlow
getEntryBBlock in interface SubpFlowpublic void setEntryBBlock(BBlock pBlock)
setEntryBBlock in interface SubpFlowpublic BBlock getExitBBlock()
getExitBBlock in interface SubpFlowpublic void setExitBBlock(BBlock pBlock)
setExitBBlock in interface SubpFlowpublic void copyFlowAnalData(SubpFlow pSubpFlow)
copyFlowAnalData in interface SubpFlowpublic BBlock bblock(LabeledStmt pLabeledStmt)
SubpFlow
bblock in interface SubpFlowpublic BBlock bblock()
SubpFlow
bblock in interface SubpFlowpublic ExpVector expVector()
expVector in interface SubpFlowpublic PointVector pointVector()
pointVector in interface SubpFlowpublic DefVector defVector()
defVector in interface SubpFlowpublic void resetFlowSymLinkForRecordedSym()
SubpFlow
resetFlowSymLinkForRecordedSym in interface SubpFlowpublic void resetFlowSymLink(SymTable pSymTable)
SubpFlow
resetFlowSymLink in interface SubpFlowpublic void resetGlobalFlowSymLink()
SubpFlow
resetGlobalFlowSymLink in interface SubpFlowpublic void resetFlowSymLinkForTable(SymTable pSymTable)
public BBlock getBBlock(int pBlockNumber)
SubpFlow
getBBlock in interface SubpFlowpBlockNumber - block number of the basic block to be got.
public void recordBBlock(BBlock pBlock,
int pBlockNumber)
recordBBlock in interface SubpFlowpublic FlowAnalSym getIndexedSym(int pSymIndex)
getIndexedSym in interface SubpFlowprotected int recordSym(FlowAnalSym pSym)
public IR getIndexedNode(int pNodeIndex)
getIndexedNode in interface SubpFlowpublic BBlock getBBlockFromNodeIndex(int pNodeIndex)
getBBlockFromNodeIndex in interface SubpFlowpublic int getNumberOfBBlocks()
getNumberOfBBlocks in interface SubpFlowpublic int getNumberOfNodes()
getNumberOfNodes in interface SubpFlowpublic void setNumberOfNodes(int pCount)
setNumberOfNodes in interface SubpFlowpublic int getSymExpCount()
getSymExpCount in interface SubpFlowpublic int getUsedSymCount()
getUsedSymCount in interface SubpFlowpublic java.lang.String generateExpIdName()
SubpFlow
generateExpIdName in interface SubpFlowpublic SubpDefinition getSubpDefinition()
getSubpDefinition in interface SubpFlowpublic Subp getSubpSym()
getSubpSym in interface SubpFlowpublic int getNumberOfDefUsedGlobalSymbols()
getNumberOfDefUsedGlobalSymbols in interface SubpFlowpublic int getPointVectorBitCount()
getPointVectorBitCount in interface SubpFlowpublic void setPointVectorBitCount(int pBitCount)
setPointVectorBitCount in interface SubpFlowpublic int getPointVectorWordCount()
getPointVectorWordCount in interface SubpFlowpublic int getExpVectorBitCount()
getExpVectorBitCount in interface SubpFlowpublic void setExpVectorBitCount(int pBitCount)
setExpVectorBitCount in interface SubpFlowpublic int getExpVectorWordCount()
getExpVectorWordCount in interface SubpFlowpublic int getDefVectorBitCount()
getDefVectorBitCount in interface SubpFlowpublic void setDefVectorBitCount(int pBitCount)
setDefVectorBitCount in interface SubpFlowpublic int getDefVectorWordCount()
getDefVectorWordCount in interface SubpFlowpublic int getBBlockVectorBitCount()
getBBlockVectorBitCount in interface SubpFlowpublic void setBBlockVectorBitCount(int pBitCount)
setBBlockVectorBitCount in interface SubpFlowpublic int getBBlockVectorWordCount()
getBBlockVectorWordCount in interface SubpFlowpublic void setPrevBBlockInSearch(BBlock pPrev)
SubpFlow
setPrevBBlockInSearch in interface SubpFlowpPrev - previous BBlock from which this BBlock is
to be linked.public BBlock getPrevBBlockInSearch()
getPrevBBlockInSearch in interface SubpFlowpublic java.util.Set getDefinedSyms()
SubpFlow
getDefinedSyms in interface SubpFlowpublic java.util.Set getUsedSyms()
SubpFlow
getUsedSyms in interface SubpFlowpublic void summarize()
summarize in interface SubpFlowpublic java.util.Iterator cfgIterator()
cfgIterator in interface SubpFlowpublic java.util.Iterator cfgFromExitIterator()
SubpFlow
cfgFromExitIterator in interface SubpFlowpublic PointVectorIterator pointVectorIterator(PointVector pPointVector)
pointVectorIterator in interface SubpFlowpublic DefVectorIterator defVectorIterator(DefVector pDefVector)
defVectorIterator in interface SubpFlowpublic ExpVectorIterator expVectorIterator(ExpVector pExpVector)
expVectorIterator in interface SubpFlowpublic BBlockSubtreeIterator bblockSubtreeIterator(BBlock pBBlock)
SubpFlow
bblockSubtreeIterator in interface SubpFlowpublic BBlockStmtIterator bblockStmtIterator(BBlockHir pBBlock)
SubpFlow
bblockStmtIterator in interface SubpFlowpublic BBlockNodeIterator bblockNodeIterator(BBlock pBBlock)
bblockNodeIterator in interface SubpFlowpublic int getFlowAnalStateLevel()
getFlowAnalStateLevel in interface SubpFlowpublic void setFlowAnalStateLevel(int pState)
setFlowAnalStateLevel in interface SubpFlowpublic java.util.ArrayList getBBlockTable()
SubpFlow
getBBlockTable in interface SubpFlowpublic java.util.List getBBlockList()
getBBlockList in interface SubpFlowpublic java.util.List getReachableBBlocks()
SubpFlow
getReachableBBlocks in interface SubpFlow
public void initiateControlFlowAnal(SubpDefinition pSubpDefinition,
int pIndexMin,
int pIndexMax)
initiateControlFlowAnal in interface SubpFlowpublic void initiateDataFlowAnal(SubpDefinition pSubpDefinition)
SubpFlow
initiateDataFlowAnal in interface SubpFlowpSubpDefinition - definition of subprogram to be analyzed.public BBlock getBBlock(HIR pHir)
getBBlock in interface SubpFlow
public void setBBlock(HIR pHir,
BBlock pBBlock)
setBBlock in interface SubpFlowpublic BBlock getBBlock0(Label pLabel)
getBBlock0 in interface SubpFlowpublic BBlock getBBlockForLabel(Label pLabel)
getBBlockForLabel in interface SubpFlow
public void setBBlock(Label pLabel,
BBlock pBBlock)
setBBlock in interface SubpFlowpublic HIR getLinkedSubtreeOfExpId(ExpId pExpId)
getLinkedSubtreeOfExpId in interface SubpFlowpublic DefUseList getDefUseList()
getDefUseList in interface SubpFlowpublic DefUseList getListOfDefUseList()
public DefUseList getDefUseExhaustiveList()
getDefUseExhaustiveList in interface SubpFlowpublic DefUseList getListOfDefUseExhaustiveList()
public java.util.List getDefNodeList(FlowAnalSym pSym)
getDefNodeList in interface SubpFlow
public void addDefNode(FlowAnalSym pSym,
IR pDefNode)
public UseDefList getUseDefList()
getUseDefList in interface SubpFlowpublic UseDefList getListOfUseDefList()
public UseDefList getUseDefExhaustiveList()
getUseDefExhaustiveList in interface SubpFlowpublic UseDefList getListOfUseDefExhaustiveList()
public java.util.List geUseNodeList(FlowAnalSym pSym)
geUseNodeList in interface SubpFlow
public void addUseNode(FlowAnalSym pSym,
IR pUseNode)
public BBlockVector bblockVector()
public FlowAnalSymVector flowAnalSymVector()
flowAnalSymVector in interface SubpFlowpublic java.util.Set setOfGlobalVariables()
setOfGlobalVariables in interface SubpFlowpublic java.util.Set setOfAddressTakenVariables()
setOfAddressTakenVariables in interface SubpFlowpublic void clearControlFlow()
SubpFlow
clearControlFlow in interface SubpFlowpublic void clearDataFlow()
SubpFlow
clearDataFlow in interface SubpFlowpublic void resetControlAndDataFlowInformation()
SubpFlow
resetControlAndDataFlowInformation in interface SubpFlowpublic void resetExpId()
public java.util.Set computeSetOfGlobalVariables()
computeSetOfGlobalVariables in interface SubpFlowpublic java.util.Set computeSetOfAddressTakenVariables()
computeSetOfAddressTakenVariables in interface SubpFlow
public void computeSetOfAddressTakenVariables(HIR pHir,
java.util.Set pSet,
boolean pAddrOperand)
pHir - HIR subtree to be computed.pSet - Set in which variables are recorded.pAddrOperand - true if address is to be taken,
false otherwise.public void setRestructureFlag()
setRestructureFlag in interface SubpFlowpublic boolean getRestructureFlag()
getRestructureFlag in interface SubpFlowpublic void setRecordAlias(RecordAlias pRecordAlias)
SubpFlow
setRecordAlias in interface SubpFlowpRecordAlias - is an instance of RecordAlias keeping the
the result of alias analysis for this subprogram.public RecordAlias getRecordAlias()
SubpFlow
getRecordAlias in interface SubpFlowpublic SetRefRepr getSetRefReprOfIR(IR pIR)
getSetRefReprOfIR in interface SubpFlow
public void setSetRefReprOfIR(SetRefRepr pSetRefRepr,
IR pIR)
setSetRefReprOfIR in interface SubpFlowpublic void correlateBBlockAndIR()
public void allocateBBlockOfIR()
public BBlock getBBlockOfIR(int pIndex)
getBBlockOfIR in interface SubpFlow
public void setBBlockOfIR(BBlock pBBlock,
int pIndex)
public int getIrIndexMin()
getIrIndexMin in interface SubpFlowpublic int getIrIndexMax()
getIrIndexMax in interface SubpFlowpublic int getDefCount()
getDefCount in interface SubpFlowpublic ExpId getExpId(IR pIr)
getExpId in interface SubpFlow
public ExpId getExpId(IR pIr,
int pIndex)
getExpId in interface SubpFlow
public void setExpId(IR pIr,
ExpId pExpId)
setExpId in interface SubpFlowpublic IR getRefPoint(int pIndex)
getRefPoint in interface SubpFlowpIndex - ref index (fSubpFlow.fRefIndex[nodeIndex])
public IR getDefPoint(int pIndex)
getDefPoint in interface SubpFlowpIndex - def index (fSubpFlow.fDefIndex[nodeIndex])
public int getDefIndex(int pNodeIndex)
SubpFlow
getDefIndex in interface SubpFlowpNodeIndex - IR node index.
public int recordDefRefPoint(IR pIR)
recordDefRefPoint in interface SubpFlowpublic int recordDefPoint(IR pIR)
recordDefPoint in interface SubpFlowpublic int getAssignCount()
getAssignCount in interface SubpFlowpublic int getCallCount()
getCallCount in interface SubpFlowpublic void computeBBlockSetRefReprs()
computeBBlockSetRefReprs in interface SubpFlowpublic SetRefReprList getSetRefReprList(BBlock pBBlock)
getSetRefReprList in interface SubpFlow
public void setSetRefReprList(BBlock pBBlock,
SetRefReprList pSetRefReprList)
setSetRefReprList in interface SubpFlowpublic java.util.Set subtreesContainingCall()
subtreesContainingCall in interface SubpFlow
public void setExpOfTemp(Var pTempVar,
Exp pExp)
SubpFlow
setExpOfTemp in interface SubpFlowpTempVar - variable introduced to represent an expression
(in process of optimization, etc.).pExp - public Exp getExpOfTemp(Var pTempVar)
SubpFlow
getExpOfTemp in interface SubpFlowpTempVar - variable introduced to represent an expression
(in process of optimization, etc.).
public java.util.List getListOfBBlocksFromEntry()
getListOfBBlocksFromEntry in interface SubpFlowpublic java.util.List getListOfBBlocksFromExit()
getListOfBBlocksFromExit in interface SubpFlowpublic FlowRoot getFlowRoot()
getFlowRoot in interface SubpFlowpublic boolean isComputed(int pItemIndex)
SubpFlow
isComputed in interface SubpFlowpItemIndex - item index CF_INDEXED .. DF_DEFUSELIST.
public void setComputedFlag(int pItemIndex)
SubpFlow
setComputedFlag in interface SubpFlowpItemIndex - item index CF_INDEXED .. DF_DEFUSELIST.public void resetComputedFlag(int pItemIndex)
SubpFlow
resetComputedFlag in interface SubpFlowpItemIndex - public void setUnderComputation(int pItemIndex)
SubpFlow
setUnderComputation in interface SubpFlowpItemIndex - public boolean isComputedOrUnderComputation(int pItemIndex)
isComputedOrUnderComputation in interface SubpFlowvoid printComputedFlag()
public java.util.List getExpIdList()
getExpIdList in interface SubpFlowpublic void printExpIdAndIrCorrespondence()
printExpIdAndIrCorrespondence in interface SubpFlowpublic int getComplexityLevel()
SubpFlow
getComplexityLevel in interface SubpFlowpublic boolean hasCallUnder(IR pIR)
hasCallUnder in interface SubpFlowpublic FlowAdapter getFlowAdapter()
getFlowAdapter in interface SubpFlowpublic java.util.List changeListOfFlowBBlocksToListOfAflowBBlocks(java.util.List pListOfFlowBBlocks)
changeListOfFlowBBlocksToListOfAflowBBlocks in interface SubpFlowpublic java.util.Set getMaximalCompoundVars()
SubpFlow
getMaximalCompoundVars in interface SubpFlowpublic FlowAnalSym[] getFlowAnalSymTable()
getFlowAnalSymTable in interface SubpFlowpublic BBlockVector getDominators(BBlock pBBlock)
SubpFlow
getDominators in interface SubpFlowpBBlock - Basic block.
public BBlockVector getPostDominators(BBlock pBBlock)
SubpFlow
getPostDominators in interface SubpFlowpBBlock - Basic block.
public java.util.List getDominatorList(BBlock pBBlock)
SubpFlow
getDominatorList in interface SubpFlowpBBlock - Basic block.
public java.util.List getPostDominatorList(BBlock pBBlock)
SubpFlow
getPostDominatorList in interface SubpFlowpBBlock - Basic block.
public SubpFlow getAflowSubpFlow(FlowResults pFlowResults)
public java.util.List sortExpIdCollection(java.util.Collection pExpIdCollection)
sortExpIdCollection in interface SubpFlowpExpIdCollection - list or set of FlowAnalSyms.
public boolean isFailed()
isFailed in interface SubpFlow
|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||