Static Value-Flow Analysis
|
DFPTData backed by a PersistentPointsToCache. More...
#include <PersistentPointsToDS.h>
Public Types | |
typedef PTData< Key, KeySet, Data, DataSet > | BasePTData |
typedef BasePTData::PTDataTy | PTDataTy |
typedef DFPTData< Key, KeySet, Data, DataSet > | BaseDFPTData |
typedef PersistentPTData< Key, KeySet, Data, DataSet > | BasePersPTData |
typedef BaseDFPTData::LocID | LocID |
typedef BasePersPTData::KeyToIDMap | KeyToIDMap |
typedef Map< LocID, KeyToIDMap > | DFKeyToIDMap |
Public Types inherited from SVF::DFPTData< Key, KeySet, Data, DataSet > | |
typedef PTData< Key, KeySet, Data, DataSet > | BasePTData |
typedef BasePTData::PTDataTy | PTDataTy |
typedef NodeID | LocID |
Public Types inherited from SVF::PTData< Key, KeySet, Data, DataSet > | |
enum | PTDataTy { Base , MutBase , Diff , MutDiff , DataFlow , MutDataFlow , MutIncDataFlow , Versioned , MutVersioned , PersBase , PersDiff , PersDataFlow , PersIncDataFlow , PersVersioned } |
Types of a points-to data structures. More... | |
Public Member Functions | |
PersistentDFPTData (PersistentPointsToCache< DataSet > &cache, bool reversePT=true, PTDataTy ty=PTDataTy::PersDataFlow) | |
~PersistentDFPTData () override=default | |
void | clear () override |
Clears all points-to sets as if nothing is stored. More... | |
const DataSet & | getPts (const Key &var) override |
Get points-to set of var. More... | |
const KeySet & | getRevPts (const Data &) override |
Get reverse points-to set of a datum. More... | |
bool | unionPts (const Key &dstKey, const Key &srcKey) override |
Performs pts(dstVar) = pts(dstVar) U pts(srcVar). More... | |
bool | unionPts (const Key &dstKey, const DataSet &srcDataSet) override |
Performs pts(dstVar) = pts(dstVar) U srcDataSet. More... | |
bool | addPts (const Key &dstKey, const Data &element) override |
Adds element to the points-to set associated with var. More... | |
void | clearPts (const Key &var, const Data &element) override |
Clears element from the points-to set of var. More... | |
void | clearFullPts (const Key &var) override |
Fully clears the points-to set of var. More... | |
void | remapAllPts () override |
Remaps all points-to sets to use the current mapping. More... | |
void | dumpPTData () override |
Dump stored keys and points-to sets. More... | |
bool | hasDFInSet (LocID loc) const override |
bool | hasDFOutSet (LocID loc) const override |
bool | hasDFInSet (LocID loc, const Key &var) const override |
bool | hasDFOutSet (LocID loc, const Key &var) const override |
const DataSet & | getDFInPtsSet (LocID loc, const Key &var) override |
const DataSet & | getDFOutPtsSet (LocID loc, const Key &var) override |
bool | updateDFInFromIn (LocID srcLoc, const Key &srcVar, LocID dstLoc, const Key &dstVar) override |
bool | updateAllDFInFromIn (LocID srcLoc, const Key &srcVar, LocID dstLoc, const Key &dstVar) override |
Union (IN[dstLoc::dstVar], IN[srcLoc:srcVar]. There is no flag check, unlike the above. More... | |
bool | updateDFInFromOut (LocID srcLoc, const Key &srcVar, LocID dstLoc, const Key &dstVar) override |
Union (IN[dstLoc:dstVar], OUT[srcLoc:srcVar]). More... | |
bool | updateAllDFInFromOut (LocID srcLoc, const Key &srcVar, LocID dstLoc, const Key &dstVar) override |
Union (IN[dstLoc::dstVar], OUT[srcLoc:srcVar]. There is no flag check, unlike the above. More... | |
bool | updateDFOutFromIn (LocID srcLoc, const Key &srcVar, LocID dstLoc, const Key &dstVar) override |
Union (OUT[dstLoc:dstVar], IN[srcLoc:srcVar]). More... | |
bool | updateAllDFOutFromIn (LocID loc, const Key &singleton, bool strongUpdates) override |
For each variable var in IN at loc, do updateDFOutFromIn(loc, var, loc, var). More... | |
void | clearAllDFOutUpdatedVar (LocID) override |
bool | updateTLVPts (LocID srcLoc, const Key &srcVar, const Key &dstVar) override |
Update points-to set of top-level pointers with IN[srcLoc:srcVar]. More... | |
bool | updateATVPts (const Key &srcVar, LocID dstLoc, const Key &dstVar) override |
Update address-taken variables OUT[dstLoc:dstVar] with points-to of top-level pointers. More... | |
Map< DataSet, unsigned > | getAllPts (bool liveOnly) const override |
Public Member Functions inherited from SVF::DFPTData< Key, KeySet, Data, DataSet > | |
DFPTData (bool reversePT=true, PTDataTy ty=BasePTData::DataFlow) | |
Constructor. More... | |
virtual | ~DFPTData () |
Public Member Functions inherited from SVF::PTData< Key, KeySet, Data, DataSet > | |
PTData (bool reversePT=true, PTDataTy ty=PTDataTy::Base) | |
virtual | ~PTData () |
PTDataTy | getPTDTY () const |
Get the type of points-to data structure that this is. More... | |
Static Public Member Functions | |
static bool | classof (const PersistentDFPTData< Key, KeySet, Data, DataSet > *) |
static bool | classof (const PTData< Key, KeySet, Data, DataSet > *ptd) |
Static Public Member Functions inherited from SVF::DFPTData< Key, KeySet, Data, DataSet > | |
static bool | classof (const DFPTData< Key, KeySet, Data, DataSet > *) |
static bool | classof (const PTData< Key, KeySet, Data, DataSet > *ptd) |
Protected Member Functions | |
bool | unionPtsThroughIds (PointsToID &dst, PointsToID &src) |
PointsToID & | getDFInPtIdRef (LocID loc, const Key &var) |
PointsToID & | getDFOutPtIdRef (LocID loc, const Key &var) |
Protected Attributes | |
PersistentPointsToCache< DataSet > & | ptCache |
PersistentPTData< Key, KeySet, Data, DataSet > | persPTData |
PTData for top-level pointers. We will also use its cache for address-taken pointers. More... | |
DFKeyToIDMap | dfInPtsMap |
Address-taken points-to sets in IN-sets. More... | |
DFKeyToIDMap | dfOutPtsMap |
Address-taken points-to sets in OUT-sets. More... | |
Protected Attributes inherited from SVF::PTData< Key, KeySet, Data, DataSet > | |
bool | rev |
Whether we maintain reverse points-to sets or not. More... | |
PTDataTy | ptdTy |
DFPTData backed by a PersistentPointsToCache.
Definition at line 334 of file PersistentPointsToDS.h.
typedef DFPTData<Key, KeySet, Data, DataSet> SVF::PersistentDFPTData< Key, KeySet, Data, DataSet >::BaseDFPTData |
Definition at line 339 of file PersistentPointsToDS.h.
typedef PersistentPTData<Key, KeySet, Data, DataSet> SVF::PersistentDFPTData< Key, KeySet, Data, DataSet >::BasePersPTData |
Definition at line 340 of file PersistentPointsToDS.h.
typedef PTData<Key, KeySet, Data, DataSet> SVF::PersistentDFPTData< Key, KeySet, Data, DataSet >::BasePTData |
Definition at line 337 of file PersistentPointsToDS.h.
typedef Map<LocID, KeyToIDMap> SVF::PersistentDFPTData< Key, KeySet, Data, DataSet >::DFKeyToIDMap |
Definition at line 344 of file PersistentPointsToDS.h.
typedef BasePersPTData::KeyToIDMap SVF::PersistentDFPTData< Key, KeySet, Data, DataSet >::KeyToIDMap |
Definition at line 343 of file PersistentPointsToDS.h.
typedef BaseDFPTData::LocID SVF::PersistentDFPTData< Key, KeySet, Data, DataSet >::LocID |
Definition at line 342 of file PersistentPointsToDS.h.
typedef BasePTData::PTDataTy SVF::PersistentDFPTData< Key, KeySet, Data, DataSet >::PTDataTy |
Definition at line 338 of file PersistentPointsToDS.h.
|
inlineexplicit |
Definition at line 346 of file PersistentPointsToDS.h.
|
overridedefault |
|
inlineoverridevirtual |
Adds element to the points-to set associated with var.
Implements SVF::PTData< Key, KeySet, Data, DataSet >.
Definition at line 379 of file PersistentPointsToDS.h.
|
inlinestatic |
Methods to support type inquiry through isa, cast, and dyn_cast:
Definition at line 536 of file PersistentPointsToDS.h.
|
inlinestatic |
Definition at line 541 of file PersistentPointsToDS.h.
|
inlineoverridevirtual |
Clears all points-to sets as if nothing is stored.
Implements SVF::PTData< Key, KeySet, Data, DataSet >.
Reimplemented in SVF::PersistentIncDFPTData< Key, KeySet, Data, DataSet >.
Definition at line 351 of file PersistentPointsToDS.h.
|
inlineoverridevirtual |
Implements SVF::DFPTData< Key, KeySet, Data, DataSet >.
Reimplemented in SVF::PersistentIncDFPTData< Key, KeySet, Data, DataSet >.
Definition at line 486 of file PersistentPointsToDS.h.
|
inlineoverridevirtual |
Fully clears the points-to set of var.
Implements SVF::PTData< Key, KeySet, Data, DataSet >.
Definition at line 389 of file PersistentPointsToDS.h.
|
inlineoverridevirtual |
Clears element from the points-to set of var.
Implements SVF::PTData< Key, KeySet, Data, DataSet >.
Definition at line 384 of file PersistentPointsToDS.h.
|
inlineoverridevirtual |
Dump stored keys and points-to sets.
Implements SVF::PTData< Key, KeySet, Data, DataSet >.
Definition at line 399 of file PersistentPointsToDS.h.
|
inlineoverridevirtual |
Returns a mapping of points-to sets to the number of times they are stored. liveOnly indicates whether to include only points-to sets which correspond to a variable (matters when dealing with non-GC persistent PT).
Implements SVF::PTData< Key, KeySet, Data, DataSet >.
Definition at line 501 of file PersistentPointsToDS.h.
|
inlineprotected |
Definition at line 556 of file PersistentPointsToDS.h.
|
inlineoverridevirtual |
Implements SVF::DFPTData< Key, KeySet, Data, DataSet >.
Definition at line 430 of file PersistentPointsToDS.h.
|
inlineprotected |
Definition at line 561 of file PersistentPointsToDS.h.
|
inlineoverridevirtual |
Implements SVF::DFPTData< Key, KeySet, Data, DataSet >.
Definition at line 436 of file PersistentPointsToDS.h.
|
inlineoverridevirtual |
Get points-to set of var.
Implements SVF::PTData< Key, KeySet, Data, DataSet >.
Definition at line 358 of file PersistentPointsToDS.h.
|
inlineoverridevirtual |
Get reverse points-to set of a datum.
Implements SVF::PTData< Key, KeySet, Data, DataSet >.
Definition at line 363 of file PersistentPointsToDS.h.
|
inlineoverridevirtual |
Determine whether the DF IN/OUT sets have points-to sets.
Implements SVF::DFPTData< Key, KeySet, Data, DataSet >.
Definition at line 404 of file PersistentPointsToDS.h.
|
inlineoverridevirtual |
Implements SVF::DFPTData< Key, KeySet, Data, DataSet >.
Definition at line 414 of file PersistentPointsToDS.h.
|
inlineoverridevirtual |
Implements SVF::DFPTData< Key, KeySet, Data, DataSet >.
Definition at line 409 of file PersistentPointsToDS.h.
|
inlineoverridevirtual |
Access points-to set from data-flow IN/OUT set.
Implements SVF::DFPTData< Key, KeySet, Data, DataSet >.
Definition at line 422 of file PersistentPointsToDS.h.
|
inlineoverridevirtual |
Remaps all points-to sets to use the current mapping.
Implements SVF::PTData< Key, KeySet, Data, DataSet >.
Definition at line 394 of file PersistentPointsToDS.h.
|
inlineoverridevirtual |
Performs pts(dstVar) = pts(dstVar) U srcDataSet.
Implements SVF::PTData< Key, KeySet, Data, DataSet >.
Definition at line 374 of file PersistentPointsToDS.h.
|
inlineoverridevirtual |
Performs pts(dstVar) = pts(dstVar) U pts(srcVar).
Implements SVF::PTData< Key, KeySet, Data, DataSet >.
Definition at line 369 of file PersistentPointsToDS.h.
|
inlineprotected |
Definition at line 549 of file PersistentPointsToDS.h.
|
inlineoverridevirtual |
Union (IN[dstLoc::dstVar], IN[srcLoc:srcVar]. There is no flag check, unlike the above.
Implements SVF::DFPTData< Key, KeySet, Data, DataSet >.
Reimplemented in SVF::PersistentIncDFPTData< Key, KeySet, Data, DataSet >.
Definition at line 447 of file PersistentPointsToDS.h.
|
inlineoverridevirtual |
Union (IN[dstLoc::dstVar], OUT[srcLoc:srcVar]. There is no flag check, unlike the above.
Implements SVF::DFPTData< Key, KeySet, Data, DataSet >.
Reimplemented in SVF::PersistentIncDFPTData< Key, KeySet, Data, DataSet >.
Definition at line 457 of file PersistentPointsToDS.h.
|
inlineoverridevirtual |
For each variable var in IN at loc, do updateDFOutFromIn(loc, var, loc, var).
Enable strong updates if required.
Implements SVF::DFPTData< Key, KeySet, Data, DataSet >.
Reimplemented in SVF::PersistentIncDFPTData< Key, KeySet, Data, DataSet >.
Definition at line 467 of file PersistentPointsToDS.h.
|
inlineoverridevirtual |
Update address-taken variables OUT[dstLoc:dstVar] with points-to of top-level pointers.
Implements SVF::DFPTData< Key, KeySet, Data, DataSet >.
Reimplemented in SVF::PersistentIncDFPTData< Key, KeySet, Data, DataSet >.
Definition at line 496 of file PersistentPointsToDS.h.
|
inlineoverridevirtual |
Update points-to for IN/OUT set IN[loc:var] represents the points-to of variable var in the IN set of location loc. union(ptsDst, ptsSrc) represents ptsDst = ptsDst U ptsSrc.
Union (IN[dstLoc:dstVar], IN[srcLoc:srcVar]).
Implements SVF::DFPTData< Key, KeySet, Data, DataSet >.
Reimplemented in SVF::PersistentIncDFPTData< Key, KeySet, Data, DataSet >.
Definition at line 442 of file PersistentPointsToDS.h.
|
inlineoverridevirtual |
Union (IN[dstLoc:dstVar], OUT[srcLoc:srcVar]).
Implements SVF::DFPTData< Key, KeySet, Data, DataSet >.
Reimplemented in SVF::PersistentIncDFPTData< Key, KeySet, Data, DataSet >.
Definition at line 452 of file PersistentPointsToDS.h.
|
inlineoverridevirtual |
Union (OUT[dstLoc:dstVar], IN[srcLoc:srcVar]).
Implements SVF::DFPTData< Key, KeySet, Data, DataSet >.
Reimplemented in SVF::PersistentIncDFPTData< Key, KeySet, Data, DataSet >.
Definition at line 462 of file PersistentPointsToDS.h.
|
inlineoverridevirtual |
Update points-to set of top-level pointers with IN[srcLoc:srcVar].
Implements SVF::DFPTData< Key, KeySet, Data, DataSet >.
Reimplemented in SVF::PersistentIncDFPTData< Key, KeySet, Data, DataSet >.
Definition at line 491 of file PersistentPointsToDS.h.
|
protected |
Address-taken points-to sets in IN-sets.
Definition at line 573 of file PersistentPointsToDS.h.
|
protected |
Address-taken points-to sets in OUT-sets.
Definition at line 575 of file PersistentPointsToDS.h.
|
protected |
PTData for top-level pointers. We will also use its cache for address-taken pointers.
Definition at line 570 of file PersistentPointsToDS.h.
|
protected |
Definition at line 567 of file PersistentPointsToDS.h.