Class DemandRefinementPointsTo.FlowsToComputer
java.lang.Object
com.ibm.wala.demandpa.alg.DemandRefinementPointsTo.PointsToComputer
com.ibm.wala.demandpa.alg.DemandRefinementPointsTo.FlowsToComputer
- Enclosing class:
DemandRefinementPointsTo
protected class DemandRefinementPointsTo.FlowsToComputer
extends DemandRefinementPointsTo.PointsToComputer
used to compute "flows-to sets," i.e., all the pointers that can point to some instance key
-
Field Summary
Fields inherited from class DemandRefinementPointsTo.PointsToComputer
ikAndStates, pkToP2Set, pkToTrackedSet, queriedPkAndStateModifier and TypeFieldDescriptionprotected final OrdinalSetMapping<InstanceKeyAndState> for numberingInstanceKey,StateMachine.Statepairsprotected final Map<PointerKeyAndState, MutableIntSet> protected final Map<PointerKeyAndState, MutableIntSet> protected final PointerKeyAndState -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprotected voidcompute()protected booleanhandleTrackedPred(MutableIntSet curTrackedSet, PointerKeyAndState predPkAndState, IFlowLabel label) also update the flows-to set of interest if necessaryMethods inherited from class DemandRefinementPointsTo.PointsToComputer
addAllToP2Set, addToTrackedPToWorklist, calleeSubGraphMissingAndShouldNotBeAdded, find, findOrCreate, getComputedP2Set, handleBackCopy, handleTrackedPointsToWorklist, makePassOverFieldStmts, matchingPToQueried, worklistLoopModifier and TypeMethodDescriptionprotected booleanaddAllToP2Set(Map<PointerKeyAndState, MutableIntSet> p2setMap, PointerKeyAndState pkAndState, IntSet vals, IFlowLabel label) protected voidaddToTrackedPToWorklist(PointerKeyAndState pkAndState) protected booleancalleeSubGraphMissingAndShouldNotBeAdded(boolean addGraphs, CGNode callee, PointerKeyAndState pkAndState) when doing backward interprocedural propagation, is it true that we should not add a graph representation for a callee _and_ that the subgraph for the callee is missing?protected <K> MutableIntSetfind(Map<K, MutableIntSet> M, K key) protected <K> MutableIntSetfindOrCreate(Map<K, MutableIntSet> M, K key) getComputedP2Set(PointerKeyAndState queried) get a points-to set that has already been computed via some previous call toDemandRefinementPointsTo.PointsToComputer.compute(); does _not_ do any fresh demand-driven computation.protected voidhandleBackCopy(PointerKeyAndState curPkAndState, PointerKey predPk, IFlowLabel label) voidvoidprotected Collection<PointerKeyAndState> matchingPToQueried(PointerKeyAndState curPkAndState, PointerKey predPk, IFlowLabel label) protected void
-
Constructor Details
-
FlowsToComputer
-
-
Method Details
-
compute
protected void compute()- Overrides:
computein classDemandRefinementPointsTo.PointsToComputer
-
getComputedFlowsToSet
-
handleTrackedPred
protected boolean handleTrackedPred(MutableIntSet curTrackedSet, PointerKeyAndState predPkAndState, IFlowLabel label) also update the flows-to set of interest if necessary- Overrides:
handleTrackedPredin classDemandRefinementPointsTo.PointsToComputer- Parameters:
curTrackedSet- the tracked locationspredPkAndState- the predecessor
-