soot.jimple.spark.geom.ptinsE
Class PtInsNode

java.lang.Object
  extended by soot.jimple.spark.geom.geomPA.IVarAbstraction
      extended by soot.jimple.spark.geom.ptinsE.PtInsNode
All Implemented Interfaces:
Numberable

public class PtInsNode
extends IVarAbstraction


Field Summary
 Vector<PlainConstraint> complex_cons
           
 Map<PtInsNode,PtInsIntervalManager> flowto
           
 Map<AllocNode,PtInsIntervalManager> new_pts
           
 Map<AllocNode,PtInsIntervalManager> pt_objs
           
 
Fields inherited from class soot.jimple.spark.geom.geomPA.IVarAbstraction
id, lrf_value, me, pres, Qpos, stubManager, top_value
 
Constructor Summary
PtInsNode(Node thisVar)
           
 
Method Summary
 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)
           
 void add_shapes_to_set(TreeSet<SegmentNode>[] ts)
           
 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 discard()
           
 void do_after_propagation()
          Remember to clean the is_new flag
 void do_before_propagation()
           
 void drop_duplicates()
          Discard all context sensitive tuples which are covered by insensitive ones
 int get_all_context_sensitive_objects(long l, long r, ZArrayNumberer<CallsiteContextVar> all_objs, Vector<CallsiteContextVar> outList)
           
 Set<AllocNode> get_all_points_to_objects()
           
 boolean has_new_pts()
           
 boolean heap_sensitive_intersection(IVarAbstraction qv)
          Query if this pointer and qv could point to the same object under any contexts
 boolean is_empty()
           
 int num_of_diff_edges()
           
 int num_of_diff_objs()
           
 boolean pointer_interval_points_to(long l, long r, AllocNode obj)
           
 boolean pointer_sensitive_points_to(long context, AllocNode obj)
           
 void print_context_sensitive_points_to(PrintStream outPrintStream)
           
 void propagate(GeomPointsTo ptAnalyzer, IWorklist worklist)
          An efficient implementation of differential propagation.
 void put_complex_constraint(PlainConstraint cons)
           
 void reconstruct()
           
 void remove_points_to(AllocNode obj)
           
 boolean test_points_to_has_types(Set<Type> types)
           
 
Methods inherited from class soot.jimple.spark.geom.geomPA.IVarAbstraction
getNumber, getRepresentative, getType, getWrappedNode, lessThan, merge, setNumber
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

flowto

public Map<PtInsNode,PtInsIntervalManager> flowto

pt_objs

public Map<AllocNode,PtInsIntervalManager> pt_objs

new_pts

public Map<AllocNode,PtInsIntervalManager> new_pts

complex_cons

public Vector<PlainConstraint> complex_cons
Constructor Detail

PtInsNode

public PtInsNode(Node thisVar)
Method Detail

reconstruct

public void reconstruct()
Specified by:
reconstruct in class IVarAbstraction

do_before_propagation

public void do_before_propagation()
Specified by:
do_before_propagation in class IVarAbstraction

do_after_propagation

public void do_after_propagation()
Remember to clean the is_new flag

Specified by:
do_after_propagation in class IVarAbstraction

is_empty

public boolean is_empty()
Specified by:
is_empty in class IVarAbstraction

has_new_pts

public boolean has_new_pts()
Specified by:
has_new_pts in class IVarAbstraction

num_of_diff_objs

public int num_of_diff_objs()
Specified by:
num_of_diff_objs in class IVarAbstraction

num_of_diff_edges

public int num_of_diff_edges()
Specified by:
num_of_diff_edges in class IVarAbstraction

add_points_to_3

public boolean add_points_to_3(AllocNode obj,
                               long I1,
                               long I2,
                               long L)
Specified by:
add_points_to_3 in class IVarAbstraction

add_points_to_4

public boolean add_points_to_4(AllocNode obj,
                               long I1,
                               long I2,
                               long L1,
                               long L2)
Specified by:
add_points_to_4 in class IVarAbstraction

add_simple_constraint_3

public boolean add_simple_constraint_3(IVarAbstraction qv,
                                       long I1,
                                       long I2,
                                       long L)
Specified by:
add_simple_constraint_3 in class IVarAbstraction

add_simple_constraint_4

public boolean add_simple_constraint_4(IVarAbstraction qv,
                                       long I1,
                                       long I2,
                                       long L1,
                                       long L2)
Specified by:
add_simple_constraint_4 in class IVarAbstraction

put_complex_constraint

public void put_complex_constraint(PlainConstraint cons)
Specified by:
put_complex_constraint in class IVarAbstraction

drop_duplicates

public void drop_duplicates()
Discard all context sensitive tuples which are covered by insensitive ones

Specified by:
drop_duplicates in class IVarAbstraction

propagate

public void propagate(GeomPointsTo ptAnalyzer,
                      IWorklist worklist)
An efficient implementation of differential propagation.

Specified by:
propagate in class IVarAbstraction

count_pts_intervals

public int count_pts_intervals(AllocNode obj)
Specified by:
count_pts_intervals in class IVarAbstraction

count_flow_intervals

public int count_flow_intervals(IVarAbstraction qv)
Specified by:
count_flow_intervals in class IVarAbstraction

heap_sensitive_intersection

public boolean heap_sensitive_intersection(IVarAbstraction qv)
Query if this pointer and qv could point to the same object under any contexts

Specified by:
heap_sensitive_intersection in class IVarAbstraction

pointer_sensitive_points_to

public boolean pointer_sensitive_points_to(long context,
                                           AllocNode obj)
Specified by:
pointer_sensitive_points_to in class IVarAbstraction

test_points_to_has_types

public boolean test_points_to_has_types(Set<Type> types)
Specified by:
test_points_to_has_types in class IVarAbstraction

get_all_points_to_objects

public Set<AllocNode> get_all_points_to_objects()
Specified by:
get_all_points_to_objects in class IVarAbstraction

print_context_sensitive_points_to

public void print_context_sensitive_points_to(PrintStream outPrintStream)
Specified by:
print_context_sensitive_points_to in class IVarAbstraction

add_shapes_to_set

public void add_shapes_to_set(TreeSet<SegmentNode>[] ts)

pointer_interval_points_to

public boolean pointer_interval_points_to(long l,
                                          long r,
                                          AllocNode obj)
Specified by:
pointer_interval_points_to in class IVarAbstraction

remove_points_to

public void remove_points_to(AllocNode obj)
Specified by:
remove_points_to in class IVarAbstraction

discard

public void discard()
Specified by:
discard in class IVarAbstraction

count_new_pts_intervals

public int count_new_pts_intervals()
Specified by:
count_new_pts_intervals in class IVarAbstraction

get_all_context_sensitive_objects

public int get_all_context_sensitive_objects(long l,
                                             long r,
                                             ZArrayNumberer<CallsiteContextVar> all_objs,
                                             Vector<CallsiteContextVar> outList)
Specified by:
get_all_context_sensitive_objects in class IVarAbstraction