|
||||||||||
| 前のクラス 次のクラス | フレームあり フレームなし | |||||||||
| 概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド | |||||||||
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 DefUseLists for all the FlowAnalSyms 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 UDLists for all the FlowAnalSyms 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 内の getEntryBBlockpublic void setEntryBBlock(BBlock pBlock)
SubpFlow 内の setEntryBBlockpublic BBlock getExitBBlock()
SubpFlow 内の getExitBBlockpublic void setExitBBlock(BBlock pBBlock)
SubpFlow 内の setExitBBlockpublic BBlock bblock(LabeledStmt pLabeledStmt)
SubpFlow の記述:
SubpFlow 内の bblockpublic BBlockVector bblockVector()
SubpFlow の記述:
SubpFlow 内の bblockVectorpublic ExpVector expVector()
SubpFlow 内の expVectorpublic PointVector pointVector()
SubpFlow 内の pointVectorpublic DefVector defVector()
SubpFlow 内の defVectorpublic FlowAnalSymVector flowAnalSymVector()
SubpFlow 内の flowAnalSymVectorpublic PointVectorIterator pointVectorIterator(PointVector pPointVector)
public DefVectorIterator defVectorIterator(DefVector pDefVector)
public ExpVectorIterator expVectorIterator(ExpVector pExpVector)
public BBlock getBBlock(int pBlockNumber)
SubpFlow の記述:
SubpFlow 内の getBBlockpublic void recordBBlock(BBlock pBlock)
SubpFlow 内の recordBBlockpublic int getNumberOfBBlocks()
SubpFlow 内の getNumberOfBBlockspublic SubpDefinition getSubpDefinition()
SubpFlow 内の getSubpDefinitionpublic Subp getSubpSym()
SubpFlow 内の getSubpSympublic java.util.Iterator cfgIterator()
SubpFlow 内の cfgIteratorpublic java.util.Iterator cfgFromExitIterator()
SubpFlow の記述:
SubpFlow 内の cfgFromExitIteratorpublic FAList getBBlockTable()
SubpFlow の記述:
SubpFlow 内の getBBlockTablepublic java.util.List getBBlocks()
SubpFlow の記述:
SubpFlow 内の getBBlockspublic void setBBlocks(java.util.List pBBlocks)
SubpFlow の記述:
SubpFlow 内の setBBlockspublic java.util.List getReachableBBlocks()
SubpFlow の記述:
SubpFlow 内の getReachableBBlockspublic void setReachableBBlocks(java.util.List pBBlocks)
SubpFlow の記述:
SubpFlow 内の setReachableBBlockspublic java.util.List getBBlocksFromEntry()
SubpFlow の記述:
SubpFlow 内の getBBlocksFromEntrypublic java.util.List getBBlocksFromExit()
SubpFlow の記述:
SubpFlow 内の getBBlocksFromExitpublic int getNumberOfRelevantBBlocks()
SubpFlow の記述:
SubpFlow 内の getNumberOfRelevantBBlockspublic FAList getFlowExpIdTable()
SubpFlow の記述:
SubpFlow 内の getFlowExpIdTablepublic void setFlowExpIdTable(FAList pFlowExpIdTable)
SubpFlow の記述:
SubpFlow 内の setFlowExpIdTablepublic FlowResults results()
SubpFlow 内の resultspublic AssignFlowExpId assigner()
SubpFlow の記述:
SubpFlow 内の assignerpublic FAList getSetRefReprs()
SubpFlow の記述:
SubpFlow 内の getSetRefReprspublic void setSetRefReprs(FAList pSetReprs)
SubpFlow の記述:
SubpFlow 内の setSetRefReprspublic java.util.Iterator cfgBfoIterator()
SubpFlow 内の cfgBfoIteratorpublic DefUseList getDefUseList(FlowAnalSym pFlowAnalSym)
SubpFlow の記述:
SubpFlow 内の getDefUseList
public void setDefUseList(FlowAnalSym pFlowAnalSym,
DefUseList pDefUseList)
SubpFlow の記述:
SubpFlow 内の setDefUseListpublic UDList getUDList(FlowAnalSym pFlowAnalSym)
SubpFlow の記述:
SubpFlow 内の getUDList
public void setUDList(FlowAnalSym pFlowAnalSym,
UDList pUDList)
SubpFlow の記述:
SubpFlow 内の setUDListpublic FAList getSymIndexTable()
SubpFlow の記述:
SubpFlow 内の getSymIndexTablepublic void setSymIndexTable(FAList pSymIndexTable)
SubpFlow の記述:
SubpFlow 内の setSymIndexTablepublic void makeDominatorTree()
SubpFlow の記述:
SubpFlow 内の makeDominatorTreepublic void makePostdominatorTree()
SubpFlow の記述:
SubpFlow 内の makePostdominatorTreepublic void initiateDataFlow()
SubpFlow の記述:
SubpFlow 内の initiateDataFlowpublic void findPDef()
SubpFlow の記述: BBlocks contained in this SubpFlow. The control flow graph must already be created.
SubpFlow 内の findPDefpublic void findDDefined()
SubpFlow の記述: BBlocks contained in this SubpFlow. The control flow graph must already be created.
SubpFlow 内の findDDefinedpublic void findPDefined()
SubpFlow の記述: BBlocks contained in this SubpFlow. The control flow graph must already be created.
SubpFlow 内の findPDefinedpublic void findDKill()
SubpFlow の記述: BBlocks contained in this SubpFlow. The control flow graph must already be created.
SubpFlow 内の findDKillpublic void findPKill()
SubpFlow の記述: BBlocks contained in this SubpFlow. The control flow graph must already be created.
SubpFlow 内の findPKillpublic void findDExposedUsed()
SubpFlow の記述: BBlocks contained in this SubpFlow. The control flow graph must already be created.
SubpFlow 内の findDExposedUsedpublic void findPExposedUsed()
SubpFlow の記述: BBlocks contained in this SubpFlow. The control flow graph must already be created.
SubpFlow 内の findPExposedUsedpublic void findDEGen()
SubpFlow の記述: BBlocks contained in this SubpFlow. The control flow graph must already be created.
SubpFlow 内の findDEGenpublic void findPEKill()
SubpFlow の記述: BBlocks contained in this SubpFlow. The control flow graph must already be created.
SubpFlow 内の findPEKillpublic void findDReach()
SubpFlow の記述: BBlocks contained in this SubpFlow. The control flow graph must already be created.
SubpFlow 内の findDReachpublic void findPReach()
SubpFlow の記述: BBlocks contained in this SubpFlow. The control flow graph must already be created.
SubpFlow 内の findPReachpublic void findDAvailInAvailOut()
SubpFlow の記述: BBlocks contained in this SubpFlow. The control flow graph must already be created.
SubpFlow 内の findDAvailInAvailOutpublic void findPLiveInLiveOut()
SubpFlow の記述: BBlocks contained in this SubpFlow. The control flow graph must already be created.
SubpFlow 内の findPLiveInLiveOutpublic void findDDefInDefOut()
SubpFlow の記述: BBlocks contained in this SubpFlow. The control flow graph must already be created.
SubpFlow 内の findDDefInDefOutpublic void findDDefUse()
public void findDUseDef()
public void findDefUse()
SubpFlow の記述: DefUseLists for all the FlowAnalSyms that appear in this SubpFlow. The control flow graph must already be created.
SubpFlow 内の findDefUsepublic void findUseDef()
SubpFlow の記述: UDLists for all the FlowAnalSyms that appear in this SubpFlow. The control flow graph must already be created.
SubpFlow 内の findUseDefpublic void allocateSetRefReprTable()
public SetRefRepr getSetRefReprOfIR(int pIndex)
SubpFlow の記述:
SubpFlow 内の getSetRefReprOfIR
public void setSetRefReprOfIR(SetRefRepr pSetRefRepr,
int pIndex)
SubpFlow の記述:
SubpFlow 内の setSetRefReprOfIRpublic void correlateBBlockAndIR()
SubpFlow の記述:
SubpFlow 内の correlateBBlockAndIRpublic void allocateBBlockOfIR()
public BBlock getBBlockOfIR(int pIndex)
SubpFlow の記述:
SubpFlow 内の getBBlockOfIR
public void setBBlockOfIR(BBlock pBBlock,
int pIndex)
SubpFlow の記述:
SubpFlow 内の setBBlockOfIRpublic int getIrIndexMin()
SubpFlow 内の getIrIndexMinpublic int getIrIndexMax()
SubpFlow 内の getIrIndexMaxpublic void allocateExpIdTable()
SubpFlow 内の allocateExpIdTablepublic FlowExpId getExpId(IR pIr)
SubpFlow 内の getExpId
public FlowExpId getExpId(IR pIr,
int pIndex)
public void setExpId(IR pIr,
FlowExpId pFlowExpId)
SubpFlow 内の setExpIdpublic void printExpIdTable()
SubpFlow 内の printExpIdTablepublic java.util.Set setOfGlobalVariables()
SubpFlow 内の setOfGlobalVariablespublic java.util.Set setOfAddressTakenVariables()
SubpFlow 内の setOfAddressTakenVariablespublic void clear()
SubpFlow の記述:
SubpFlow 内の clearpublic java.util.Set computeSetOfGlobalVariables()
SubpFlow 内の computeSetOfGlobalVariablespublic java.util.Set computeSetOfAddressTakenVariables()
SubpFlow 内の computeSetOfAddressTakenVariables
public void computeSetOfAddressTakenVariables(HIR pHir,
java.util.Set pSet,
boolean pAddrOperand)
public void setRestructureFlag()
SubpFlow 内の setRestructureFlagpublic boolean getRestructureFlag()
SubpFlow 内の getRestructureFlagpublic void setRecordAlias(RecordAlias pRecordAlias)
SubpFlow の記述:
SubpFlow 内の setRecordAliaspRecordAlias - 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 内の setExpOfTemppTempVar - variable introduced to represent an expression
(in process of optimization, etc.).pExp - public Exp getExpOfTemp(Var pTempVar)
SubpFlow の記述:
SubpFlow 内の getExpOfTemppTempVar - variable introduced to represent an expression
(in process of optimization, etc.).
|
||||||||||
| 前のクラス 次のクラス | フレームあり フレームなし | |||||||||
| 概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド | |||||||||