|
||||||||||
前のクラス 次のクラス | フレームあり フレームなし | |||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
java.lang.Object | +--coins.alias.RecordAlias
RecordAlias Do the alias analysys of HIR subprogram and record its information so that it may be used in HIR-to-LIR conversion or LIR analysis. The sequence of statements AliasAnal lAlias2 = new AliasAnalHir2(hirRoot); .... lAliasAnal1.prepareForAliasAnalHir(subpDefinition); RecordAlias lAliasInf = new RecordAlias(lAliasAnal2, subpDefinition); will make following methods available: lAliasInf.possiblyAddressTaken(var) return true if var or its aliases are taken address else return false. (If false, var may be assigned to abstract register.) lAliasInf.mayAlias(var1, var2) return true if var1 and var2 are possibly aliased where, var, var1, var2 are HIR Var symbol which may be gotten from the corresponding LIR symbol. The above information is valid while one LIR symbol corresponds to at most one HIR symbol.
フィールドの概要 | |
protected java.util.Set |
fAddressTakenVars
|
AliasAnal |
fAliasAnal
|
protected java.util.Map |
fAliasGroupOfSym
Maps variable to the set of variables that are aliased to it. |
protected java.util.Set |
fAliasOfAddressTakenVars
|
protected boolean |
fCallWithSideEffectIncluded
Turned to true if call node with side effect appered in the subprogram. |
protected int |
fDbgLevel
|
protected java.util.Set |
fEmptySet
|
protected java.util.Map |
fNodesOfSym
Maps a variable to the set of VarNodes that are used to set or refer the value of the variable. |
protected java.util.Set |
fSetOfGlobalVariables
|
protected java.util.Set |
fSetOfSyms
Set of variables appered in the subprogram. |
HirRoot |
hirRoot
|
IoRoot |
ioRoot0
|
コンストラクタの概要 | |
RecordAlias(AliasAnal pAliasAnal,
SubpDefinition pSubpDef)
RecordAlias Do the alias analysys of HIR subprogram and record its information (alias group, etc.) so that it may be used in HIR-to-LIR conversion or LIR analysis. |
|
RecordAlias(AliasAnal pAliasAnal,
SubpDefinition pSubpDef,
SubpFlow pSubpFlow)
|
メソッドの概要 | |
java.util.Set |
aliasExpGroup(java.util.Set pNodeSet)
|
java.util.Set |
aliasExps(Exp pExp)
|
java.util.Set |
aliasSymGroup(java.util.Set pSet)
Get the symbols aliased with the symbols in pSet. |
java.util.Set |
aliasSyms(Sym pSym)
Get the set of symbols that may be aliased to pSym. |
HIR |
ChangeLvalue(HIR pHir)
|
protected void |
computeAliasGroupForSyms()
computeAliasGroupForSyms: Compute alias group for all variables ppeared in the subprogram. |
Sym |
getLvalueSymbol(HIR pHir)
getLvalueSymbol |
VarNode |
getLvalueSymNode(HIR pHir)
getLvalueSymNode |
boolean |
mayAlias(Sym pSym1,
Sym pSym2)
mayAlias See if 2 variables are aliased or not. |
boolean |
possiblyAddressTaken(Sym pSym)
possiblyAddressTaken See if a variable is taken its address or not. |
void |
printMapShort(java.lang.String pHeader,
java.util.Map pMap)
recordAliasOfExp: |
(パッケージプライベート) void |
recordLvalueNodeForSym(Sym pSym,
Exp pExp,
java.util.Map pMap)
recordLvalueNodeForSym Record pExp to the set of l-value nodes corresponding to the variable pSym. |
protected void |
simplifiedAliasGrouping(SubpFlow pSubpFlow)
simplifiedAliasGrouping is selected for subprograms with large complexity level (pSubpFlow.getComplexityLevel()) > 1). |
クラス java.lang.Object から継承したメソッド |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
フィールドの詳細 |
public final HirRoot hirRoot
public final IoRoot ioRoot0
public final AliasAnal fAliasAnal
protected java.util.Set fAddressTakenVars
protected java.util.Set fAliasOfAddressTakenVars
protected java.util.Set fSetOfGlobalVariables
protected java.util.Map fNodesOfSym
protected java.util.Set fSetOfSyms
protected java.util.Map fAliasGroupOfSym
protected boolean fCallWithSideEffectIncluded
protected int fDbgLevel
protected java.util.Set fEmptySet
コンストラクタの詳細 |
public RecordAlias(AliasAnal pAliasAnal, SubpDefinition pSubpDef)
pAliasAnal
- Instance of AliasAnalHir1.pSubpDef
- Subprogram definition subtree.public RecordAlias(AliasAnal pAliasAnal, SubpDefinition pSubpDef, SubpFlow pSubpFlow)
メソッドの詳細 |
public boolean possiblyAddressTaken(Sym pSym)
pSym
- Variable (Var, Param, Elem) or
ExpId for subscripted/qualified variable.
public boolean mayAlias(Sym pSym1, Sym pSym2)
pSym1
- Variable (Var, Param, Elem) or
ExpId for subscripted/qualified variable.pSym2
- Variable (Var, Param, Elem) or
ExpId for subscripted/qualified variable.
public java.util.Set aliasSyms(Sym pSym)
pSym
- symbol to be examined.
public java.util.Set aliasSymGroup(java.util.Set pSet)
pSet
- Set of symbols to be examined.
public java.util.Set aliasExps(Exp pExp)
public java.util.Set aliasExpGroup(java.util.Set pNodeSet)
protected void computeAliasGroupForSyms()
public HIR ChangeLvalue(HIR pHir)
public Sym getLvalueSymbol(HIR pHir)
pHir
- l-value node.
public VarNode getLvalueSymNode(HIR pHir)
void recordLvalueNodeForSym(Sym pSym, Exp pExp, java.util.Map pMap)
pSym
- variable symbol.pExp
- variable node that uses pSym.pMap
- map showing the correspondence between
the variable and set of variable nodes.public void printMapShort(java.lang.String pHeader, java.util.Map pMap)
protected void simplifiedAliasGrouping(SubpFlow pSubpFlow)
pSubpFlow
-
|
||||||||||
前のクラス 次のクラス | フレームあり フレームなし | |||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |