public class GeomQueries
extends java.lang.Object
Modifier and Type | Field and Description |
---|---|
protected int[] |
block_num |
protected CgEdge[] |
call_graph |
protected GeomPointsTo |
geomPTA |
protected long[] |
max_context_size_block |
protected int |
n_func |
protected int[] |
rep_cg |
protected int[] |
scc_size |
protected int[] |
top_rank |
protected int[] |
vis_cg |
Constructor and Description |
---|
GeomQueries(GeomPointsTo geom_pta)
We copy and make a condensed version of call graph.
|
Modifier and Type | Method and Description |
---|---|
boolean |
contexsByAnyCallEdge(Edge sootEdge,
Local l,
PtSensVisitor visitor)
Deprecated.
|
boolean |
contextsByAnyCallEdge(Edge sootEdge,
Local l,
SparkField field,
PtSensVisitor visitor)
Deprecated.
|
boolean |
contextsByCallChain(Edge[] callEdgeChain,
Local l,
PtSensVisitor visitor)
Deprecated.
|
boolean |
contextsByCallChain(Edge[] callEdgeChain,
Local l,
SparkField field,
PtSensVisitor visitor)
Deprecated.
|
boolean |
contextsGoBy(Edge sootEdge,
Local l,
PtSensVisitor visitor)
Answer contexts-go-by query.
|
boolean |
contextsGoBy(Edge sootEdge,
Local l,
SparkField field,
PtSensVisitor visitor)
Searching the points-to results for field expression such as p.f.
|
protected boolean |
dfsScanSubgraph(int s,
int target)
Retrieve the subgraph from s->target.
|
boolean |
isAlias(IVarAbstraction pn1,
IVarAbstraction pn2)
Test if two pointers given in geomPTA form are an alias under any contexts.
|
boolean |
isAlias(Local l1,
Local l2)
Decide if under any contexts, pointers @param l1 and @param l2 can be an alias.
|
boolean |
isAliasCI(Local l1,
Local l2)
Are the two pointers an alias with context insensitive points-to information?
|
boolean |
kCFA(Edge[] callEdgeChain,
Local l,
PtSensVisitor visitor)
Standard K-CFA querying for arbitrary K.
|
boolean |
kCFA(Edge[] callEdgeChain,
Local l,
SparkField field,
PtSensVisitor visitor)
Standard K-CFA querying for field expression.
|
protected boolean |
propagateIntervals(int start,
long L,
long R,
int target)
Compute the mapping from interval [L, R) of method start to the intervals of method target.
|
protected void |
transferInSCC(int s,
int t,
long L,
long R,
ContextsCollector tContexts) |
protected GeomPointsTo geomPTA
protected int n_func
protected CgEdge[] call_graph
protected int[] vis_cg
protected int[] rep_cg
protected int[] scc_size
protected int[] block_num
protected long[] max_context_size_block
protected int[] top_rank
public GeomQueries(GeomPointsTo geom_pta)
geom_pts
- protected boolean dfsScanSubgraph(int s, int target)
s
- target
- protected void transferInSCC(int s, int t, long L, long R, ContextsCollector tContexts)
protected boolean propagateIntervals(int start, long L, long R, int target)
start
- L
- R
- target
- public boolean contextsGoBy(Edge sootEdge, Local l, PtSensVisitor visitor)
sootEdge:
- the specified context edge in soot edge formatl:
- the querying pointervisitor:
- container for querying result@Deprecated public boolean contexsByAnyCallEdge(Edge sootEdge, Local l, PtSensVisitor visitor)
public boolean contextsGoBy(Edge sootEdge, Local l, SparkField field, PtSensVisitor visitor)
sootEdge
- l
- field
- visitor
- @Deprecated public boolean contextsByAnyCallEdge(Edge sootEdge, Local l, SparkField field, PtSensVisitor visitor)
public boolean kCFA(Edge[] callEdgeChain, Local l, PtSensVisitor visitor)
callEdgeChain:
- last K call edges leading to the method that contains l. callEdgeChain[0] is the farthest call edge in the chain.l:
- the querying pointervisitor:
- the querying result container@Deprecated public boolean contextsByCallChain(Edge[] callEdgeChain, Local l, PtSensVisitor visitor)
public boolean kCFA(Edge[] callEdgeChain, Local l, SparkField field, PtSensVisitor visitor)
callEdgeChain:
- callEdgeChain[0] is the farthest call edge in the chain.l
- field
- visitor
- @Deprecated public boolean contextsByCallChain(Edge[] callEdgeChain, Local l, SparkField field, PtSensVisitor visitor)
public boolean isAliasCI(Local l1, Local l2)
public boolean isAlias(IVarAbstraction pn1, IVarAbstraction pn2)
pn1
- and @param pn2 cannot be null.