coins.aflow
Class HirSubpFlowImpl

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

public class HirSubpFlowImpl
extends SubpFlowImpl
implements HirSubpFlow

HirSubpFlowImpl class: HIR subprogram flow analysis class.


Field Summary
 
Fields inherited from class coins.aflow.SubpFlowImpl
fBBlockOfIR, fBBlockTable, fCurrentBBlock, fDfoList, fEntryBBlock, fExitBBlock, fExpIdTable, fHirAnalExtended, fInverseDfoList, fIrIndexMax, fIrIndexMin, flow, flowRoot, fPrevBBlockInSearch, fReachableBBlocks, fRecordAlias, fRecordSetRefReprs, fRestructured, fResults, fSetOfAddressTakenVariables, fSetOfGlobalVariables, fSetRefReprTable, fSubpDefinition, fTempExpCorrespondence, hirRoot, ioRoot, symRoot
 
Constructor Summary
protected HirSubpFlowImpl(FlowResults pResults, SubpDefinition pSubpDef)
           
  HirSubpFlowImpl(SubpDefinition pSubpDefinition, FlowResults pResults)
           
 
Method Summary
 AssignFlowExpId assigner()
          Retuns the AssignFlowExpId object this SubpFlow is associated with.
 BBlockSubtreeIterator bblockSubtreeIterator(BBlock pBBlock)
          bblockSubtreeItrator Get iterator that traverse top subtrees of the basic block pBBlock.
 void clear()
          Clear flow analysis information by resetting fIrIndexMin = 0, fIrIndexMax = 0, fSetOfGlobalSymbols, fSetOfAddressTakenSymbols.
 void computeBBlockSetRefReprs(SubpFlow pSubpFlow)
           
 java.util.List controlFlowAnal()
          Performs the control flow analysis of this SubpFlow and makes a list of BBlocks.
 void correlateBBlockAndIR()
          correlateBBlockAndIR: Correlate BBlock and IR so that getBBlockOfIR(hir.getIndex()) become effective.
 
Methods inherited from class coins.aflow.SubpFlowImpl
allocateBBlockOfIR, allocateExpIdTable, allocateSetRefReprTable, bblock, bblockVector, cfgBfoIterator, cfgFromExitIterator, cfgIterator, computeSetOfAddressTakenVariables, computeSetOfAddressTakenVariables, computeSetOfGlobalVariables, defVector, defVectorIterator, expVector, expVectorIterator, findDAvailInAvailOut, findDDefInDefOut, findDDefined, findDDefUse, findDefUse, findDEGen, findDExposedUsed, findDKill, findDReach, findDUseDef, findPDef, findPDefined, findPEKill, findPExposedUsed, findPKill, findPLiveInLiveOut, findPReach, findUseDef, flowAnalSymVector, getBBlock, getBBlockOfIR, getBBlocks, getBBlocksFromEntry, getBBlocksFromExit, getBBlockTable, getDefUseList, getEntryBBlock, getExitBBlock, getExpId, getExpId, getExpOfTemp, getFlowExpIdTable, getIrIndexMax, getIrIndexMin, getNumberOfBBlocks, getNumberOfRelevantBBlocks, getReachableBBlocks, getRecordAlias, getRestructureFlag, getSetRefReprOfIR, getSetRefReprs, getSubpDefinition, getSubpSym, getSymIndexTable, getUDList, initiateDataFlow, makeDominatorTree, makePostdominatorTree, pointVector, pointVectorIterator, printExpIdTable, recordBBlock, results, setBBlockOfIR, setBBlocks, setDefUseList, setEntryBBlock, setExitBBlock, setExpId, setExpOfTemp, setFlowExpIdTable, setOfAddressTakenVariables, setOfGlobalVariables, setReachableBBlocks, setRecordAlias, setRestructureFlag, setSetRefReprOfIR, setSetRefReprs, setSymIndexTable, setUDList
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface coins.aflow.SubpFlow
allocateExpIdTable, bblock, bblockVector, cfgBfoIterator, cfgFromExitIterator, cfgIterator, computeSetOfAddressTakenVariables, computeSetOfGlobalVariables, defVector, expVector, findDAvailInAvailOut, findDDefInDefOut, findDDefined, findDefUse, findDEGen, findDExposedUsed, findDKill, findDReach, findPDef, findPDefined, findPEKill, findPExposedUsed, findPKill, findPLiveInLiveOut, findPReach, findUseDef, flowAnalSymVector, getBBlock, getBBlockOfIR, getBBlocks, getBBlocksFromEntry, getBBlocksFromExit, getBBlockTable, getDefUseList, getEntryBBlock, getExitBBlock, getExpId, getExpOfTemp, getFlowExpIdTable, getIrIndexMax, getIrIndexMin, getNumberOfBBlocks, getNumberOfRelevantBBlocks, getReachableBBlocks, getRecordAlias, getRestructureFlag, getSetRefReprOfIR, getSetRefReprs, getSubpDefinition, getSubpSym, getSymIndexTable, getUDList, initiateDataFlow, makeDominatorTree, makePostdominatorTree, pointVector, printExpIdTable, recordBBlock, results, setBBlockOfIR, setBBlocks, setDefUseList, setEntryBBlock, setExitBBlock, setExpId, setExpOfTemp, setFlowExpIdTable, setOfAddressTakenVariables, setOfGlobalVariables, setReachableBBlocks, setRecordAlias, setRestructureFlag, setSetRefReprOfIR, setSetRefReprs, setSymIndexTable, setUDList
 

Constructor Detail

HirSubpFlowImpl

public HirSubpFlowImpl(SubpDefinition pSubpDefinition,
                       FlowResults pResults)

HirSubpFlowImpl

protected HirSubpFlowImpl(FlowResults pResults,
                          SubpDefinition pSubpDef)
Method Detail

bblockSubtreeIterator

public BBlockSubtreeIterator bblockSubtreeIterator(BBlock pBBlock)
Description copied from interface: SubpFlow
bblockSubtreeItrator Get iterator that traverse top subtrees of the basic block pBBlock. For HIR, all top subtrees are to be traversed. For LIR, all LIRTrees are to be traversed.

Specified by:
bblockSubtreeIterator in interface SubpFlow

controlFlowAnal

public java.util.List controlFlowAnal()
Description copied from interface: SubpFlow
Performs the control flow analysis of this SubpFlow and makes a list of BBlocks.

Specified by:
controlFlowAnal in interface SubpFlow
Returns:
list of BBlocks that are reachable.

correlateBBlockAndIR

public void correlateBBlockAndIR()
Description copied from interface: SubpFlow
correlateBBlockAndIR: Correlate BBlock and IR so that getBBlockOfIR(hir.getIndex()) become effective. Before calling this, controlFlowAnal() should be called. This may be skipped if setBBlockOfIR is called for each IR in some other processing for the subprogram corresponding to this SubpFlow.

Specified by:
correlateBBlockAndIR in interface SubpFlow
Overrides:
correlateBBlockAndIR in class SubpFlowImpl

computeBBlockSetRefReprs

public void computeBBlockSetRefReprs(SubpFlow pSubpFlow)

clear

public void clear()
Description copied from interface: SubpFlow
Clear flow analysis information by resetting fIrIndexMin = 0, fIrIndexMax = 0, fSetOfGlobalSymbols, fSetOfAddressTakenSymbols.

Specified by:
clear in interface SubpFlow
Overrides:
clear in class SubpFlowImpl

assigner

public AssignFlowExpId assigner()
Description copied from interface: SubpFlow
Retuns the AssignFlowExpId object this SubpFlow is associated with. The AssignFlowExpId object knows which FlowExpId to issue next.

Specified by:
assigner in interface SubpFlow
Overrides:
assigner in class SubpFlowImpl