public class FullSensitiveNode extends IVarAbstraction
Modifier and Type | Field and Description |
---|---|
java.util.Vector<PlainConstraint> |
complex_cons |
java.util.Map<FullSensitiveNode,GeometricManager> |
flowto |
java.util.Map<AllocNode,GeometricManager> |
new_pts |
java.util.Map<AllocNode,GeometricManager> |
pt_objs |
static java.lang.String[] |
symbols |
deadManager, id, lrf_value, me, parent, pres, Qpos, stubManager, top_value, willUpdate
Constructor and Description |
---|
FullSensitiveNode(Node thisVar) |
Modifier and Type | Method and Description |
---|---|
boolean |
add_points_to_3(AllocNode obj,
long I1,
long I2,
long L) |
boolean |
add_points_to_4(AllocNode obj,
long I1,
long I2,
long L1,
long L2) |
boolean |
add_simple_constraint_3(IVarAbstraction qv,
long I1,
long I2,
long L) |
boolean |
add_simple_constraint_4(IVarAbstraction qv,
long I1,
long I2,
long L1,
long L2) |
int |
count_flow_intervals(IVarAbstraction qv) |
int |
count_new_pts_intervals() |
int |
count_pts_intervals(AllocNode obj) |
void |
deleteAll() |
void |
do_after_propagation() |
void |
do_before_propagation() |
void |
drop_duplicates() |
void |
get_all_context_sensitive_objects(long l,
long r,
PtSensVisitor visitor)
Given the pointers falling in the context range [l, r), we compute the set of context sensitive objects pointed to by those pointers.
|
java.util.Set<AllocNode> |
get_all_points_to_objects()
Obtain context insensitive points-to result (by removing contexts).
|
boolean |
heap_sensitive_intersection(IVarAbstraction qv)
Perform context sensitive alias checking with qv.
|
void |
injectPts()
We transfer the SPARK results to current pointer if this pointer is not involved in the geometric analysis.
|
boolean |
isDeadObject(AllocNode obj)
Test if the particular object has been obsoleted.
|
void |
keepPointsToOnly() |
int |
num_of_diff_edges() |
int |
num_of_diff_objs()
Return -1 if this pointer does not have points-to information.
|
boolean |
pointer_interval_points_to(long l,
long r,
AllocNode obj)
Test if the pointer in the context range [l, R) points to object obj.
|
void |
print_context_sensitive_points_to(java.io.PrintStream outPrintStream) |
void |
propagate(GeomPointsTo ptAnalyzer,
IWorklist worklist)
The place where you implement the pointer assignment reasoning.
|
void |
put_complex_constraint(PlainConstraint cons) |
void |
reconstruct() |
void |
remove_points_to(AllocNode obj) |
enclosingMethod, getNumber, getRepresentative, getType, getWrappedNode, hasPTResult, isLocalPointer, lessThan, merge, reachable, setNumber, toString
public java.util.Map<FullSensitiveNode,GeometricManager> flowto
public java.util.Map<AllocNode,GeometricManager> pt_objs
public java.util.Map<AllocNode,GeometricManager> new_pts
public java.util.Vector<PlainConstraint> complex_cons
public static java.lang.String[] symbols
public FullSensitiveNode(Node thisVar)
public void deleteAll()
deleteAll
in class IVarAbstraction
public void reconstruct()
reconstruct
in class IVarAbstraction
public void keepPointsToOnly()
keepPointsToOnly
in class IVarAbstraction
public void do_before_propagation()
do_before_propagation
in class IVarAbstraction
public void do_after_propagation()
do_after_propagation
in class IVarAbstraction
public int num_of_diff_objs()
IVarAbstraction
num_of_diff_objs
in class IVarAbstraction
public int num_of_diff_edges()
num_of_diff_edges
in class IVarAbstraction
public boolean add_points_to_3(AllocNode obj, long I1, long I2, long L)
add_points_to_3
in class IVarAbstraction
public boolean add_points_to_4(AllocNode obj, long I1, long I2, long L1, long L2)
add_points_to_4
in class IVarAbstraction
public boolean add_simple_constraint_3(IVarAbstraction qv, long I1, long I2, long L)
add_simple_constraint_3
in class IVarAbstraction
public boolean add_simple_constraint_4(IVarAbstraction qv, long I1, long I2, long L1, long L2)
add_simple_constraint_4
in class IVarAbstraction
public void put_complex_constraint(PlainConstraint cons)
put_complex_constraint
in class IVarAbstraction
public void drop_duplicates()
drop_duplicates
in class IVarAbstraction
public void propagate(GeomPointsTo ptAnalyzer, IWorklist worklist)
propagate
in class IVarAbstraction
public boolean isDeadObject(AllocNode obj)
IVarAbstraction
isDeadObject
in class IVarAbstraction
public int count_pts_intervals(AllocNode obj)
count_pts_intervals
in class IVarAbstraction
public int count_flow_intervals(IVarAbstraction qv)
count_flow_intervals
in class IVarAbstraction
public boolean heap_sensitive_intersection(IVarAbstraction qv)
IVarAbstraction
heap_sensitive_intersection
in class IVarAbstraction
public java.util.Set<AllocNode> get_all_points_to_objects()
IVarAbstraction
get_all_points_to_objects
in class IVarAbstraction
public void print_context_sensitive_points_to(java.io.PrintStream outPrintStream)
print_context_sensitive_points_to
in class IVarAbstraction
public void injectPts()
injectPts
in class IVarAbstraction
public boolean pointer_interval_points_to(long l, long r, AllocNode obj)
IVarAbstraction
pointer_interval_points_to
in class IVarAbstraction
public void remove_points_to(AllocNode obj)
remove_points_to
in class IVarAbstraction
public void get_all_context_sensitive_objects(long l, long r, PtSensVisitor visitor)
IVarAbstraction
get_all_context_sensitive_objects
in class IVarAbstraction
Obj_1cfa_extractor
,
Obj_full_extractor
public int count_new_pts_intervals()
count_new_pts_intervals
in class IVarAbstraction