soot.jimple.spark.geom.geomPA
Class IVarAbstraction
java.lang.Object
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
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 |
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
IVarAbstraction
public IVarAbstraction()
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)