public class GeomQueries
extends java.lang.Object
| Modifier and Type | Field and Description |
|---|---|
protected int[] |
block_num |
protected CgEdge[] |
call_graph |
protected ContextsCollector[] |
contextsForMethods |
protected GeomPointsTo |
geomPts |
protected int[] |
in_degree |
protected long[] |
max_context_size_block |
protected int |
n_func |
protected int[] |
rep_cg |
protected int[] |
top_rank |
protected java.util.Queue<java.lang.Integer> |
topQ |
protected int[] |
vis_cg |
| Constructor and Description |
|---|
GeomQueries(GeomPointsTo geom_pts)
We copy and make a condensed version of call graph.
|
| Modifier and Type | Method and Description |
|---|---|
boolean |
contexsByAnyCallEdge(Edge sootEdge,
Local l,
PtSensVisitor visitor)
Usually, users specify the last K paths as the context.
|
boolean |
contextByCallChain(Edge[] callEdgeChain,
Local l,
SparkField field,
PtSensVisitor visitor)
Standard K-CFA querying for field expression.
|
boolean |
contextsByAnyCallEdge(Edge sootEdge,
Local l,
SparkField field,
PtSensVisitor visitor)
Searching the points-to results for field expression such as p.f.
|
boolean |
contextsByCallChain(Edge[] callEdgeChain,
Local l,
PtSensVisitor visitor)
Standard K-CFA querying for arbitrary K.
|
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?
|
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 geomPts
protected int n_func
protected CgEdge[] call_graph
protected int[] vis_cg
protected int[] rep_cg
protected int[] top_rank
protected int[] block_num
protected long[] max_context_size_block
protected java.util.Queue<java.lang.Integer> topQ
protected int[] in_degree
protected ContextsCollector[] contextsForMethods
public GeomQueries(GeomPointsTo geom_pts)
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 contexsByAnyCallEdge(Edge sootEdge, Local l, PtSensVisitor visitor)
sootEdge: - the specified context edge in soot edge formatl: - the querying pointervisitor: - container for querying resultpublic boolean contextsByAnyCallEdge(Edge sootEdge, Local l, SparkField field, PtSensVisitor visitor)
sootEdge - l - field - visitor - public boolean contextsByCallChain(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 containerpublic boolean contextByCallChain(Edge[] callEdgeChain, Local l, SparkField field, PtSensVisitor visitor)
callEdgeChain: - callEdgeChain[0] is the farthest call edge in the chain.l - field - visitor - public boolean isAliasCI(Local l1, Local l2)
public boolean isAlias(IVarAbstraction pn1, IVarAbstraction pn2)
pn1 - and @param pn2 cannot be null.