soot.jimple.spark.geom.geomPA
Class IVarAbstraction

java.lang.Object
  extended by soot.jimple.spark.geom.geomPA.IVarAbstraction
All Implemented Interfaces:
Numberable
Direct Known Subclasses:
DummyNode, FullSensitiveNode, HeapInsNode, PtInsNode

public abstract class IVarAbstraction
extends Object
implements Numberable

An interface makes the points-to solver automatically adapt to different kind of encodings. This interface defines the operations that are needed for manipulating a variable (pointer/object).

Author:
richardxx

Field Summary
 int id
           
 int lrf_value
           
 Node me
           
protected static RectangleNode pres
           
 int Qpos
           
protected static GeometricManager stubManager
           
 int top_value
           
 
Constructor Summary
IVarAbstraction()
           
 
Method Summary
abstract  boolean add_points_to_3(AllocNode obj, long I1, long I2, long L)
           
abstract  boolean add_points_to_4(AllocNode obj, long I1, long I2, long L1, long L2)
           
abstract  boolean add_simple_constraint_3(IVarAbstraction qv, long I1, long I2, long L)
           
abstract  boolean add_simple_constraint_4(IVarAbstraction qv, long I1, long I2, long L1, long L2)
           
abstract  int count_flow_intervals(IVarAbstraction qv)
           
abstract  int count_new_pts_intervals()
           
abstract  int count_pts_intervals(AllocNode obj)
           
abstract  void discard()
           
abstract  void do_after_propagation()
           
abstract  void do_before_propagation()
           
abstract  void drop_duplicates()
           
abstract  int get_all_context_sensitive_objects(long l, long r, ZArrayNumberer<CallsiteContextVar> all_objs, Vector<CallsiteContextVar> outList)
           
abstract  Set<AllocNode> get_all_points_to_objects()
           
 int getNumber()
           
 IVarAbstraction getRepresentative()
           
 Type getType()
           
 Node getWrappedNode()
           
abstract  boolean has_new_pts()
           
abstract  boolean heap_sensitive_intersection(IVarAbstraction qv)
           
abstract  boolean is_empty()
           
 boolean lessThan(IVarAbstraction other)
           
 IVarAbstraction merge(IVarAbstraction other)
           
abstract  int num_of_diff_edges()
           
abstract  int num_of_diff_objs()
           
abstract  boolean pointer_interval_points_to(long l, long r, AllocNode obj)
           
abstract  boolean pointer_sensitive_points_to(long context, AllocNode obj)
           
abstract  void print_context_sensitive_points_to(PrintStream outPrintStream)
           
abstract  void propagate(GeomPointsTo ptAnalyzer, IWorklist worklist)
           
abstract  void put_complex_constraint(PlainConstraint cons)
           
abstract  void reconstruct()
           
abstract  void remove_points_to(AllocNode obj)
           
 void setNumber(int number)
           
abstract  boolean test_points_to_has_types(Set<Type> types)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

stubManager

protected static GeometricManager stubManager

pres

protected static RectangleNode pres

me

public Node me

id

public int id

Qpos

public int Qpos

top_value

public int top_value

lrf_value

public int lrf_value
Constructor Detail

IVarAbstraction

public IVarAbstraction()
Method Detail

getWrappedNode

public Node getWrappedNode()

getType

public Type getType()

lessThan

public boolean lessThan(IVarAbstraction other)

getRepresentative

public IVarAbstraction getRepresentative()

merge

public IVarAbstraction merge(IVarAbstraction other)

setNumber

public void setNumber(int number)
Specified by:
setNumber in interface Numberable

getNumber

public int getNumber()
Specified by:
getNumber in interface Numberable

add_points_to_3

public abstract boolean add_points_to_3(AllocNode obj,
                                        long I1,
                                        long I2,
                                        long L)

add_points_to_4

public abstract boolean add_points_to_4(AllocNode obj,
                                        long I1,
                                        long I2,
                                        long L1,
                                        long L2)

add_simple_constraint_3

public abstract boolean add_simple_constraint_3(IVarAbstraction qv,
                                                long I1,
                                                long I2,
                                                long L)

add_simple_constraint_4

public abstract boolean add_simple_constraint_4(IVarAbstraction qv,
                                                long I1,
                                                long I2,
                                                long L1,
                                                long L2)

put_complex_constraint

public abstract void put_complex_constraint(PlainConstraint cons)

reconstruct

public abstract void reconstruct()

do_before_propagation

public abstract void do_before_propagation()

do_after_propagation

public abstract void do_after_propagation()

propagate

public abstract void propagate(GeomPointsTo ptAnalyzer,
                               IWorklist worklist)

drop_duplicates

public abstract void drop_duplicates()

remove_points_to

public abstract void remove_points_to(AllocNode obj)

discard

public abstract void discard()

is_empty

public abstract boolean is_empty()

has_new_pts

public abstract boolean has_new_pts()

num_of_diff_objs

public abstract int num_of_diff_objs()

num_of_diff_edges

public abstract int num_of_diff_edges()

count_pts_intervals

public abstract int count_pts_intervals(AllocNode obj)

count_new_pts_intervals

public abstract int count_new_pts_intervals()

count_flow_intervals

public abstract int count_flow_intervals(IVarAbstraction qv)

heap_sensitive_intersection

public abstract boolean heap_sensitive_intersection(IVarAbstraction qv)

pointer_sensitive_points_to

public abstract boolean pointer_sensitive_points_to(long context,
                                                    AllocNode obj)

pointer_interval_points_to

public abstract boolean pointer_interval_points_to(long l,
                                                   long r,
                                                   AllocNode obj)

test_points_to_has_types

public abstract boolean test_points_to_has_types(Set<Type> types)

get_all_points_to_objects

public abstract Set<AllocNode> get_all_points_to_objects()

get_all_context_sensitive_objects

public abstract int get_all_context_sensitive_objects(long l,
                                                      long r,
                                                      ZArrayNumberer<CallsiteContextVar> all_objs,
                                                      Vector<CallsiteContextVar> outList)

print_context_sensitive_points_to

public abstract void print_context_sensitive_points_to(PrintStream outPrintStream)