|
||||||||||
前のクラス 次のクラス | フレームあり フレームなし | |||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
java.lang.Object | +--coins.aflow.SubpFlowImpl
SubpFlowImpl class: Subprogram flow analysis class. Fields and methods are common between HIR and LIR.
フィールドの概要 | |
protected BBlock[] |
fBBlockOfIR
|
protected FAList |
fBBlockTable
|
protected BBlock |
fCurrentBBlock
|
protected IrList |
fDfoList
|
protected BBlock |
fEntryBBlock
|
protected BBlock |
fExitBBlock
|
protected FlowExpId[] |
fExpIdTable
|
boolean |
fHirAnalExtended
|
protected IrList |
fInverseDfoList
|
protected int |
fIrIndexMax
|
protected int |
fIrIndexMin
|
Flow |
flow
|
FlowRoot |
flowRoot
|
protected BBlock |
fPrevBBlockInSearch
|
protected java.util.List |
fReachableBBlocks
|
protected RecordAlias |
fRecordAlias
|
RecordSetRefReprs |
fRecordSetRefReprs
|
protected boolean |
fRestructured
|
FlowResults |
fResults
|
protected java.util.Set |
fSetOfAddressTakenVariables
|
protected java.util.Set |
fSetOfGlobalVariables
|
protected SetRefRepr[] |
fSetRefReprTable
|
protected SubpDefinition |
fSubpDefinition
|
protected java.util.Map |
fTempExpCorrespondence
|
HirRoot |
hirRoot
|
IoRoot |
ioRoot
|
SymRoot |
symRoot
|
コンストラクタの概要 | |
SubpFlowImpl(SubpDefinition pSubpDef,
FlowResults pResults)
|
メソッドの概要 | |
void |
allocateBBlockOfIR()
|
void |
allocateExpIdTable()
|
void |
allocateSetRefReprTable()
|
AssignFlowExpId |
assigner()
Retuns the AssignFlowExpId object this SubpFlow is associated with. |
BBlock |
bblock(LabeledStmt pLabeledStmt)
Create new basic block corresponding to the HIR labeled statement pLabeledStmt. |
BBlockVector |
bblockVector()
Create new basic block corresponding to the LIR Prologue node pPrologue. |
java.util.Iterator |
cfgBfoIterator()
|
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. |
void |
clear()
Clear flow analysis information by resetting fIrIndexMin = 0, fIrIndexMax = 0, fSetOfGlobalSymbols, fSetOfAddressTakenSymbols. |
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 |
correlateBBlockAndIR()
correlateBBlockAndIR: Correlate BBlock and IR so that getBBlockOfIR(hir.getIndex()) become effective. |
DefVector |
defVector()
|
DefVectorIterator |
defVectorIterator(DefVector pDefVector)
|
ExpVector |
expVector()
|
ExpVectorIterator |
expVectorIterator(ExpVector pExpVector)
|
void |
findDAvailInAvailOut()
Finds the "DAvailIn" and "DAvailOut" vectors for all BBlocks contained in this SubpFlow. |
void |
findDDefInDefOut()
Finds the "DDefIn" and "DDefOut" vectors for all BBlocks contained in this SubpFlow. |
void |
findDDefined()
Finds the "DDefined" vectors for all BBlocks contained in this SubpFlow. |
void |
findDDefUse()
|
void |
findDefUse()
Finds the DefUseList s for all the FlowAnalSym s that appear in this SubpFlow. |
void |
findDEGen()
Finds the "DEGen" vectors for all BBlocks contained in this SubpFlow. |
void |
findDExposedUsed()
Finds the "DExpesed" and "PExposed" vectors for all BBlocks contained in this SubpFlow. |
void |
findDKill()
Finds the "DKill" vectors for all BBlocks contained in this SubpFlow. |
void |
findDReach()
Finds the "DReach" vectors for all BBlocks contained in this SubpFlow. |
void |
findDUseDef()
|
void |
findPDef()
Finds the "PDef" vectors for all BBlocks contained in this SubpFlow. |
void |
findPDefined()
Finds the "PDefined" vectors for all BBlocks contained in this SubpFlow. |
void |
findPEKill()
Finds the "PEKill" vectors for all BBlocks contained in this SubpFlow. |
void |
findPExposedUsed()
Finds the "PExposed" and "PUsed" vectors for all BBlocks contained in this SubpFlow. |
void |
findPKill()
Finds the "PKill" vectors for all BBlocks contained in this SubpFlow. |
void |
findPLiveInLiveOut()
Finds the "PLiveIn" and "PLiveOut" vectors for all BBlocks contained in this SubpFlow. |
void |
findPReach()
Finds the "PReach" vectors for all BBlocks contained in this SubpFlow. |
void |
findUseDef()
Finds the UDList s for all the FlowAnalSym s that appear in this SubpFlow. |
FlowAnalSymVector |
flowAnalSymVector()
|
BBlock |
getBBlock(int pBlockNumber)
getBBlock: Get the basic block whose block number is pBlockNumber. |
BBlock |
getBBlockOfIR(int pIndex)
Get BBlock corresponding to the IR node indexed by pIndex. |
java.util.List |
getBBlocks()
Same as { #getReachableBBlocks()}. |
java.util.List |
getBBlocksFromEntry()
Returns the list of BBlocks in the breadth first order beginning from the entry bblock. |
java.util.List |
getBBlocksFromExit()
Returns the list of BBlocks in the breadth first order beginning from the exit bblock and traversing backward. |
FAList |
getBBlockTable()
List of BBlock object that this SubpFlow has ever recorded. |
DefUseList |
getDefUseList(FlowAnalSym pFlowAnalSym)
Returns the DefUseList for the given FlowAnalSym in this SubpFlow. |
BBlock |
getEntryBBlock()
|
BBlock |
getExitBBlock()
|
FlowExpId |
getExpId(IR pIr)
|
FlowExpId |
getExpId(IR pIr,
int pIndex)
|
Exp |
getExpOfTemp(Var pTempVar)
Get the expression represented by the temporal variable pTempVar. |
FAList |
getFlowExpIdTable()
Returns the FlowExpId table (index number and its associated FlowExpId) for this SubpFlow. |
int |
getIrIndexMax()
|
int |
getIrIndexMin()
|
int |
getNumberOfBBlocks()
|
int |
getNumberOfRelevantBBlocks()
Number of reachable BBlocks. |
java.util.List |
getReachableBBlocks()
Returns a list of BBlocks that are reachable from the entry BBlock. |
RecordAlias |
getRecordAlias()
If returned value is not null, then alias is considered in data flow analysis. |
boolean |
getRestructureFlag()
|
SetRefRepr |
getSetRefReprOfIR(int pIndex)
Get SetRefRepr corresponding to the IR node indexed by pIndex. |
FAList |
getSetRefReprs()
Returns the list of SetRefRepr objects within this SubpFlow. |
SubpDefinition |
getSubpDefinition()
|
Subp |
getSubpSym()
|
FAList |
getSymIndexTable()
Returns the table of symbols possibly accessed in this SubpFlow. |
UDList |
getUDList(FlowAnalSym pFlowAnalSym)
Returns the UDList for the given FlowAnalSym in this SubpFlow. |
void |
initiateDataFlow()
Initiate data flow analysis. |
void |
makeDominatorTree()
Makes the dominator tree. |
void |
makePostdominatorTree()
Makes the postdominator tree. |
PointVector |
pointVector()
|
PointVectorIterator |
pointVectorIterator(PointVector pPointVector)
|
void |
printExpIdTable()
|
void |
recordBBlock(BBlock pBlock)
|
FlowResults |
results()
|
void |
setBBlockOfIR(BBlock pBBlock,
int pIndex)
Set BBlock corresponding to the IR node indexed by pIndex. |
void |
setBBlocks(java.util.List pBBlocks)
Same as { #setReachableBBlocks()}. |
void |
setDefUseList(FlowAnalSym pFlowAnalSym,
DefUseList pDefUseList)
Sets the DefUseList for the given FlowAnalSym in this SubpFlow. |
void |
setEntryBBlock(BBlock pBlock)
|
void |
setExitBBlock(BBlock pBBlock)
|
void |
setExpId(IR pIr,
FlowExpId pFlowExpId)
|
void |
setExpOfTemp(Var pTempVar,
Exp pExp)
Record pExp as the expression represented by the temporal variable pTempVar. |
void |
setFlowExpIdTable(FAList pFlowExpIdTable)
Sets the FlowExpId table (index number and its associated FlowExpId) for this SubpFlow. |
java.util.Set |
setOfAddressTakenVariables()
|
java.util.Set |
setOfGlobalVariables()
|
void |
setReachableBBlocks(java.util.List pBBlocks)
Sets a list of BBlocks that are reachable from the entry BBlock. |
void |
setRecordAlias(RecordAlias pRecordAlias)
Record a RecordAlias instance in order to indicate that alias is considered in data flow analysis. |
void |
setRestructureFlag()
|
void |
setSetRefReprOfIR(SetRefRepr pSetRefRepr,
int pIndex)
Set SetRefRepr corresponding to the IR node indexed by pIndex. |
void |
setSetRefReprs(FAList pSetReprs)
Sets the list of SetRefRepr objects within this SubpFlow. |
void |
setSymIndexTable(FAList pSymIndexTable)
Sets the table of symbols possibly accessed in this SubpFlow. |
void |
setUDList(FlowAnalSym pFlowAnalSym,
UDList pUDList)
Sets the UDList for the given FlowAnalSym in this SubpFlow. |
クラス java.lang.Object から継承したメソッド |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
インタフェース coins.aflow.SubpFlow から継承したメソッド |
bblockSubtreeIterator, controlFlowAnal |
フィールドの詳細 |
public final FlowRoot flowRoot
public final IoRoot ioRoot
public final SymRoot symRoot
public final HirRoot hirRoot
public final Flow flow
protected SubpDefinition fSubpDefinition
protected BBlock fPrevBBlockInSearch
protected BBlock fEntryBBlock
protected BBlock fExitBBlock
protected BBlock fCurrentBBlock
protected FAList fBBlockTable
protected IrList fDfoList
protected IrList fInverseDfoList
protected java.util.List fReachableBBlocks
public final FlowResults fResults
public boolean fHirAnalExtended
public RecordSetRefReprs fRecordSetRefReprs
protected SetRefRepr[] fSetRefReprTable
protected BBlock[] fBBlockOfIR
protected int fIrIndexMin
protected int fIrIndexMax
protected FlowExpId[] fExpIdTable
protected boolean fRestructured
protected java.util.Set fSetOfGlobalVariables
protected java.util.Set fSetOfAddressTakenVariables
protected java.util.Map fTempExpCorrespondence
protected RecordAlias fRecordAlias
コンストラクタの詳細 |
public SubpFlowImpl(SubpDefinition pSubpDef, FlowResults pResults)
メソッドの詳細 |
public BBlock getEntryBBlock()
SubpFlow
内の getEntryBBlock
public void setEntryBBlock(BBlock pBlock)
SubpFlow
内の setEntryBBlock
public BBlock getExitBBlock()
SubpFlow
内の getExitBBlock
public void setExitBBlock(BBlock pBBlock)
SubpFlow
内の setExitBBlock
public BBlock bblock(LabeledStmt pLabeledStmt)
SubpFlow
の記述:
SubpFlow
内の bblock
public BBlockVector bblockVector()
SubpFlow
の記述:
SubpFlow
内の bblockVector
public ExpVector expVector()
SubpFlow
内の expVector
public PointVector pointVector()
SubpFlow
内の pointVector
public DefVector defVector()
SubpFlow
内の defVector
public FlowAnalSymVector flowAnalSymVector()
SubpFlow
内の flowAnalSymVector
public PointVectorIterator pointVectorIterator(PointVector pPointVector)
public DefVectorIterator defVectorIterator(DefVector pDefVector)
public ExpVectorIterator expVectorIterator(ExpVector pExpVector)
public BBlock getBBlock(int pBlockNumber)
SubpFlow
の記述:
SubpFlow
内の getBBlock
public void recordBBlock(BBlock pBlock)
SubpFlow
内の recordBBlock
public int getNumberOfBBlocks()
SubpFlow
内の getNumberOfBBlocks
public SubpDefinition getSubpDefinition()
SubpFlow
内の getSubpDefinition
public Subp getSubpSym()
SubpFlow
内の getSubpSym
public java.util.Iterator cfgIterator()
SubpFlow
内の cfgIterator
public java.util.Iterator cfgFromExitIterator()
SubpFlow
の記述:
SubpFlow
内の cfgFromExitIterator
public FAList getBBlockTable()
SubpFlow
の記述:
SubpFlow
内の getBBlockTable
public java.util.List getBBlocks()
SubpFlow
の記述:
SubpFlow
内の getBBlocks
public void setBBlocks(java.util.List pBBlocks)
SubpFlow
の記述:
SubpFlow
内の setBBlocks
public java.util.List getReachableBBlocks()
SubpFlow
の記述:
SubpFlow
内の getReachableBBlocks
public void setReachableBBlocks(java.util.List pBBlocks)
SubpFlow
の記述:
SubpFlow
内の setReachableBBlocks
public java.util.List getBBlocksFromEntry()
SubpFlow
の記述:
SubpFlow
内の getBBlocksFromEntry
public java.util.List getBBlocksFromExit()
SubpFlow
の記述:
SubpFlow
内の getBBlocksFromExit
public int getNumberOfRelevantBBlocks()
SubpFlow
の記述:
SubpFlow
内の getNumberOfRelevantBBlocks
public FAList getFlowExpIdTable()
SubpFlow
の記述:
SubpFlow
内の getFlowExpIdTable
public void setFlowExpIdTable(FAList pFlowExpIdTable)
SubpFlow
の記述:
SubpFlow
内の setFlowExpIdTable
public FlowResults results()
SubpFlow
内の results
public AssignFlowExpId assigner()
SubpFlow
の記述:
SubpFlow
内の assigner
public FAList getSetRefReprs()
SubpFlow
の記述:
SubpFlow
内の getSetRefReprs
public void setSetRefReprs(FAList pSetReprs)
SubpFlow
の記述:
SubpFlow
内の setSetRefReprs
public java.util.Iterator cfgBfoIterator()
SubpFlow
内の cfgBfoIterator
public DefUseList getDefUseList(FlowAnalSym pFlowAnalSym)
SubpFlow
の記述:
SubpFlow
内の getDefUseList
public void setDefUseList(FlowAnalSym pFlowAnalSym, DefUseList pDefUseList)
SubpFlow
の記述:
SubpFlow
内の setDefUseList
public UDList getUDList(FlowAnalSym pFlowAnalSym)
SubpFlow
の記述:
SubpFlow
内の getUDList
public void setUDList(FlowAnalSym pFlowAnalSym, UDList pUDList)
SubpFlow
の記述:
SubpFlow
内の setUDList
public FAList getSymIndexTable()
SubpFlow
の記述:
SubpFlow
内の getSymIndexTable
public void setSymIndexTable(FAList pSymIndexTable)
SubpFlow
の記述:
SubpFlow
内の setSymIndexTable
public void makeDominatorTree()
SubpFlow
の記述:
SubpFlow
内の makeDominatorTree
public void makePostdominatorTree()
SubpFlow
の記述:
SubpFlow
内の makePostdominatorTree
public void initiateDataFlow()
SubpFlow
の記述:
SubpFlow
内の initiateDataFlow
public void findPDef()
SubpFlow
の記述: BBlocks
contained in this SubpFlow. The control flow graph must already be created.
SubpFlow
内の findPDef
public void findDDefined()
SubpFlow
の記述: BBlocks
contained in this SubpFlow. The control flow graph must already be created.
SubpFlow
内の findDDefined
public void findPDefined()
SubpFlow
の記述: BBlocks
contained in this SubpFlow. The control flow graph must already be created.
SubpFlow
内の findPDefined
public void findDKill()
SubpFlow
の記述: BBlocks
contained in this SubpFlow. The control flow graph must already be created.
SubpFlow
内の findDKill
public void findPKill()
SubpFlow
の記述: BBlocks
contained in this SubpFlow. The control flow graph must already be created.
SubpFlow
内の findPKill
public void findDExposedUsed()
SubpFlow
の記述: BBlocks
contained in this SubpFlow. The control flow graph must already be created.
SubpFlow
内の findDExposedUsed
public void findPExposedUsed()
SubpFlow
の記述: BBlocks
contained in this SubpFlow. The control flow graph must already be created.
SubpFlow
内の findPExposedUsed
public void findDEGen()
SubpFlow
の記述: BBlocks
contained in this SubpFlow. The control flow graph must already be created.
SubpFlow
内の findDEGen
public void findPEKill()
SubpFlow
の記述: BBlocks
contained in this SubpFlow. The control flow graph must already be created.
SubpFlow
内の findPEKill
public void findDReach()
SubpFlow
の記述: BBlocks
contained in this SubpFlow. The control flow graph must already be created.
SubpFlow
内の findDReach
public void findPReach()
SubpFlow
の記述: BBlocks
contained in this SubpFlow. The control flow graph must already be created.
SubpFlow
内の findPReach
public void findDAvailInAvailOut()
SubpFlow
の記述: BBlocks
contained in this SubpFlow. The control flow graph must already be created.
SubpFlow
内の findDAvailInAvailOut
public void findPLiveInLiveOut()
SubpFlow
の記述: BBlocks
contained in this SubpFlow. The control flow graph must already be created.
SubpFlow
内の findPLiveInLiveOut
public void findDDefInDefOut()
SubpFlow
の記述: BBlocks
contained in this SubpFlow. The control flow graph must already be created.
SubpFlow
内の findDDefInDefOut
public void findDDefUse()
public void findDUseDef()
public void findDefUse()
SubpFlow
の記述: DefUseList
s for all the FlowAnalSym
s that appear in this SubpFlow. The control flow graph must already be created.
SubpFlow
内の findDefUse
public void findUseDef()
SubpFlow
の記述: UDList
s for all the FlowAnalSym
s that appear in this SubpFlow. The control flow graph must already be created.
SubpFlow
内の findUseDef
public void allocateSetRefReprTable()
public SetRefRepr getSetRefReprOfIR(int pIndex)
SubpFlow
の記述:
SubpFlow
内の getSetRefReprOfIR
public void setSetRefReprOfIR(SetRefRepr pSetRefRepr, int pIndex)
SubpFlow
の記述:
SubpFlow
内の setSetRefReprOfIR
public void correlateBBlockAndIR()
SubpFlow
の記述:
SubpFlow
内の correlateBBlockAndIR
public void allocateBBlockOfIR()
public BBlock getBBlockOfIR(int pIndex)
SubpFlow
の記述:
SubpFlow
内の getBBlockOfIR
public void setBBlockOfIR(BBlock pBBlock, int pIndex)
SubpFlow
の記述:
SubpFlow
内の setBBlockOfIR
public int getIrIndexMin()
SubpFlow
内の getIrIndexMin
public int getIrIndexMax()
SubpFlow
内の getIrIndexMax
public void allocateExpIdTable()
SubpFlow
内の allocateExpIdTable
public FlowExpId getExpId(IR pIr)
SubpFlow
内の getExpId
public FlowExpId getExpId(IR pIr, int pIndex)
public void setExpId(IR pIr, FlowExpId pFlowExpId)
SubpFlow
内の setExpId
public void printExpIdTable()
SubpFlow
内の printExpIdTable
public java.util.Set setOfGlobalVariables()
SubpFlow
内の setOfGlobalVariables
public java.util.Set setOfAddressTakenVariables()
SubpFlow
内の setOfAddressTakenVariables
public void clear()
SubpFlow
の記述:
SubpFlow
内の clear
public java.util.Set computeSetOfGlobalVariables()
SubpFlow
内の computeSetOfGlobalVariables
public java.util.Set computeSetOfAddressTakenVariables()
SubpFlow
内の computeSetOfAddressTakenVariables
public void computeSetOfAddressTakenVariables(HIR pHir, java.util.Set pSet, boolean pAddrOperand)
public void setRestructureFlag()
SubpFlow
内の setRestructureFlag
public boolean getRestructureFlag()
SubpFlow
内の getRestructureFlag
public void setRecordAlias(RecordAlias pRecordAlias)
SubpFlow
の記述:
SubpFlow
内の setRecordAlias
pRecordAlias
- is an instance of RecordAlias keeping the
the result of alias analysis for this subprogram.public RecordAlias getRecordAlias()
SubpFlow
の記述:
SubpFlow
内の getRecordAlias
public void setExpOfTemp(Var pTempVar, Exp pExp)
SubpFlow
の記述:
SubpFlow
内の setExpOfTemp
pTempVar
- variable introduced to represent an expression
(in process of optimization, etc.).pExp
- public Exp getExpOfTemp(Var pTempVar)
SubpFlow
の記述:
SubpFlow
内の getExpOfTemp
pTempVar
- variable introduced to represent an expression
(in process of optimization, etc.).
|
||||||||||
前のクラス 次のクラス | フレームあり フレームなし | |||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |