Static Value-Flow Analysis
|
DiffPTData implemented with a persistent points-to backing. More...
#include <PersistentPointsToDS.h>
Public Types | |
typedef PTData< Key, KeySet, Data, DataSet > | BasePTData |
typedef DiffPTData< Key, KeySet, Data, DataSet > | BaseDiffPTData |
typedef PersistentPTData< Key, KeySet, Data, DataSet > | BasePersPTData |
typedef BasePTData::PTDataTy | PTDataTy |
typedef BasePersPTData::KeyToIDMap | KeyToIDMap |
typedef BasePersPTData::RevPtsMap | RevPtsMap |
Public Types inherited from SVF::DiffPTData< Key, KeySet, Data, DataSet > | |
typedef PTData< Key, KeySet, Data, DataSet > | BasePTData |
typedef BasePTData::PTDataTy | PTDataTy |
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 | |
PersistentDiffPTData (PersistentPointsToCache< DataSet > &cache, bool reversePT=true, PTDataTy ty=PTDataTy::PersDiff) | |
Constructor. | |
~PersistentDiffPTData () override=default | |
void | clear () override |
Clears all points-to sets as if nothing is stored. | |
const DataSet & | getPts (const Key &var) override |
Get points-to set of var. | |
const KeySet & | getRevPts (const Data &data) override |
Get reverse points-to set of a datum. | |
bool | addPts (const Key &dstKey, const Data &element) override |
Adds element to the points-to set associated with var. | |
bool | unionPts (const Key &dstKey, const Key &srcKey) override |
Performs pts(dstVar) = pts(dstVar) U pts(srcVar). | |
bool | unionPts (const Key &dstKey, const DataSet &srcDataSet) override |
Performs pts(dstVar) = pts(dstVar) U srcDataSet. | |
void | clearPts (const Key &var, const Data &element) override |
Clears element from the points-to set of var. | |
void | clearFullPts (const Key &var) override |
Fully clears the points-to set of var. | |
void | remapAllPts () override |
Remaps all points-to sets to use the current mapping. | |
void | dumpPTData () override |
Dump stored keys and points-to sets. | |
const DataSet & | getDiffPts (Key &var) override |
Get diff points to. | |
bool | computeDiffPts (Key &var, const DataSet &all) override |
void | updatePropaPtsMap (Key &src, Key &dst) override |
void | clearPropaPts (Key &var) override |
Clear propagated points-to set of var. | |
Map< DataSet, unsigned > | getAllPts (bool liveOnly) const override |
Public Member Functions inherited from SVF::DiffPTData< Key, KeySet, Data, DataSet > | |
DiffPTData (bool reversePT=true, PTDataTy ty=PTDataTy::Diff) | |
virtual | ~DiffPTData () |
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. | |
Static Public Member Functions | |
static bool | classof (const PersistentDiffPTData< Key, KeySet, Data, DataSet > *) |
static bool | classof (const PTData< Key, KeySet, Data, DataSet > *ptd) |
Static Public Member Functions inherited from SVF::DiffPTData< Key, KeySet, Data, DataSet > | |
static bool | classof (const DiffPTData< Key, KeySet, Data, DataSet > *) |
static bool | classof (const PTData< Key, KeySet, Data, DataSet > *ptd) |
Private Attributes | |
PersistentPointsToCache< DataSet > & | ptCache |
PersistentPTData< Key, KeySet, Data, DataSet > | persPTData |
Backing to implement basic PTData methods. Allows us to avoid multiple inheritance. | |
KeyToIDMap | diffPtsMap |
Diff points-to to be propagated. | |
KeyToIDMap | propaPtsMap |
Points-to already propagated. | |
Additional Inherited Members | |
Protected Attributes inherited from SVF::PTData< Key, KeySet, Data, DataSet > | |
bool | rev |
Whether we maintain reverse points-to sets or not. | |
PTDataTy | ptdTy |
DiffPTData implemented with a persistent points-to backing.
Definition at line 200 of file PersistentPointsToDS.h.
typedef DiffPTData<Key, KeySet, Data, DataSet> SVF::PersistentDiffPTData< Key, KeySet, Data, DataSet >::BaseDiffPTData |
Definition at line 204 of file PersistentPointsToDS.h.
typedef PersistentPTData<Key, KeySet, Data, DataSet> SVF::PersistentDiffPTData< Key, KeySet, Data, DataSet >::BasePersPTData |
Definition at line 205 of file PersistentPointsToDS.h.
typedef PTData<Key, KeySet, Data, DataSet> SVF::PersistentDiffPTData< Key, KeySet, Data, DataSet >::BasePTData |
Definition at line 203 of file PersistentPointsToDS.h.
typedef BasePersPTData::KeyToIDMap SVF::PersistentDiffPTData< Key, KeySet, Data, DataSet >::KeyToIDMap |
Definition at line 208 of file PersistentPointsToDS.h.
typedef BasePTData::PTDataTy SVF::PersistentDiffPTData< Key, KeySet, Data, DataSet >::PTDataTy |
Definition at line 206 of file PersistentPointsToDS.h.
typedef BasePersPTData::RevPtsMap SVF::PersistentDiffPTData< Key, KeySet, Data, DataSet >::RevPtsMap |
Definition at line 209 of file PersistentPointsToDS.h.
|
inlineexplicit |
Constructor.
Definition at line 212 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 235 of file PersistentPointsToDS.h.
|
inlinestatic |
Methods to support type inquiry through isa, cast, and dyn_cast:
Definition at line 311 of file PersistentPointsToDS.h.
|
inlinestatic |
Definition at line 316 of file PersistentPointsToDS.h.
|
inlineoverridevirtual |
Clears all points-to sets as if nothing is stored.
Implements SVF::PTData< Key, KeySet, Data, DataSet >.
Definition at line 217 of file PersistentPointsToDS.h.
|
inlineoverridevirtual |
Fully clears the points-to set of var.
Implements SVF::PTData< Key, KeySet, Data, DataSet >.
Definition at line 255 of file PersistentPointsToDS.h.
|
inlineoverridevirtual |
Clear propagated points-to set of var.
Implements SVF::DiffPTData< Key, KeySet, Data, DataSet >.
Definition at line 299 of file PersistentPointsToDS.h.
|
inlineoverridevirtual |
Clears element from the points-to set of var.
Implements SVF::PTData< Key, KeySet, Data, DataSet >.
Definition at line 250 of file PersistentPointsToDS.h.
|
inlineoverridevirtual |
Compute diff points to. Return TRUE if diff is not empty.
Implements SVF::DiffPTData< Key, KeySet, Data, DataSet >.
Definition at line 276 of file PersistentPointsToDS.h.
|
inlineoverridevirtual |
Dump stored keys and points-to sets.
Implements SVF::PTData< Key, KeySet, Data, DataSet >.
Definition at line 265 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 304 of file PersistentPointsToDS.h.
|
inlineoverridevirtual |
Get diff points to.
Implements SVF::DiffPTData< Key, KeySet, Data, DataSet >.
Definition at line 270 of file PersistentPointsToDS.h.
|
inlineoverridevirtual |
Get points-to set of var.
Implements SVF::PTData< Key, KeySet, Data, DataSet >.
Definition at line 224 of file PersistentPointsToDS.h.
|
inlineoverridevirtual |
Get reverse points-to set of a datum.
Implements SVF::PTData< Key, KeySet, Data, DataSet >.
Definition at line 229 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 260 of file PersistentPointsToDS.h.
|
inlineoverridevirtual |
Performs pts(dstVar) = pts(dstVar) U srcDataSet.
Implements SVF::PTData< Key, KeySet, Data, DataSet >.
Definition at line 245 of file PersistentPointsToDS.h.
|
inlineoverridevirtual |
Performs pts(dstVar) = pts(dstVar) U pts(srcVar).
Implements SVF::PTData< Key, KeySet, Data, DataSet >.
Definition at line 240 of file PersistentPointsToDS.h.
|
inlineoverridevirtual |
Update dst's propagated points-to set with src's. The final result is the intersection of these two sets.
Implements SVF::DiffPTData< Key, KeySet, Data, DataSet >.
Definition at line 292 of file PersistentPointsToDS.h.
|
private |
Diff points-to to be propagated.
Definition at line 327 of file PersistentPointsToDS.h.
|
private |
Backing to implement basic PTData methods. Allows us to avoid multiple inheritance.
Definition at line 325 of file PersistentPointsToDS.h.
|
private |
Points-to already propagated.
Definition at line 329 of file PersistentPointsToDS.h.
|
private |
Definition at line 323 of file PersistentPointsToDS.h.