Static Value-Flow Analysis
|
Solver Utilize CFLData. More...
#include <CFLSolver.h>
Public Types | |
typedef std::map< const Label, NodeBS > | TypeMap |
typedef std::unordered_map< NodeID, TypeMap > | DataMap |
typedef DataMap::iterator | iterator |
typedef DataMap::const_iterator | const_iterator |
Public Types inherited from SVF::CFLSolver | |
typedef FIFOWorkList< const CFLEdge * > | WorkList |
Define worklist. More... | |
typedef CFGrammar::Production | Production |
typedef CFGrammar::Symbol | Symbol |
Public Member Functions | |
virtual void | clear () |
const_iterator | begin () const |
const_iterator | end () const |
iterator | begin () |
iterator | end () |
DataMap & | getSuccMap () |
DataMap & | getPredMap () |
TypeMap & | getSuccMap (const NodeID key) |
TypeMap & | getPredMap (const NodeID key) |
NodeBS & | getSuccs (const NodeID key, const Label ty) |
NodeBS & | getPreds (const NodeID key, const Label ty) |
bool | addEdge (const NodeID src, const NodeID dst, const Label ty) |
NodeBS | addEdges (const NodeID src, const NodeBS &dstData, const Label ty) |
add edges and return the set of added edges (dst) for src More... | |
NodeBS | addEdges (const NodeBS &srcData, const NodeID dst, const Label ty) |
add edges and return the set of added edges (src) for dst More... | |
bool | hasEdge (const NodeID src, const NodeID dst, const Label ty) |
find src -> find src[ty] -> find dst in set More... | |
void | clearEdges (const NodeID key) |
POCRSolver (CFLGraph *_graph, CFGrammar *_grammar) | |
virtual | ~POCRSolver () |
Destructor. More... | |
virtual void | processCFLEdge (const CFLEdge *Y_edge) |
Process CFLEdge. More... | |
virtual void | buildCFLData () |
Init CFLData. More... | |
virtual void | initialize () |
Initialize worklist. More... | |
Public Member Functions inherited from SVF::CFLSolver | |
CFLSolver (CFLGraph *_graph, CFGrammar *_grammar) | |
virtual | ~CFLSolver () |
virtual void | solve () |
Start solving. More... | |
const CFLGraph * | getGraph () const |
Return CFL Graph. More... | |
const CFGrammar * | getGrammar () const |
Return CFL Grammar. More... | |
virtual bool | pushIntoWorklist (const CFLEdge *item) |
virtual bool | isWorklistEmpty () |
Protected Member Functions | |
bool | addPred (const NodeID key, const NodeID src, const Label ty) |
bool | addSucc (const NodeID key, const NodeID dst, const Label ty) |
bool | addPreds (const NodeID key, const NodeBS &data, const Label ty) |
bool | addSuccs (const NodeID key, const NodeBS &data, const Label ty) |
Protected Member Functions inherited from SVF::CFLSolver | |
const CFLEdge * | popFromWorklist () |
Worklist operations. More... | |
bool | isInWorklist (const CFLEdge *item) |
Protected Attributes | |
DataMap | succMap |
DataMap | predMap |
const NodeBS | emptyData |
NodeBS | diff |
Protected Attributes inherited from SVF::CFLSolver | |
CFLGraph * | graph |
CFGrammar * | grammar |
WorkList | worklist |
Worklist for resolution. More... | |
Additional Inherited Members | |
Static Public Attributes inherited from SVF::CFLSolver | |
static double | numOfChecks = 0 |
Solver Utilize CFLData.
Definition at line 116 of file CFLSolver.h.
typedef DataMap::const_iterator SVF::POCRSolver::const_iterator |
Definition at line 122 of file CFLSolver.h.
typedef std::unordered_map<NodeID, TypeMap> SVF::POCRSolver::DataMap |
Definition at line 120 of file CFLSolver.h.
typedef DataMap::iterator SVF::POCRSolver::iterator |
Definition at line 121 of file CFLSolver.h.
typedef std::map<const Label, NodeBS> SVF::POCRSolver::TypeMap |
Definition at line 119 of file CFLSolver.h.
Definition at line 269 of file CFLSolver.h.
|
inlinevirtual |
Definition at line 215 of file CFLSolver.h.
|
inline |
add edges and return the set of added edges (src) for dst
Definition at line 235 of file CFLSolver.h.
|
inline |
add edges and return the set of added edges (dst) for src
Definition at line 222 of file CFLSolver.h.
|
inlineprotected |
Definition at line 131 of file CFLSolver.h.
|
inlineprotected |
Definition at line 141 of file CFLSolver.h.
|
inlineprotected |
Definition at line 136 of file CFLSolver.h.
|
inlineprotected |
Definition at line 148 of file CFLSolver.h.
|
inline |
Definition at line 173 of file CFLSolver.h.
|
inline |
Definition at line 163 of file CFLSolver.h.
|
virtual |
Init CFLData.
Definition at line 132 of file CFLSolver.cpp.
|
inlinevirtual |
Definition at line 157 of file CFLSolver.h.
|
inline |
Definition at line 262 of file CFLSolver.h.
|
inline |
Definition at line 178 of file CFLSolver.h.
|
inline |
Definition at line 168 of file CFLSolver.h.
|
inline |
Definition at line 188 of file CFLSolver.h.
Definition at line 198 of file CFLSolver.h.
Definition at line 208 of file CFLSolver.h.
|
inline |
Definition at line 183 of file CFLSolver.h.
Definition at line 193 of file CFLSolver.h.
Definition at line 203 of file CFLSolver.h.
|
virtual |
Initialize worklist.
Foreach production X -> epsilon add X(i,i) if not exist to E and to worklist
Foreach production X -> epsilon add X(i,i) if not exist to E and to worklist
Reimplemented from SVF::CFLSolver.
Reimplemented in SVF::POCRHybridSolver.
Definition at line 192 of file CFLSolver.cpp.
|
virtual |
Process CFLEdge.
For each production X -> Y add X(i,j) if not exist to E and to worklist
For each production X -> Y Z Foreach outgoing edge Z(j,k) from node j do add X(i,k) if not exist to E and to worklist
For each production X -> Z Y Foreach incoming edge Z(k,i) to node i do add X(k,j) if not exist to E and to worklist
Reimplemented from SVF::CFLSolver.
Reimplemented in SVF::POCRHybridSolver.
Definition at line 138 of file CFLSolver.cpp.
|
protected |
Definition at line 128 of file CFLSolver.h.
|
protected |
Definition at line 127 of file CFLSolver.h.
|
protected |
Definition at line 126 of file CFLSolver.h.
|
protected |
Definition at line 125 of file CFLSolver.h.