coins.flow
クラス SetRefReprHirEImpl

java.lang.Object
  |
  +--coins.flow.SetRefReprImpl
        |
        +--coins.flow.SetRefReprHirImpl
              |
              +--coins.flow.SetRefReprHirEImpl
すべての実装インタフェース:
SetRefRepr

public class SetRefReprHirEImpl
extends SetRefReprHirImpl
implements SetRefRepr

Implementation of the SetRefRepr interface for HIR


フィールドの概要
 Flow flow
           
protected  Stmt fStmt
           
 HirRoot hirRoot
           
 
クラス coins.flow.SetRefReprImpl から継承したフィールド
fAllSubexps, fBBlock, fCallNodes, fCallWithSideEffectIncluded, fCorrespondingExpId, fDbgLevel, fDefExpId, fDefSym, fExpIdSet, fExps, fFlags, fIR, fLeafOperands, fLhsSyms, flowRoot, fModSyms, fModSyms00, fModSymsStmt, fOpCode, fOperandExp, fSubpFlow, fUseFlowAnalSyms, fUseNodeList, fUseSymList, fUseSyms, symRoot
 
インタフェース coins.flow.SetRefRepr から継承したフィールド
HAS_CONTROL, IS_RETURN, SETS
 
コンストラクタの概要
SetRefReprHirEImpl(HIR pSubtree, BBlock pBBlock, boolean pDef, java.util.Set pModSymsStmt)
          SetRefReprHirEImpl instanciates SetRefRepr for the subtree pSubtree by computing SetRefRepr for child subtrees.
 
メソッドの概要
 java.util.Set allSubexps()
          operandExp ExpId's of all subexpressions of the subtree corresponding to this.
protected  void computeSetRefRepr(HIR pHir, BBlock pBBlock, boolean pDef, java.util.Set pModSymsStmt)
          computeSetRefRepr Compute defined symbols (fDefSym) and set of possibly modified variables (fModSyms), variables used as leaf operand (fLeafOperands).
 IR defNode()
          Returns the IR node which links to the definitely defined (set) symbol.
 Stmt getStmt()
           
 boolean hasCallWithSideEffect()
           
 java.util.Set leafOperands()
          leafOperands Get the set of symbols used as operands gathered from all leaf nodes of the subtree corresponding to this.
 java.util.Set modSyms()
          modSyms returns the set of symbols that are possibly defined in this SetRefRepr.
 java.util.Set modSyms0()
          modSyms0 returns the set of symbols that are possibly defined in this SetRefRepr as modSyms() and symbols externally defined (i.e. via external calls) if call is included.
 java.util.Set modSymsStmt()
          modSymsStmt returns the set of symbols that are possibly defined in the this SetRefRepr.
 java.util.Set operandExp()
          operandExp ExpId's of subexpressions used as direct operands by the node corresponding to this.
 
クラス coins.flow.SetRefReprHirImpl から継承したメソッド
callNodes, checkWhetherBranch, defSym, expIdSet, exps, exps, expsUnder, flowAnalSymsUnder, hasDefiniteValue, lhsSyms, modSyms00, modSymsUnder, nodeListIterator, setInformation, symsModifiedForLhsExp, useNodeIterator, useNodeList, useNodeList, writesToDefiniteAddress
 
クラス coins.flow.SetRefReprImpl から継承したメソッド
allFalse, defExpId, expIterator, expListIterator, expListIterator, expListIteratorFromBottom, getBBlock, getCorrespondingExpId, getDefFlowAnalSym, getDefSym, getFlag, getIR, getUseFlowAnalSyms, hasControl, isReturn, setFlag, sets, topUseNode, toString, useSymList, useSyms
 
クラス java.lang.Object から継承したメソッド
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 
インタフェース coins.flow.SetRefRepr から継承したメソッド
allFalse, callNodes, defSym, expIterator, expListIterator, expListIterator, getBBlock, getDefSym, getFlag, getIR, getUseFlowAnalSyms, hasControl, isReturn, lhsSyms, modSyms00, nodeListIterator, setFlag, sets, topUseNode, toString, useNodeIterator, useNodeList, useSymList, useSyms, writesToDefiniteAddress
 

フィールドの詳細

fStmt

protected Stmt fStmt

hirRoot

public final HirRoot hirRoot

flow

public final Flow flow
コンストラクタの詳細

SetRefReprHirEImpl

public SetRefReprHirEImpl(HIR pSubtree,
                          BBlock pBBlock,
                          boolean pDef,
                          java.util.Set pModSymsStmt)
SetRefReprHirEImpl instanciates SetRefRepr for the subtree pSubtree by computing SetRefRepr for child subtrees. For leaf children, SetRefRepr is not created. Required information fSetRefReprTable, fIrIndexMin, fIrIndexMax, and each item of fSetRefReprTable are set by HirSubpFlowImpl (and LirSubpFlowImpl). DataFlowImpl.recordSetRefRepr() eventually instanctiates this.

パラメータ:
pSubtree - HIR subtree for which SetRefRepr is to be computed.
pBBlock - Basic block containing pSubtree.
pDef - true if pSubtree defines a symbol, false otherwise.
メソッドの詳細

computeSetRefRepr

protected void computeSetRefRepr(HIR pHir,
                                 BBlock pBBlock,
                                 boolean pDef,
                                 java.util.Set pModSymsStmt)
computeSetRefRepr Compute defined symbols (fDefSym) and set of possibly modified variables (fModSyms), variables used as leaf operand (fLeafOperands). for the HIR subtree pHir within the basic block pBBlock. Fields fDefSym, fModSyms, fLeafOperands are computed and and SETS flag of fFlags are set true if some symbol is defined. The branchs outside pBBlock are not processed. Traverse should be in the sequence of evaluation at execution time.

パラメータ:
pHir - subtree to be processed.
pBBlock - basic block within which variables are scanned.
pDef - true if traversing in define mode, false otherwise.
pModSymsStmt - set of symbols whose value may be modified by the simple statement containing pHir.

getStmt

public Stmt getStmt()
オーバーライド:
クラス SetRefReprHirImpl 内の getStmt

defNode

public IR defNode()
インタフェース SetRefRepr の記述:
Returns the IR node which links to the definitely defined (set) symbol. Returns null if sets() returns false.

定義:
インタフェース SetRefRepr 内の defNode
オーバーライド:
クラス SetRefReprHirImpl 内の defNode
戻り値:
the IR node which links to the defined (set) symbol.

modSyms

public java.util.Set modSyms()
modSyms returns the set of symbols that are possibly defined in this SetRefRepr. Symbols externally defined (i.e. via external calls) are not included. LHS symbol or ExpId if AssignStmt; ExpId if Exp; array symbol if SubscriptedExp; all variables if pointed var assignment;

定義:
インタフェース SetRefRepr 内の modSyms
オーバーライド:
クラス SetRefReprHirImpl 内の modSyms
戻り値:
the set of symbols that are possibly defined.

modSymsStmt

public java.util.Set modSymsStmt()
modSymsStmt returns the set of symbols that are possibly defined in the this SetRefRepr. Symbols externally defined (i.e. via external calls) are not included. LHS symbol or ExpId if AssignStmt; ExpId if Exp; array symbol if SubscriptedExp; all variables if pointed var assignment;

戻り値:
the set of symbols that are possibly defined.

modSyms0

public java.util.Set modSyms0()
modSyms0 returns the set of symbols that are possibly defined in this SetRefRepr as modSyms() and symbols externally defined (i.e. via external calls) if call is included.

戻り値:
the set of symbols that are possibly defined including external symbols if call is included.

leafOperands

public java.util.Set leafOperands()
leafOperands Get the set of symbols used as operands gathered from all leaf nodes of the subtree corresponding to this. ExpId's for intermediate results are excluded.


operandExp

public java.util.Set operandExp()
operandExp ExpId's of subexpressions used as direct operands by the node corresponding to this. Leaf operands are excluded.


allSubexps

public java.util.Set allSubexps()
operandExp ExpId's of all subexpressions of the subtree corresponding to this. Leaf operands are excluded.


hasCallWithSideEffect

public boolean hasCallWithSideEffect()
定義:
インタフェース SetRefRepr 内の hasCallWithSideEffect
オーバーライド:
クラス SetRefReprHirImpl 内の hasCallWithSideEffect