|
||||||||||
| 前のクラス 次のクラス | フレームあり フレームなし | |||||||||
| 概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド | |||||||||
java.lang.Object | +--coins.alias.AliasAnalHir1
Alias analysis level 1 implementation.
Alias analysis level 1 is a flow-insensitive intraprocedural analysis.
This class drives the alias analysis and also implements AliasAnal interface.
Two modes (Optimistic and Pessimistic), or options, for the analysis are available, each of which uses different assumptions about aliasing.
Handling of source languages other than C is not supported in this version.
| フィールドの概要 | |
protected static int |
AREA_INCLUDES
|
protected static int |
AREA_OVERLAPS
|
(パッケージプライベート) Tag[] |
fBitAssignedTags
Array of Tags that are assigned bits. |
(パッケージプライベート) TagVector |
fCurFrame
TagVector that corresponds to the current
frame (automatic variables that are in scope). |
protected int |
fDbgLevel
|
(パッケージプライベート) TagVector |
fExternOpt
TagVector that corresponds to the area
visible from the outside of the current subprogram.
|
(パッケージプライベート) TagVector |
fExternPes
TagVector that corresponds to the area
visible from the outside of the current subprogram.
|
(パッケージプライベート) AliasFactory |
fFactory
Factory object used to create other objects. |
(パッケージプライベート) TagVector |
fGlobals
TagVector that corresponds to global variables.
|
(パッケージプライベート) TagVector |
fHeap
TagVector that corresponds to the heap
(allocated) area. |
(パッケージプライベート) java.util.Map |
fHIRTomallocTag
Map that maps malloc invocation nodes to corresponding tags. |
(パッケージプライベート) java.util.Map |
fHIRToTag
Map that maps HIR nodes to tags. |
(パッケージプライベート) boolean |
fIsOptimistic
Alias analysis option. |
(パッケージプライベート) TagVector |
fOther
TagVector that corresponds to the area
that is not included in fCurFrame or
fStatic or fHeap, and
includes frames from subprograms that called the
currrent subprogram, global variables that do not
appear in the current subprogram, and area allocated
by the subprograms that called the current subprogram. |
(パッケージプライベート) TagVector[] |
fPointsTo
The points-to graph represented as an array of TagVectors. |
protected java.util.Set |
fPredefined
Set of predefined functions. |
(パッケージプライベート) TagVector |
fStatic
TagVector that corresponds to the static area. |
(パッケージプライベート) int |
fTagBitCount
Number of bit-allocated tags. |
protected AliasUtil |
fUtil
AliasUtil object used to access utility methods. |
HirRoot |
hirRoot
The HirRoot object shared by every module
in the program. |
IoRoot |
ioRoot
The IoRoot object shared by every module
in the program. |
protected static int |
MAY_ALIAS
|
protected static int |
MUST_ALIAS
|
protected static int |
NOT_ALIAS
|
protected static java.lang.String |
PREDEFINED
|
| インタフェース coins.alias.AliasAnal から継承したフィールド |
CATEGORY_NAME |
| コンストラクタの概要 | |
AliasAnalHir1(boolean pIsOptimistic,
HirRoot pHirRoot)
Creats a new instance of AliasAnalHir1 that
performs alias analysis with the specified assumptions
(pIsOptimistic) about aliasing.
|
|
AliasAnalHir1(HirRoot pHirRoot)
Creates a new instance of AliasAnalHir1
that performs alias analysis based on some set of
assumptions about aliasing. |
|
| メソッドの概要 | |
protected int |
areAliased(Exp pExp,
Exp pExp0)
Returns one of the codes (MUST_ALIAS, MAY_ALIAS, NOT_ALIAS). |
void |
dbg(int pLevel,
java.lang.String pHeader,
java.lang.Object pBody)
Prints out the String representation of
the pBody object headed by pHeader
if the debug level for this alias analysis category is
greater than or equal to pLevel. |
AliasGroup |
getAliasGroupFor(Exp pExp)
Returns the set of lvalue nodes the specified argument may be aliased to. |
boolean |
isLvalue(Exp pExp)
Returns true if the specified argument is lvalue. |
boolean |
mayAlias(Exp pExp,
Exp pExp0)
Returns true if the two arguments may refer to the overlapping area in memory. |
boolean |
mustAlias(Exp pExp,
Exp pExp0)
Returns true if the two arguments definitely refer to the overlapping area in memory. |
void |
prepareForAliasAnalHir(SubpDefinition pSubpDef)
Performs alias analysis for the given SubpDefinition argument so that may/mustAlias methods for nodes contained in the SubpDefinition are ready. |
(パッケージプライベート) void |
prepareTags(SubpDefinition pSubpDef)
Instantiates tags and TagVectors, builds the tree structure between the tags and assigns TagVector bits to these tags. |
void |
printAliasPairs(SubpDefinition pSubpDef)
Prints out alias pairs in IoRoot.printOut
object. |
void |
printAliasPairsDetail(SubpDefinition pSubpDef)
Prints out alias pairs in IoRoot.printOut
object in somewhat more detailed format than in printAliasPairs. |
| クラス java.lang.Object から継承したメソッド |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| フィールドの詳細 |
protected static final int AREA_INCLUDES
protected static final int AREA_OVERLAPS
protected static final int MUST_ALIAS
protected static final int NOT_ALIAS
protected static final int MAY_ALIAS
protected static final java.lang.String PREDEFINED
protected java.util.Set fPredefined
java.util.Map fHIRToTag
java.util.Map fHIRTomallocTag
int fTagBitCount
TagVector.
Tag[] fBitAssignedTags
Tags that are assigned bits.
TagVector[] fPointsTo
TagVectors.
TagVector fCurFrame
TagVector that corresponds to the current
frame (automatic variables that are in scope).
TagVector fStatic
TagVector that corresponds to the static area.
TagVector fHeap
TagVector that corresponds to the heap
(allocated) area.
TagVector fOther
TagVector that corresponds to the area
that is not included in fCurFrame or
fStatic or fHeap, and
includes frames from subprograms that called the
currrent subprogram, global variables that do not
appear in the current subprogram, and area allocated
by the subprograms that called the current subprogram.
TagVector fGlobals
TagVector that corresponds to global variables.
This is a subset of fStatic.
TagVector fExternPes
TagVector that corresponds to the area
visible from the outside of the current subprogram.
This is the complement of fCurFrame.
TagVector fExternOpt
TagVector that corresponds to the area
visible from the outside of the current subprogram.
This is the sum of fGlobals and fOther.
public final HirRoot hirRoot
HirRoot object shared by every module
in the program.
public final IoRoot ioRoot
IoRoot object shared by every module
in the program.
final boolean fIsOptimistic
AliasAnalHir1(boolean, HirRoot)final AliasFactory fFactory
protected final AliasUtil fUtil
protected int fDbgLevel
| コンストラクタの詳細 |
public AliasAnalHir1(HirRoot pHirRoot)
AliasAnalHir1
that performs alias analysis based on some set of
assumptions about aliasing. Two sets of assumptions (
Pessimistic and Optimistic) are available, and
which one to use is determined from the command line,
and defaults to Pessimistic.
pHirRoot - the HirRoot object shared
by every module in the program.AliasAnalHir1(boolean, HirRoot)
public AliasAnalHir1(boolean pIsOptimistic,
HirRoot pHirRoot)
AliasAnalHir1 that
performs alias analysis with the specified assumptions
(pIsOptimistic) about aliasing.
The difference between optimistic and pessimistic
assumptions are:
| メソッドの詳細 |
public void prepareForAliasAnalHir(SubpDefinition pSubpDef)
Performs alias analysis for the given SubpDefinition argument so that may/mustAlias methods for nodes contained in the SubpDefinition are ready.
This method may be called only once in the lifetime of this analysis object; for analyses of different SubpDefinitions, the AliasAnalHir1 object has to be newly created.
AliasAnal 内の prepareForAliasAnalHirpSubpDef - the SubpDefinition instance
nodes contained in which are to be analyzed for aliasing.void prepareTags(SubpDefinition pSubpDef)
pSubpDef - SubpDefinition instance
to analyze.
protected int areAliased(Exp pExp,
Exp pExp0)
public AliasGroup getAliasGroupFor(Exp pExp)
AliasGroup object for
different argument (pExp) is distinct from
one another, so it can be safely modified without
affecting others.
AliasAnal 内の getAliasGroupForpExp - the lvalue node to check for aliasing.
java.lang.IllegalArgumentException - if either of the
arguments is not lvalue.public void printAliasPairs(SubpDefinition pSubpDef)
IoRoot.printOut
object. For debugging.
AliasAnal 内の printAliasPairspSubpDef - the SubpDefinition object
aliasing relation between nodes contained in which are
to be printed.public void printAliasPairsDetail(SubpDefinition pSubpDef)
IoRoot.printOut
object in somewhat more detailed format than in printAliasPairs.
pSubpDef - the SubpDefinition object
aliasing relation between nodes contained in which are
to be printed.
public boolean mayAlias(Exp pExp,
Exp pExp0)
AliasAnal 内の mayAliaspExp - lvalue node to check for aliasing.pExp0 - lvalue node to check for aliasing.
java.lang.IllegalArgumentException - if either of the
arguments is not lvalue.
public boolean mustAlias(Exp pExp,
Exp pExp0)
AliasAnal 内の mustAliaspExp - lvalue node to check for aliasing.pExp0 - lvalue node to check for aliasing.
java.lang.IllegalArgumentException - if either of the
arguments is not lvalue.public boolean isLvalue(Exp pExp)
AliasAnal 内の isLvalue
public void dbg(int pLevel,
java.lang.String pHeader,
java.lang.Object pBody)
String representation of
the pBody object headed by pHeader
if the debug level for this alias analysis category is
greater than or equal to pLevel.
pLevel - the debug level required to actually print
the debug information.pHeader - header for the informationpBody - body of the informationDebug.printObject(int, String, Object)
|
||||||||||
| 前のクラス 次のクラス | フレームあり フレームなし | |||||||||
| 概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド | |||||||||