|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object | +--harpoon.Analysis.PointerAnalysis.PointerAnalysis
PointerAnalysis
is the main class of the Pointer Analysis
package. It is designed to act as a query-object: after being
initialized, it can be asked to provide the Parallel Interaction Graph
valid at the end of a specific method.
Field Summary | |
static String |
ARRAY_CONTENT
Array elements are modeled as fields of the array object, all of them with the same name since the analysis is not able to make the distinction between the fields. |
static boolean |
CALL_CONTEXT_SENSITIVE
Activates the calling context sensitivity. |
static boolean |
DEBUG
|
static boolean |
DEBUG_INTRA
|
static boolean |
DEBUG_SCC
|
static boolean |
DEBUG2
|
static boolean |
DETAILS2
|
static boolean |
DETERMINISTIC
Makes the pointer analysis deterministic to make the debug easier. |
static boolean |
DO_INTRA_PROC_TRIMMING
|
static boolean |
IGNORE_EO
Hack to speed it up: it appears to me that the edge ordering relation is not extremely important: in recursive methods or in methods with loops, it tends to be just a cartesian product between I and O. |
Linker |
linker
|
static boolean |
LOOP_SENSITIVE
Activates the loop sensitivity. |
static int |
MAX_SPEC_DEPTH
The specialization limit. |
static boolean |
MEGA_DEBUG
crazy, isn't it? |
static boolean |
RECORD_ACTIONS
Turns on the recording of the actions done by the program. |
static boolean |
SAVE_MEMORY
Turns on the save memory mode. |
static boolean |
SHOW_NODES
|
static boolean |
STATS
|
static boolean |
THREAD_SENSITIVE
Activates the full thread sensitivity. |
static boolean |
TIMING
Turns on the printing of some timing info. |
static boolean |
WEAKLY_THREAD_SENSITIVE
Activates the weak thread sensitivity. |
Constructor Summary | |
PointerAnalysis(MetaCallGraph mcg,
MetaAllCallers mac,
CachingSCCLBBFactory caching_scc_lbb_factory,
Linker linker)
Creates a PointerAnalysis . |
Method Summary | |
static boolean |
analyzable(HMethod hm)
Check if hm can be analyzed by the pointer analysis. |
CachingSCCLBBFactory |
getCachingSCCLBBFactory()
Returns the SCC LBB factory used by this
PointerAnalysis object. |
ParIntGraph |
getExtParIntGraph(MetaMethod mm)
Returns the simplified (external) ParIntGraph attached to
the method hm i.e. |
ParIntGraph |
getExtThreadInteraction(MetaMethod mm)
|
ParIntGraph |
getIntParIntGraph(MetaMethod mm)
Returns the full (internal) ParIntGraph attached to
the method hm i.e. |
ParIntGraph |
getIntThreadInteraction(MetaMethod mm)
|
Linker |
getLinker()
|
MetaAllCallers |
getMetaAllCallers()
Returns the all callers graph used by this
PointerAnalysis object. |
MetaCallGraph |
getMetaCallGraph()
Returns the call graph graph used by this
PointerAnalysis object. |
NodeRepository |
getNodeRepository()
|
PANode[] |
getParamNodes(MetaMethod mm)
Returns the parameter nodes of the method hm . |
ParIntGraph |
getPigAfterQuad(MetaMethod mm,
Quad q)
Returns the parallel interaction graph attached to the program point right after q in the body of meta-method
mm . |
ParIntGraph |
getPIGAtQuad(MetaMethod mm,
Quad q)
Returns the parallel interaction graph attached to the program point right after q in the body of meta-method
mm . |
ParIntGraph |
getPigBeforeQuad(MetaMethod mm,
Quad q)
Returns the parallel interaction graph attached to the program point right before q in the body of meta-method
mm . |
ParIntGraph |
getPigForQuad(MetaMethod mm,
Quad q,
int moment)
|
boolean |
harmful_native(HMethod hm)
|
Set |
pointedNodes(MetaMethod mm,
Quad q,
Temp l)
Returns the set of the nodes pointed by the temporary t
at the point right before executing instruction q
from the body of meta-method mm . |
Set |
pointedNodes(Quad q,
Temp l)
|
void |
print_stats()
Prints some statistics. |
ParIntGraph |
threadInteraction(MetaMethod mm)
Returns the parallel interaction graph for the end of the method hm . |
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
public static final boolean DEBUG
public static final boolean DEBUG2
public static final boolean DEBUG_SCC
public static final boolean DEBUG_INTRA
public static boolean MEGA_DEBUG
public static boolean RECORD_ACTIONS
public static final boolean SAVE_MEMORY
public static final boolean DETERMINISTIC
Set
s which doesn't offer any guarantee about the order
in which they iterate over their elements.
public static boolean TIMING
public static final boolean STATS
public static boolean SHOW_NODES
public static final boolean DETAILS2
public static final boolean IGNORE_EO
public static boolean CALL_CONTEXT_SENSITIVE
MAX_SPEC_DEPTH
times). This increases
the precision of the analysis but requires more time and memory.
public static int MAX_SPEC_DEPTH
public static boolean THREAD_SENSITIVE
public static boolean WEAKLY_THREAD_SENSITIVE
public static boolean LOOP_SENSITIVE
public static final String ARRAY_CONTENT
public static final boolean DO_INTRA_PROC_TRIMMING
public Linker linker
Constructor Detail |
public PointerAnalysis(MetaCallGraph mcg, MetaAllCallers mac, CachingSCCLBBFactory caching_scc_lbb_factory, Linker linker)
PointerAnalysis
.
mcg
- The (meta) Call Graph that models the caller-callee
relation between methods.mac
- The dual of _mcg
(ie the
callee-caller relation.Method Detail |
public final MetaCallGraph getMetaCallGraph()
this
PointerAnalysis
object.
public final MetaAllCallers getMetaAllCallers()
this
PointerAnalysis
object.
public final CachingSCCLBBFactory getCachingSCCLBBFactory()
this
PointerAnalysis
object.
public final Linker getLinker()
public ParIntGraph getIntParIntGraph(MetaMethod mm)
ParIntGraph
attached to
the method hm
i.e. the graph at the end of the method.
Returns null
if no such graph is available.
public ParIntGraph getExtParIntGraph(MetaMethod mm)
ParIntGraph
attached to
the method hm
i.e. the graph at the end of the method.
of which only the parts reachable from the exterior (via parameters,
returned objects or static classes) have been preserved. The escape
function do not consider the parameters of the function (anyway, this
graph is supposed to be inlined into the graph of the caller, so the
parameters will disappear anyway).
Returns null
if no such graph is available.
public PANode[] getParamNodes(MetaMethod mm)
hm
. This is
useful for the understanding of the ParIntGraph
attached
to hm
public ParIntGraph threadInteraction(MetaMethod mm)
hm
. The interactions between hm
and the
threads it (transitively) starts are analyzed in order to
"recover" some of the escaped nodes.
public ParIntGraph getExtThreadInteraction(MetaMethod mm)
public ParIntGraph getIntThreadInteraction(MetaMethod mm)
public final NodeRepository getNodeRepository()
public static final boolean analyzable(HMethod hm)
hm
can be analyzed by the pointer analysis.
public final boolean harmful_native(HMethod hm)
public final void print_stats()
public final ParIntGraph getPIGAtQuad(MetaMethod mm, Quad q)
q
in the body of meta-method
mm
.
public final ParIntGraph getPigAfterQuad(MetaMethod mm, Quad q)
q
in the body of meta-method
mm
.
public final ParIntGraph getPigBeforeQuad(MetaMethod mm, Quad q)
q
in the body of meta-method
mm
.
public final ParIntGraph getPigForQuad(MetaMethod mm, Quad q, int moment)
public final Set pointedNodes(MetaMethod mm, Quad q, Temp l)
t
at the point right before executing instruction q
from the body of meta-method mm
.
public final Set pointedNodes(Quad q, Temp l)
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |