|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectharpoon.Analysis.PA2.PointerAnalysis
public abstract class PointerAnalysis
PointerAnalysis
attemps to give a specification for
the different pointer analysis implementations.
Constructor Summary | |
---|---|
PointerAnalysis()
|
Method Summary | |
---|---|
abstract CallGraph |
getCallGraph()
|
abstract CachingCodeFactory |
getCodeFactory()
|
abstract FullAnalysisResult |
getFullResult(HMethod hm,
AnalysisPolicy ap)
Similar to getInterProcResult but returns all
information the pointer analysis is able to infer about
hm . |
abstract InterProcAnalysisResult |
getInterProcResult(HMethod hm,
AnalysisPolicy ap)
The simplified analysis result for the end of the method hm . |
abstract NodeRepository |
getNodeRep()
|
boolean |
hasAnalyzedCALL(CALL cs,
HMethod callee)
Checks whether the call cs to callee
has been analyzed or not. |
boolean |
isAnalyzable(HMethod hm)
Checks whether hm can be analyzed. |
void |
notifyAnalyzedCALL(CALL cs,
HMethod callee)
|
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Constructor Detail |
---|
public PointerAnalysis()
Method Detail |
---|
public abstract InterProcAnalysisResult getInterProcResult(HMethod hm, AnalysisPolicy ap)
hm
. This result is used in the inter-procedural
analysis. In addition, it seems to be enough for certain
optimizations (i.e., stack-allocation).
hm
- Method to analyze.ap
- Analysis policy (e.g., flow sensitivity or not?)
This is only a HINT: different analysis implementations may
ignore certain elements of the analysis policy. If
null
, the analysis will return whatever is the
best analysis result it already has computed
(null
if no such result).InterProcAnalysisResult
public abstract FullAnalysisResult getFullResult(HMethod hm, AnalysisPolicy ap)
getInterProcResult
but returns all
information the pointer analysis is able to infer about
hm
.
PointerAnalysis#InterProcAnalysisResult
public abstract CallGraph getCallGraph()
this
PointerAnalysis
to interpret the virtual calls in
the inter-procedural analysis.public abstract CachingCodeFactory getCodeFactory()
public abstract NodeRepository getNodeRep()
NodeRepository
object that maps between
nodes and the instructions they were introduced for: e.g.,
will give the inside node for a specific NEW instruction.public boolean isAnalyzable(HMethod hm)
hm
can be analyzed. The default
implementation returns true
unless the method is
native or abstract.
public void notifyAnalyzedCALL(CALL cs, HMethod callee)
public boolean hasAnalyzedCALL(CALL cs, HMethod callee)
cs
to callee
has been analyzed or not. Why is this important? For speed
reasons, the pointer analysis may have decided to ignore
certain calls. However, analysis clients must be aware of
this; e.g., this information is important if we perform
inlining in order to enhance stack-allocation.
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |