|
||||||||||
前のクラス 次のクラス | フレームあり フレームなし | |||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
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 Tag s 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 TagVector s. |
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
Tag
s that are assigned bits.
TagVector[] fPointsTo
TagVector
s.
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
内の prepareForAliasAnalHir
pSubpDef
- 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
内の getAliasGroupFor
pExp
- 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
内の printAliasPairs
pSubpDef
- 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
内の mayAlias
pExp
- 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
内の mustAlias
pExp
- 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)
|
||||||||||
前のクラス 次のクラス | フレームあり フレームなし | |||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |