com.ibm.wala.demandpa.alg
Class DemandRefinementPointsTo
java.lang.Object
com.ibm.wala.demandpa.alg.AbstractDemandPointsTo
com.ibm.wala.demandpa.alg.DemandRefinementPointsTo
- All Implemented Interfaces:
- IDemandPointerAnalysis
public class DemandRefinementPointsTo
- extends AbstractDemandPointsTo
Demand-driven refinement-based points-to analysis.
- Author:
- Manu Sridharan
|
Constructor Summary |
DemandRefinementPointsTo(CallGraph cg,
ThisFilteringHeapModel model,
MemoryAccessMap fam,
ClassHierarchy cha,
AnalysisOptions options,
StateMachineFactory<IFlowLabel> stateMachineFactory)
|
DemandRefinementPointsTo(CallGraph cg,
ThisFilteringHeapModel model,
MemoryAccessMap fam,
ClassHierarchy cha,
AnalysisOptions options,
StateMachineFactory<IFlowLabel> stateMachineFactory,
IFlowGraph flowGraph)
|
| Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
g
protected final IFlowGraph g
refinementPolicy
protected RefinementPolicy refinementPolicy
DemandRefinementPointsTo
public DemandRefinementPointsTo(CallGraph cg,
ThisFilteringHeapModel model,
MemoryAccessMap fam,
ClassHierarchy cha,
AnalysisOptions options,
StateMachineFactory<IFlowLabel> stateMachineFactory)
DemandRefinementPointsTo
public DemandRefinementPointsTo(CallGraph cg,
ThisFilteringHeapModel model,
MemoryAccessMap fam,
ClassHierarchy cha,
AnalysisOptions options,
StateMachineFactory<IFlowLabel> stateMachineFactory,
IFlowGraph flowGraph)
getRefinementPolicy
public RefinementPolicy getRefinementPolicy()
startNewQuery
protected void startNewQuery()
- re-initialize state for a new query
getPointsTo
public Pair<DemandRefinementPointsTo.PointsToResult,Collection<InstanceKey>> getPointsTo(PointerKey pk,
Predicate<Collection<InstanceKey>> p2setPred)
throws IllegalArgumentException
- compute a points-to set for a pointer key, aiming to satisfy some predicate
- Parameters:
pk - the pointer keyp2setPred - the desired predicate that the points-to set should ideally satisfy
- Returns:
- a pair consisting of (1) a
DemandRefinementPointsTo.PointsToResult indicating whether a points-to set satisfying the
predicate was computed, and (2) the last computed points-to set for the variable (possibly
null if no points-to set could be computed in the budget)
- Throws:
IllegalArgumentException - if pk is not a LocalPointerKey; to eventually be fixed
getPointsTo
public Collection<InstanceKey> getPointsTo(PointerKey pk)
- Returns:
- the points-to set of
pk, or null if the points-to set can't be computed in
the allocated budget
getStateMachineFactory
public StateMachineFactory<IFlowLabel> getStateMachineFactory()
setStateMachineFactory
public void setStateMachineFactory(StateMachineFactory<IFlowLabel> stateMachineFactory)
getRefinementPolicyFactory
public RefinementPolicyFactory getRefinementPolicyFactory()
setRefinementPolicyFactory
public void setRefinementPolicyFactory(RefinementPolicyFactory refinementPolicyFactory)