|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object | +--harpoon.Analysis.PointerAnalysis.ODPointerAnalysis
ODPointerAnalysis
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 MethodHole |
BottomHole
|
static boolean |
BOUNDED_ANALYSIS_DEPTH
|
static boolean |
CALL_CONTEXT_SENSITIVE
Activates the calling context sensitivity. |
static int |
current_analysis_depth
|
static boolean |
DEBUG
|
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 |
FIRST_ANALYSIS
|
static HashMap[] |
hash_proc_ext_d
|
static HashMap[] |
hash_proc_int_d
|
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. |
static Set |
interestingNodes
|
static Set |
interestingQuads
|
static boolean |
LOOP_SENSITIVE
Activates the loop sensitivity. |
static boolean |
MartinTheWildHacker
|
static int |
MAX_ANALYSIS_ABOVE_SPEC
|
static int |
MAX_ANALYSIS_DEPTH
|
static int |
MAX_SPEC_DEPTH
The specialization limit. |
static int |
mh_number
|
static boolean |
NODES_DRIVEN
|
static int |
number_of_mapups
|
static int |
number_of_mm_analyzed
|
static boolean |
ODA_precise
|
static boolean |
ON_DEMAND_ANALYSIS
|
static Map |
Quad2Node
|
static Relation |
Quad2Nodes
|
static boolean |
SAVE_MEMORY
Turns on the save memory mode. |
CachingSCCLBBFactory |
scc_lbb_factory
|
static boolean |
SHOW_NODES
|
static boolean |
STATS
|
static boolean |
THREAD_SENSITIVE
Activates the full thread sensitivity. |
static boolean |
TIMING
Turns on the priniting of some timing info. |
static boolean |
TOUCHED_THREAD_SUPPORT
Controls the recording of data about the thread nodes that are touched after being started. |
static boolean |
WEAKLY_THREAD_SENSITIVE
Activates the weak thread sensitivity. |
Constructor Summary | |
ODPointerAnalysis(MetaCallGraph _mcg,
MetaAllCallers _mac,
LBBConverter lbbconv)
Creates a ODPointerAnalysis . |
Method Summary | |
static boolean |
analyzable(HMethod hm)
Check if hm can be analyzed by the pointer analysis. |
void |
analyze_intra_proc(MetaMethod mm)
|
int |
count_creation_sites(MetaMethod mm)
|
boolean |
create_inside_nodes(MetaMethod mm)
|
ODParIntGraph |
getExtParIntGraph(MetaMethod mm)
Returns the simplified (external) ODParIntGraph attached to
the method hm i.e. |
ODParIntGraph |
getExtParIntGraph(MetaMethod mm,
boolean compute_it)
|
ODParIntGraph |
getExtThreadInteraction(MetaMethod mm)
|
ODParIntGraph |
getIntParIntGraph(MetaMethod mm)
Returns the full (internal) ODParIntGraph attached to
the method hm i.e. |
ODParIntGraph |
getIntParIntGraph(MetaMethod mm,
boolean compute_it)
|
ODParIntGraph |
getIntThreadInteraction(MetaMethod mm)
|
MetaAllCallers |
getMetaAllCallers()
|
MetaCallGraph |
getMetaCallGraph()
|
PANode[] |
getParamNodes(MetaMethod mm)
Returns the parameter nodes of the method hm . |
ODParIntGraph |
getPIGAtQuad(MetaMethod mm,
Quad q)
Returns the parallel interaction graph attached to the program point right before q in the body of meta-method
mm . |
boolean |
harmful_native(HMethod hm)
|
boolean |
isAnalyzed(MetaMethod mm)
|
void |
make_thread_heap(MetaMethod mm,
ODMAInfo mainfo)
|
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 . |
void |
print_stats()
Prints some statistics. |
ODParIntGraph |
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 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 final boolean TOUCHED_THREAD_SUPPORT
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 boolean BOUNDED_ANALYSIS_DEPTH
public static boolean ON_DEMAND_ANALYSIS
public static boolean ODA_precise
public static boolean NODES_DRIVEN
public static boolean FIRST_ANALYSIS
public static int MAX_ANALYSIS_DEPTH
public static int MAX_ANALYSIS_ABOVE_SPEC
public static int current_analysis_depth
public static int number_of_mapups
public static int number_of_mm_analyzed
public static Map Quad2Node
public static boolean MartinTheWildHacker
public static HashMap[] hash_proc_int_d
public static HashMap[] hash_proc_ext_d
public static Set interestingQuads
public static Set interestingNodes
public static Relation Quad2Nodes
public final CachingSCCLBBFactory scc_lbb_factory
public static int mh_number
public static MethodHole BottomHole
Constructor Detail |
public ODPointerAnalysis(MetaCallGraph _mcg, MetaAllCallers _mac, LBBConverter lbbconv)
ODPointerAnalysis
.
_mcg
- The (meta) Call Graph that models the caller-callee
relation between methods._mac
- The dual of _mcg
(ie the
callee-caller relation.lbbconv
- The producer of the (Light) Basic Block representation
of a method body.
Method Detail |
public final MetaCallGraph getMetaCallGraph()
public final MetaAllCallers getMetaAllCallers()
public ODParIntGraph getIntParIntGraph(MetaMethod mm)
ODParIntGraph
attached to
the method hm
i.e. the graph at the end of the method.
Returns null
if no such graph is available.
public boolean isAnalyzed(MetaMethod mm)
public ODParIntGraph getIntParIntGraph(MetaMethod mm, boolean compute_it)
public ODParIntGraph getExtParIntGraph(MetaMethod mm)
ODParIntGraph
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 ODParIntGraph getExtParIntGraph(MetaMethod mm, boolean compute_it)
public PANode[] getParamNodes(MetaMethod mm)
hm
. This is
useful for the understanding of the ODParIntGraph
attached
to hm
public ODParIntGraph 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 ODParIntGraph getExtThreadInteraction(MetaMethod mm)
public ODParIntGraph getIntThreadInteraction(MetaMethod mm)
public void analyze_intra_proc(MetaMethod mm)
public boolean create_inside_nodes(MetaMethod mm)
public void make_thread_heap(MetaMethod mm, ODMAInfo mainfo)
public int count_creation_sites(MetaMethod mm)
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 ODParIntGraph getPIGAtQuad(MetaMethod mm, Quad q)
q
in the body of meta-method
mm
.
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
.
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |