coins.aflow
クラス HashBasedFlowExpId

java.lang.Object
  |
  +--coins.aflow.HashBasedFlowExpId
すべての実装インタフェース:
FlowExpId
直系の既知のサブクラス:
HashBasedFlowExpIdHir

public abstract class HashBasedFlowExpId
extends java.lang.Object
implements FlowExpId

An implementation of FlowExpId. Subtrees that have exactly the same structure have the same HashBasedFlowExpId.


フィールドの概要
protected  ExpId fExpId
          Creates new HaseBasedFlowExpId
protected  boolean fHasCall
           
(パッケージプライベート)  int fIndex
           
protected  boolean fLHS
          fLHS is true if corresponding expression is left hand side expression of AssignStmt.
(パッケージプライベート)  java.util.Set fOperandSet
           
(パッケージプライベート)  java.util.Set fOperandSet0
           
(パッケージプライベート)  int fOperationCount
           
protected  FlowResults fResults
           
protected  SubpFlow fSubpFlow
           
protected  IR fTree
           
protected  IoRoot ioRoot
           
protected  SymRoot symRoot
           
 
コンストラクタの概要
(パッケージプライベート) HashBasedFlowExpId(IR pNode, int pIndex, SubpFlow pSubpFlow)
           
 
メソッドの概要
protected  java.lang.String generateExpIdName(int pIndex)
          generateExpIdName: //##41 Generate ExpId name of the form xIdnnn where nnn is the string representing pIndex.
 DefUseList getDefUseList()
           
 ExpId getExpId()
           
 int getIndex()
          Returns the index attached to this FlowExpId.
 IR getLinkedNode()
          Returns an instance of the IR node whose associated FlowExpId is this.
protected  HashBasedFlowExpId getNextInChain()
           
 int getNumberOfOperations()
          Returns the number of operations this FlowExpId involves.
 java.util.Set getOperandSet()
          Returns the set of FlowAnalSyms that are operands of this FlowExpId.
 java.util.Set getOperandSet0()
          Returns the set of FlowAnalSyms that are operands of this FlowExpId, and that hold the value that may contribute to the result of the computation of this FlowExpId.
 SubpFlow getSubpFlow()
           
 IR getTree()
          Returns a copy of the tree structure this FlowExpId represents.
 UDList getUDList()
           
 boolean hasCall()
           
 boolean isLHS()
          Return true if the corresponding expression is left hand side expression of AssignStmt.
abstract  void operandInfo(IR pIr)
           
 void setLHSFlag()
          Set flag showing that corresponding expression is left hand side expression of AssignStmt.
protected  void setNextInChain(HashBasedFlowExpId pNext)
           
 java.lang.String toString()
           
 
クラス java.lang.Object から継承したメソッド
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 
インタフェース coins.aflow.FlowExpId から継承したメソッド
toStringShort
 

フィールドの詳細

fIndex

final int fIndex

fResults

protected FlowResults fResults

ioRoot

protected final IoRoot ioRoot

symRoot

protected final SymRoot symRoot

fOperationCount

int fOperationCount

fOperandSet

final java.util.Set fOperandSet

fOperandSet0

final java.util.Set fOperandSet0

fSubpFlow

protected SubpFlow fSubpFlow

fTree

protected IR fTree

fHasCall

protected boolean fHasCall

fLHS

protected boolean fLHS
fLHS is true if corresponding expression is left hand side expression of AssignStmt.


fExpId

protected ExpId fExpId
Creates new HaseBasedFlowExpId

コンストラクタの詳細

HashBasedFlowExpId

HashBasedFlowExpId(IR pNode,
                   int pIndex,
                   SubpFlow pSubpFlow)
メソッドの詳細

getNextInChain

protected HashBasedFlowExpId getNextInChain()

setNextInChain

protected void setNextInChain(HashBasedFlowExpId pNext)

getLinkedNode

public IR getLinkedNode()
インタフェース FlowExpId の記述:
Returns an instance of the IR node whose associated FlowExpId is this. Such a node is likely a part of the program tree so should not be modified.

定義:
インタフェース FlowExpId 内の getLinkedNode

getTree

public IR getTree()
インタフェース FlowExpId の記述:
Returns a copy of the tree structure this FlowExpId represents. "Copy" means the node returned is not part of the main IR tree. Each invocation of this method returns the same copy created when this FlowExpId was created, and does not return a fresh copy of the IR tree each time.

定義:
インタフェース FlowExpId 内の getTree

getIndex

public int getIndex()
インタフェース FlowExpId の記述:
Returns the index attached to this FlowExpId. The indexing scope is the same as the scope of this FlowExpId.

定義:
インタフェース FlowExpId 内の getIndex

getOperandSet

public java.util.Set getOperandSet()
インタフェース FlowExpId の記述:
Returns the set of FlowAnalSyms that are operands of this FlowExpId. An operand of a FlowExpId is simply a FlowAnalSym that is attached to one of the nodes that comprise the tree represented by the FlowExpId.

定義:
インタフェース FlowExpId 内の getOperandSet

getOperandSet0

public java.util.Set getOperandSet0()
インタフェース FlowExpId の記述:
Returns the set of FlowAnalSyms that are operands of this FlowExpId, and that hold the value that may contribute to the result of the computation of this FlowExpId. For example, in HIR, if a symbol node is operated by the addressOf operator, and there is no contentsOf operator operating at all afterwards, the symbol attached to the symbol node is not included in the set returned by this method.

定義:
インタフェース FlowExpId 内の getOperandSet0

operandInfo

public abstract void operandInfo(IR pIr)

toString

public java.lang.String toString()
オーバーライド:
クラス java.lang.Object 内の toString

getNumberOfOperations

public int getNumberOfOperations()
インタフェース FlowExpId の記述:
Returns the number of operations this FlowExpId involves. This is not more than but roughly equal to the number of this FlowExpId's linked node's descendant nodes.

定義:
インタフェース FlowExpId 内の getNumberOfOperations

getDefUseList

public DefUseList getDefUseList()
定義:
インタフェース FlowExpId 内の getDefUseList

getUDList

public UDList getUDList()
定義:
インタフェース FlowExpId 内の getUDList

getSubpFlow

public SubpFlow getSubpFlow()

hasCall

public boolean hasCall()
定義:
インタフェース FlowExpId 内の hasCall

generateExpIdName

protected java.lang.String generateExpIdName(int pIndex)
generateExpIdName: //##41 Generate ExpId name of the form xIdnnn where nnn is the string representing pIndex. If xIdnnn conflicts with other symbol, then xIdnnn_mm where mm is one of 1, 2, 3, ... .

戻り値:
the generated ExpId name.

getExpId

public ExpId getExpId()
定義:
インタフェース FlowExpId 内の getExpId

setLHSFlag

public void setLHSFlag()
インタフェース FlowExpId の記述:
Set flag showing that corresponding expression is left hand side expression of AssignStmt.

定義:
インタフェース FlowExpId 内の setLHSFlag

isLHS

public boolean isLHS()
インタフェース FlowExpId の記述:
Return true if the corresponding expression is left hand side expression of AssignStmt. left hand side expression is not treated as common subexpression in usual case.

定義:
インタフェース FlowExpId 内の isLHS
戻り値:
true if setLHSFlag() is called, false otherwise.