coins.aflow
インタフェース BBlock

既知のサブインタフェースの一覧:
BBlockHir
既知の実装クラスの一覧:
BBlockHirImpl, BBlockImpl

public interface BBlock

BBlock interface: Interface for basic block class BBlock. Data flow analysis and basic control flow analysis are done based on the graph of basic blocks. All methods other than static ones are a method used for BBlock object ("this" is a BBlock instance). Structure of basic blocks: Input program represented in HIR or LIR is decomposed into basic blocks. Control flow of the program can be represented by a graph of basic blocks connected by predecessor/successor relation. Information of the basic block is represented by an object of BBlock class. Contents of a basic block can be treated as a sequence of subtrees which may be either HIR subtree or LIR subtree. Such subtree is called a "top-subtree". The top-subtree of HIR may represent a part of statement or expression where some other part of the statement or expression may be included in different basic blocks. For LIR, on the other hand, an LIR subtree is just a member of the aforementioned sequence, and there are no links or complex relations between LIR subtrees. An HIR statement attached with label (LabeledStmt) starts a new basic block. If an HIR expression has label definition, it starts a new basic block(This may change in the future). Depth first traversal of HIR tree from left to right represents a sequence of HIR nodes. In this traversal, if an HIR statement node is encountered, it starts a new top-subtree. If a top-subtree is an expression subtree and another expression subtree or statement subtree without label definition succeeds immediately after the top-subtree, then the succeeding subtree is treated as the next top-subtree. The LIR top-subtree represents an LIR instruction. In LIR flow analysis, a basic block is composed of a list of LIR top-subtees (LIR instructions). LIR basic block is based solely on the flow of control. The control flow graph LIR basic blocks form will therefore be "irreducible". Data flow analysis are done on the graph of basic blocks and most of data flow information is associated with basic blocks. The graph of basic blocks can be get from a SubpFlow object, which corresponds to a subprogram. While HIR flow analysis and optimization can be thought of as utilizing the information supplied by the control flow graph, LIR flow analysis/optimization are done totally based on the control flow graph. An LIR basic block object holds the whole LIR subtree sequence that are associated to the basic block object, while in HIR there is only a link between the the basic block and the LabeledStmt that signifies the start of the basic block. A SetRefRepr class that wraps an HIR statement/LIR instruction along with its collection class SetRefReprList will blur the distinction, however. Relation between control flow and data flow: This class provides accessor methods for data flow information for convinience, but actual data flow information is stored in an external object, namely, a FlowResults object. When there is a modification of code that changes data flow but not control flow, the data flow information the external object holds must be cleared, but the control flow information this class holds will remain valid. Methods listed here are used after flow analysis to get information or to modify control flow. (There may be many methods private to flow analysis modules other than the methods listed below.) When control flow is changed, data flow information may not be consistent because data flow information is not automatically updated by the control flow modification. In order to make them consistent, it is necessary to do data flow analysis again after a group of control flow modifications are completed.


メソッドの概要
 void addEdge(Exp pConditionalExp, BBlock pToBlock)
          addEdge: Add edge from this block to pToBlock that is to be taken when pConditionalExp is true.
 void addToPredList(BBlock pPred)
          addToPredList: addToSuccList: Add the basic block pPred/pSucc to the list of predecessors/successors of this basic block, and this block is added to the list of successors/predecessors of pPred/pSucc.
 void addToSuccList(BBlock pSucc)
           
 BBlockNodeIterator bblockNodeIterator()
           
 BBlockSubtreeIterator bblockSubtreeIterator()
          bblockSubtreeIterator: Create an iterator to traverse all top-subtree in this basic block.
 void changePredEdge(BBlock pBefore, BBlock pAfter)
           
 void changeSuccEdge(BBlock pBefore, BBlock pAfter)
          changeEdge: Change the edge between this block and pBefore to a new edge between this block and pAfter.
 void deleteBBlock()
          deleteBBlock: Delete this block and add successors of this block to the set of successors of all predecessors of this block.
 void deleteEdge(BBlock pToBlock)
          deleteEdge: Delete the edge from this block to pToBlock and adjust related addresses and links so as to keep consistency.
 void deleteFromPredList(BBlock pPred)
          deleteFromPredList: deleteFromSuccList: Delete the basic block pPred/pSucc from to the list of predecessors/successors of this basic block, and this block is deleted from the list of successors/predecessors of pPred/pSucc.
 void deleteFromSuccList(BBlock pSucc)
           
 void fuseSuccessor(BBlock pToBlock)
          fuseSuccessor: Fuse the successor pToBlock with this block and make all successors of pToBlock as successors of this block.
 int getBBlockNumber()
          getBBlockNumber: Get the block number attached to this basic block.
 ExpVector getDAvailIn()
          getAvailIn: Get bit vector showing AvailIn set of this block.
 ExpVector getDAvailOut()
          getAvailOut: Get bit vector showing AvailOut set of this block.
 FlowAnalSymVector getDDefIn()
          getDefIn: Get bit vector showing DefIn set of this block.
 FlowAnalSymVector getDDefined()
          getDDefined: Get bit vector showing DDefined set of this block.
 FlowAnalSymVector getDDefOut()
          getDefOut: Get bit vector showing DefOut set of this block.
 ExpVector getDEGen()
          getEGen: Get bit vector showing DEGen set of this block.
 FlowAnalSymVector getDExposed()
          getDExposed: Get bit vector showing DExposed set of this block.
 DefVector getDKill()
          getDKill: Get bit vector showing DKill set of this block.
 java.util.List getDomForSubpFlow()
          Get the list of BBlocks that dominate this BBlock in the SubpFlow this BBlock belongs to.
 java.util.List getDominatedChildrenForSubpFlow()
          getDominatedChildren: setDominatedChildren: Get/set the list of basic blocks immediately dominated by this block.
 FlowAnalSymVector getDUsed()
          getDUsed: //##12 Get bit vector showing DUsed set of this block.
 BBlock getImmediateDominatorForSubpFlow()
          getImmediateDominator: Get/set a basic block immediately dominating this block.
 BBlock getImmediatePostdominatorForSubpFlow()
          getImmediatePostDominator: Get a basic block immediately post dominating this block.
 IR getIrLink()
          getIrLink: Get the top-subtree that starts this basic block.
 Label getLabel()
          getLabel: Get a label attached to the first top-subtree of this basic block.
 DefVector getPDef()
          getPDef: Get bit vector showing PDef set of this block.
 FlowAnalSymVector getPDefined()
          getPDefined: Get bit vector showing PDefined set of this block.
 ExpVector getPEKill()
          getEKill: Get bit vector showing EKill set of this block.
 FlowAnalSymVector getPExposed()
          getPExposed: Get bit vector showing PExposed set of this block.
 DefVector getPKill()
          getPKill: Get bit vector showing PKill set of this block.
 FlowAnalSymVector getPLiveIn()
          getLiveIn: Get bit vector showing LiveIn set of this block.
 FlowAnalSymVector getPLiveOut()
          getLiveOut: Get bit vector showing LiveOut set of this block.
 java.util.List getPostdomForSubpFlow()
           
 java.util.List getPostdominatedChildrenForSubpFlow()
          getPostDominatedChildren: setPostDominatedChildren: Get/set the list of basic blocks post dominated by this block.
 DefVector getPReach()
          Returns the PReach.
 Edge getPredEdge(BBlock pFromBBlock)
          getPredEdge: getSuccEdge: Get the edge corresponding to the predecessor/successor to/from this basic block.
 java.util.List getPredList()
          getPredList: getSuccList: Get the predecessor/successor list of this basic block.
 FlowAnalSymVector getPUsed()
          getPUsed: //##12 Get bit vector showing PUsed set of this block.
 SetRefReprList getSetRefReprs()
          Gets the SetRefReprList object that is the list of SetRefRepr objects, each of which wrap a statement/instruction.
 java.util.List getStrictDomForSubpFlow()
          Get the strict dominator for this BBlock in the SubpFlow this BBlock belongs to.
 java.util.List getStrictPostdomForSubpFlow()
           
 SubpFlow getSubpFlow()
          Returns the SubpFlow object this BBlock belongs to.
 Edge getSuccEdge(BBlock pToBBlock)
           
 java.util.List getSuccList()
           
 java.lang.Object getWork()
          getWork: setWork: get/set information privately used in each phase.
 boolean isDAvailIn(FlowExpId pExpId)
          isAvailIn: See if the expression represented by pExpId is available (value is always computed) at entry to this block.
 boolean isDAvailOut(FlowExpId pExpId)
          isAvailOut: See if the expression represented by pExpId is available (value is always computed) at exit from this block.
 boolean isDDef(SetRefRepr pSetRefRepr)
          isDef: See if definition at position pPos is done in this block.
 boolean isDDefIn(Sym pSym)
          isDefIn: See if pSym is always defined at entry to this block whichever path may be take.
 boolean isDDefined(Sym pSym)
          isDefined: See if the value of pSym is defined in this block.
 boolean isDDefOut(Sym pSym)
          isDefOut: See if pSym is always defined at exit from this block.
 boolean isDEGen(FlowExpId pExpId)
          isEGen: See if expression designated by pReg is generated (computed in this block and afterwards its operand is not changed) in this block.
 boolean isDExposed(Sym pSym)
          isExposed: See if the variable of pSym is used in this block without setting its value in this block.
 boolean isDKill(SetRefRepr pSetRefRepr)
          isKill: See if definition at position pPos is killed in this block.
 boolean isDUsed(Sym pSym)
          isUsed: //##12 See if the value of pSym is used in this block.
 boolean isEntryBBlock()
          isEntryBlock: See if this block is the entry block in the graph of basic blocks.
 boolean isExitBBlock()
          isExitBlock: See if this block is the exit block in the graph of basic blocks.
 boolean isPDef(SetRefRepr pSetRefRepr)
           
 boolean isPDefined(Sym pSym)
          isModified: See if the value of pSym is modified in this block.
 boolean isPEKill(FlowExpId pExpId)
          isEKill: See if expression designated by pReg is killed (its operand is defined) in this block.
 boolean isPExposed(Sym pSym)
           
 boolean isPKill(SetRefRepr pSetRefRepr)
           
 boolean isPLiveIn(Sym pSym)
          isLiveIn: See if pSym is live at entry to this block (value at entry is used in this block or in some successor of this block).
 boolean isPLiveOut(Sym pSym)
          isLiveOut: See if pSym is live at exit from this block (value at exit is used in some successor of this block).
 boolean isPReach(SetRefRepr pSetRefRepr)
          isReach0: See if definition at position pPos may reach to the entry point of this block.
 boolean isPUsed(Sym pSym)
           
 FlowResults results()
          Returns the FlowResults object that holds data flow information.
 void setDAvailIn(ExpVector pVect)
           
 void setDAvailOut(ExpVector pVect)
           
 void setDDefIn(FlowAnalSymVector pVect)
           
 void setDDefined(FlowAnalSymVector pVect)
           
 void setDDefOut(FlowAnalSymVector pVect)
           
 void setDEGen(ExpVector pVect)
           
 void setDExposed(FlowAnalSymVector pVect)
           
 void setDKill(DefVector pVect)
           
 void setDomForSubpFlow(java.util.List pDom)
          Set the list of BBlocks that dominate this BBlock in the SubpFlow this BBlock belongs to.
 void setDominatedChildrenForSubpFlow(java.util.List pDominatedChildren)
           
 void setDUsed(FlowAnalSymVector pVect)
           
 void setImmediateDominatorForSubpFlow(BBlock pDominator)
           
 void setImmediatePostdominatorForSubpFlow(BBlock pPostDominator)
           
 void setIrLink(IR pIR)
           
 void setPDef(DefVector pVect)
           
 void setPDefined(FlowAnalSymVector pVect)
           
 void setPEKill(ExpVector pVect)
           
 void setPExposed(FlowAnalSymVector pVect)
           
 void setPKill(DefVector pVect)
           
 void setPLiveIn(FlowAnalSymVector pVect)
           
 void setPLiveOut(FlowAnalSymVector pVect)
           
 void setPostdomForSubpFlow(java.util.List pPostdom)
           
 void setPostdominatedChildrenForSubpFlow(java.util.List pPostDominatedChildren)
           
 void setPReach(DefVector pVect)
           
 void setPUsed(FlowAnalSymVector pVect)
           
 SetRefRepr setRefRepr(IR pIR)
          Returns the SetRefRepr object enclosing the given IR.
 void setSetRefReprs(SetRefReprList pSetRefReprs)
          Sets the SetRefReprList object that is the list of SetRefRepr objects, each of which wrap a statement/instruction.
 void setWork(java.lang.Object pWork)
           
 java.lang.String toStringDetail()
          toStringDetail: //##10
 java.lang.String toStringShort()
          toStringShort: //##10
 

メソッドの詳細

getBBlockNumber

public int getBBlockNumber()
getBBlockNumber: Get the block number attached to this basic block.

戻り値:
the block number attached to this basic block.

getIrLink

public IR getIrLink()
getIrLink: Get the top-subtree that starts this basic block. See getLirTreeList for using LIRTreeListIterator. returned value of getIrLink is not applicable for LIRTreeListIterator.

戻り値:
LabeledStmt or DefLabel subtree that is the first top-subtree in this basic block.

setIrLink

public void setIrLink(IR pIR)

getLabel

public Label getLabel()
getLabel: Get a label attached to the first top-subtree of this basic block.

戻り値:
the label attached to the first top-subtree of this basic block. If multiple labels are attached, return the first one which show a relation with other blocks.

getSubpFlow

public SubpFlow getSubpFlow()
Returns the SubpFlow object this BBlock belongs to.


results

public FlowResults results()
Returns the FlowResults object that holds data flow information.


getSetRefReprs

public SetRefReprList getSetRefReprs()
Gets the SetRefReprList object that is the list of SetRefRepr objects, each of which wrap a statement/instruction.


setSetRefReprs

public void setSetRefReprs(SetRefReprList pSetRefReprs)
Sets the SetRefReprList object that is the list of SetRefRepr objects, each of which wrap a statement/instruction.


getPredList

public java.util.List getPredList()
getPredList: getSuccList: Get the predecessor/successor list of this basic block. Elements of the list can be accessed by List methods. See ListIterator for traversing BBlocks in the predecessor/successor list.

戻り値:
the predecessor/successor list of this basic block. If this has no predecessor/successor, empty list is returned.

getSuccList

public java.util.List getSuccList()

getPredEdge

public Edge getPredEdge(BBlock pFromBBlock)
getPredEdge: getSuccEdge: Get the edge corresponding to the predecessor/successor to/from this basic block. getPredEdge: Get the edge spanning from pFromBBlock to this. getSuccEdge: Get the edge spanning from this to pToBBlock.


getSuccEdge

public Edge getSuccEdge(BBlock pToBBlock)

isEntryBBlock

public boolean isEntryBBlock()
isEntryBlock: See if this block is the entry block in the graph of basic blocks.

戻り値:
true if this is the entry block in the graph of basic blocks, else return false.

isExitBBlock

public boolean isExitBBlock()
isExitBlock: See if this block is the exit block in the graph of basic blocks.

戻り値:
true if this is the exit block in the graph of basic blocks, else return false.

getDomForSubpFlow

public java.util.List getDomForSubpFlow()
Get the list of BBlocks that dominate this BBlock in the SubpFlow this BBlock belongs to.


setDomForSubpFlow

public void setDomForSubpFlow(java.util.List pDom)
Set the list of BBlocks that dominate this BBlock in the SubpFlow this BBlock belongs to.


getStrictDomForSubpFlow

public java.util.List getStrictDomForSubpFlow()
Get the strict dominator for this BBlock in the SubpFlow this BBlock belongs to. A strict dominator is the dominator list minus the BBlock itself.


getImmediateDominatorForSubpFlow

public BBlock getImmediateDominatorForSubpFlow()
getImmediateDominator: Get/set a basic block immediately dominating this block. getImmediateDominator: return the basic block immediately dominating this block. setImmediateDominator: set pDominator as the immediate dominator of this block.


setImmediateDominatorForSubpFlow

public void setImmediateDominatorForSubpFlow(BBlock pDominator)

getDominatedChildrenForSubpFlow

public java.util.List getDominatedChildrenForSubpFlow()
getDominatedChildren: setDominatedChildren: Get/set the list of basic blocks immediately dominated by this block. Elements of the list can be handled by List methods. getDominatedChildren: return the list of basic blocks immediately dominated by this block. setDominatedChildren: set pDominatedChildren as the list of basic blocks dominated by this block. See ListIterator for traversing dominated children.


setDominatedChildrenForSubpFlow

public void setDominatedChildrenForSubpFlow(java.util.List pDominatedChildren)

getPostdomForSubpFlow

public java.util.List getPostdomForSubpFlow()

setPostdomForSubpFlow

public void setPostdomForSubpFlow(java.util.List pPostdom)

getStrictPostdomForSubpFlow

public java.util.List getStrictPostdomForSubpFlow()

getImmediatePostdominatorForSubpFlow

public BBlock getImmediatePostdominatorForSubpFlow()
getImmediatePostDominator: Get a basic block immediately post dominating this block.

戻り値:
the basic block immediately post dominating this block.

setImmediatePostdominatorForSubpFlow

public void setImmediatePostdominatorForSubpFlow(BBlock pPostDominator)

getPostdominatedChildrenForSubpFlow

public java.util.List getPostdominatedChildrenForSubpFlow()
getPostDominatedChildren: setPostDominatedChildren: Get/set the list of basic blocks post dominated by this block. Elements of the list can be handled by List methods. getPostDominatedChildren: return the list of basic blocks post dominated by this block. setPostDominatedChildren: set pPostDominatedChildren as the list of basic blocks post dominated by this block. See ListIterator for traversing dominated children.


setPostdominatedChildrenForSubpFlow

public void setPostdominatedChildrenForSubpFlow(java.util.List pPostDominatedChildren)

getWork

public java.lang.Object getWork()
getWork: setWork: get/set information privately used in each phase.


setWork

public void setWork(java.lang.Object pWork)

bblockSubtreeIterator

public BBlockSubtreeIterator bblockSubtreeIterator()
bblockSubtreeIterator: Create an iterator to traverse all top-subtree in this basic block. All top-subtrees can be get by invoking next() for the iterator. Using SetRefReprIterator is the preferred method of iterating subtrees. See SetRefReprIterator

戻り値:
the BBlockSubtree iterator for this BBlock.

bblockNodeIterator

public BBlockNodeIterator bblockNodeIterator()

toStringShort

public java.lang.String toStringShort()
toStringShort: //##10

戻り値:
Basic block number and predecessor/successor list.

toStringDetail

public java.lang.String toStringDetail()
toStringDetail: //##10

戻り値:
toStringShort(), linked node, and flags.

fuseSuccessor

public void fuseSuccessor(BBlock pToBlock)
fuseSuccessor: Fuse the successor pToBlock with this block and make all successors of pToBlock as successors of this block. "this" is a basic block having pToBlock as its only one successor, and pToBlock should have "this" as its only one predecessor. Before invoking this method, this block should be changed to have only one successor pToBlock if the condition is not satisfied. Branch addresses of this block and linkages between successors of pToBlock are changed so that consistency is kept.


changeSuccEdge

public void changeSuccEdge(BBlock pBefore,
                           BBlock pAfter)
changeEdge: Change the edge between this block and pBefore to a new edge between this block and pAfter. Branch addresses of this block and linkages between successors of this block are changed so that consistency is kept.


changePredEdge

public void changePredEdge(BBlock pBefore,
                           BBlock pAfter)

addEdge

public void addEdge(Exp pConditionalExp,
                    BBlock pToBlock)
addEdge: Add edge from this block to pToBlock that is to be taken when pConditionalExp is true. Branch addresses of this block and linkages between successors of this block are changed so that consistency is kept. "this" is a basic block having only one successor.


deleteEdge

public void deleteEdge(BBlock pToBlock)
deleteEdge: Delete the edge from this block to pToBlock and adjust related addresses and links so as to keep consistency. If pToBlock has this block as its only one predecessor, then pToBlock is deleted.


deleteBBlock

public void deleteBBlock()
deleteBBlock: Delete this block and add successors of this block to the set of successors of all predecessors of this block. Branch statement or instructions in this block is moved to all predecessors of this block so as to keep consistency. "this" is a basic block whose predecessors have this block as their only one successor. If the predecessors have more than one successors, they should be modified before invoking this method.


addToPredList

public void addToPredList(BBlock pPred)
addToPredList: addToSuccList: Add the basic block pPred/pSucc to the list of predecessors/successors of this basic block, and this block is added to the list of successors/predecessors of pPred/pSucc. Note: For method xxxPredxxx, take 1st word of predecessor/successor or the like, and for method xxxSuccxxx, take 2nd word of predecessor/successor or the like. The same rule applies to other methods in this interface.


addToSuccList

public void addToSuccList(BBlock pSucc)

deleteFromPredList

public void deleteFromPredList(BBlock pPred)
deleteFromPredList: deleteFromSuccList: Delete the basic block pPred/pSucc from to the list of predecessors/successors of this basic block, and this block is deleted from the list of successors/predecessors of pPred/pSucc.


deleteFromSuccList

public void deleteFromSuccList(BBlock pSucc)

getPDef

public DefVector getPDef()
getPDef: Get bit vector showing PDef set of this block. The PDef set of this BBlock corresponds to the DefVector whose set bits correspond to SetRefReprs execution of which may write some data to a memory location and the data on the the location may not have been overwritten when the program control exits this BBlock.

戻り値:
bit vector representing PDef(B) of this block B.

setPDef

public void setPDef(DefVector pVect)

getDKill

public DefVector getDKill()
getDKill: Get bit vector showing DKill set of this block. The DKill set ot this BBlock corresponds to the DefVector whose set bits correspond to SetRefReprs that definitely writes to the same address as one of the SetRefReprs that belong to this BBlock.

戻り値:
bit vector representing DKill(B) of this block B.

setDKill

public void setDKill(DefVector pVect)

getPKill

public DefVector getPKill()
getPKill: Get bit vector showing PKill set of this block. The PKill set ot this BBlock corresponds to the DefVector whose set bits correspond to SetRefReprs execution of which may write some data to a memory location, and its content may change or the location may become no longer traceable by execution of one of the SetRefReprs that belong to this BBlock.

戻り値:
bit vector representing PKill(B) of this block B.

setPKill

public void setPKill(DefVector pVect)

getPReach

public DefVector getPReach()
Returns the PReach. PReach is the minimum that satisfies PReach(B) = or_all( (PDef(B') | (PReach0(B') - DKill(B'))) for all predecessors B' of B.


setPReach

public void setPReach(DefVector pVect)

getDDefined

public FlowAnalSymVector getDDefined()
getDDefined: Get bit vector showing DDefined set of this block. The DDefined set is the set of FlowAnalSyms that are definitely defined in this BBlock.

戻り値:
bit vector representing DDefined(B) of this block B.

setDDefined

public void setDDefined(FlowAnalSymVector pVect)

getPDefined

public FlowAnalSymVector getPDefined()
getPDefined: Get bit vector showing PDefined set of this block. The DDefined set is the set of FlowAnalSyms whose value may have changed in this BBlock..

戻り値:
bit vector representing PDefined(B) of this block B.

setPDefined

public void setPDefined(FlowAnalSymVector pVect)

getDUsed

public FlowAnalSymVector getDUsed()
getDUsed: //##12 Get bit vector showing DUsed set of this block. DUsed set is the union of all used sets of SetRefReprs (specified by SetRefRepr#getUseSyms()).

戻り値:
bit vector representing DUsed(B) of this block B.

setDUsed

public void setDUsed(FlowAnalSymVector pVect)

getPUsed

public FlowAnalSymVector getPUsed()
getPUsed: //##12 Get bit vector showing PUsed set of this block. PUsed set is DUsed set + global variables (if this BBlock has external call) that appear in the Subp that this BBlock belongs to.

戻り値:
bit vector representing PUsed(B) of this block B.

setPUsed

public void setPUsed(FlowAnalSymVector pVect)

getDExposed

public FlowAnalSymVector getDExposed()
getDExposed: Get bit vector showing DExposed set of this block. The DExposed set is the set of FlowAnalSyms that are definitely referred to before being set within this BBlock.

戻り値:
bit vector representing DExposed(B) of this block B.

setDExposed

public void setDExposed(FlowAnalSymVector pVect)

getPExposed

public FlowAnalSymVector getPExposed()
getPExposed: Get bit vector showing PExposed set of this block. The PExposed set is the set of FlowAnalSyms that may be referred to before being set within this BBlock.

戻り値:
bit vector representing PExposed(B) of this block B.

setPExposed

public void setPExposed(FlowAnalSymVector pVect)

getDEGen

public ExpVector getDEGen()
getEGen: Get bit vector showing DEGen set of this block. The DEGen set is the set of FlowExpIds that appear in this BBlock and the result of the computation of the expression of the FlowExpId can definitely be used at the end of this BBlock.

戻り値:
bit vector representing EGen(B) of this block B.

setDEGen

public void setDEGen(ExpVector pVect)

getPEKill

public ExpVector getPEKill()
getEKill: Get bit vector showing EKill set of this block. The EKill set is the set of FlowExpIds whose operand set (specified by FlowExpId#getOperandSet()) intersects the Modified set of this BBlock.

戻り値:
bit vector representing EKill(B) of this block B.

setPEKill

public void setPEKill(ExpVector pVect)

getDAvailIn

public ExpVector getDAvailIn()
getAvailIn: Get bit vector showing AvailIn set of this block.

戻り値:
bit vector representing AvailIn(B) of this block B.

setDAvailIn

public void setDAvailIn(ExpVector pVect)

getDAvailOut

public ExpVector getDAvailOut()
getAvailOut: Get bit vector showing AvailOut set of this block.

戻り値:
bit vector representing AvailOut(B) of this block B.

setDAvailOut

public void setDAvailOut(ExpVector pVect)

getPLiveIn

public FlowAnalSymVector getPLiveIn()
getLiveIn: Get bit vector showing LiveIn set of this block.

戻り値:
bit vector representing LiveIn(B) of this block B.

setPLiveIn

public void setPLiveIn(FlowAnalSymVector pVect)

getPLiveOut

public FlowAnalSymVector getPLiveOut()
getLiveOut: Get bit vector showing LiveOut set of this block.

戻り値:
bit vector representing LiveOut(B) of this block B.

setPLiveOut

public void setPLiveOut(FlowAnalSymVector pVect)

getDDefIn

public FlowAnalSymVector getDDefIn()
getDefIn: Get bit vector showing DefIn set of this block.

戻り値:
bit vector representing DefIn(B) of this block B.

setDDefIn

public void setDDefIn(FlowAnalSymVector pVect)

getDDefOut

public FlowAnalSymVector getDDefOut()
getDefOut: Get bit vector showing DefOut set of this block.

戻り値:
bit vector representing DefOut(B) of this block B.

setDDefOut

public void setDDefOut(FlowAnalSymVector pVect)

isDDef

public boolean isDDef(SetRefRepr pSetRefRepr)
isDef: See if definition at position pPos is done in this block.

戻り値:
true if the definition is done in this block, false otherwise.

isPDef

public boolean isPDef(SetRefRepr pSetRefRepr)

isDKill

public boolean isDKill(SetRefRepr pSetRefRepr)
isKill: See if definition at position pPos is killed in this block.

戻り値:
true if the definition at pPos is killed in this block, false otherwise.

isPKill

public boolean isPKill(SetRefRepr pSetRefRepr)

isPReach

public boolean isPReach(SetRefRepr pSetRefRepr)
isReach0: See if definition at position pPos may reach to the entry point of this block.

戻り値:
true if the definition at pPos may reach to the entry point of this block, false otherwise.

isDDefined

public boolean isDDefined(Sym pSym)
isDefined: See if the value of pSym is defined in this block.

戻り値:
true if p(def(pSym)) is included in this block, false otherwise.

isPDefined

public boolean isPDefined(Sym pSym)
isModified: See if the value of pSym is modified in this block.

戻り値:
true if p(mod(pSym)) is included in this block, false otherwise.

isDUsed

public boolean isDUsed(Sym pSym)
isUsed: //##12 See if the value of pSym is used in this block.

戻り値:
true if p(use(pSym)) is included in this block, false otherwise.

isPUsed

public boolean isPUsed(Sym pSym)

isDExposed

public boolean isDExposed(Sym pSym)
isExposed: See if the variable of pSym is used in this block without setting its value in this block.

戻り値:
true if pSym is used in this block and it is not set in this block before the use point.

isPExposed

public boolean isPExposed(Sym pSym)

isDEGen

public boolean isDEGen(FlowExpId pExpId)
isEGen: See if expression designated by pReg is generated (computed in this block and afterwards its operand is not changed) in this block.

戻り値:
true if the expression is generated in this block, false otherwise.

isPEKill

public boolean isPEKill(FlowExpId pExpId)
isEKill: See if expression designated by pReg is killed (its operand is defined) in this block.

戻り値:
true if the expression is killed in this block, false otherwise.

isDAvailIn

public boolean isDAvailIn(FlowExpId pExpId)
isAvailIn: See if the expression represented by pExpId is available (value is always computed) at entry to this block.

戻り値:
true if pExpId is available at entry to this block, false otherwise.

isDAvailOut

public boolean isDAvailOut(FlowExpId pExpId)
isAvailOut: See if the expression represented by pExpId is available (value is always computed) at exit from this block.

戻り値:
true if pExpId is available at exit from this block, false otherwise.

isPLiveIn

public boolean isPLiveIn(Sym pSym)
isLiveIn: See if pSym is live at entry to this block (value at entry is used in this block or in some successor of this block).

戻り値:
true if pSym is live at entry to this block, false otherwise.

isPLiveOut

public boolean isPLiveOut(Sym pSym)
isLiveOut: See if pSym is live at exit from this block (value at exit is used in some successor of this block).

戻り値:
true if pSym is live at exit from this block, false otherwise.

isDDefIn

public boolean isDDefIn(Sym pSym)
isDefIn: See if pSym is always defined at entry to this block whichever path may be take.

戻り値:
true if pSym is always defined at entry to this block, false otherwise.

isDDefOut

public boolean isDDefOut(Sym pSym)
isDefOut: See if pSym is always defined at exit from this block.

戻り値:
true if pSym is always defined at exit from this block, false otherwise.

setRefRepr

public SetRefRepr setRefRepr(IR pIR)
Returns the SetRefRepr object enclosing the given IR.