|
Static Value-Flow Analysis
|
#include <SlicedGraphs.h>
Public Member Functions | |
| SlicedThreadCallGraphView (ThreadCallGraph *tcg, const OrderedSet< const FunObjVar * > &keptFunctions, const OrderedSet< const ICFGNode * > &extendedKeptNodes) | |
| void | getOutEdgesOf (const CallGraphNode *node, std::vector< const CallGraphEdge * > &out) const |
| Get out edges of a node (only returns kept edges and target nodes). | |
| void | getInEdgesOf (const CallGraphNode *node, std::vector< const CallGraphEdge * > &out) const |
| Get in edges of a node (only returns kept edges and source nodes). | |
| void | getDirectCallsOf (const CallGraphEdge *edge, std::vector< const CallICFGNode * > &out) const |
| Retained callsites carried by an aggregated call-graph edge. | |
| void | getIndirectCallsOf (const CallGraphEdge *edge, std::vector< const CallICFGNode * > &out) const |
| bool | containsCallSite (const CallGraphEdge *edge, const CallICFGNode *callSite) const |
| Whether this precise callsite-to-callee relation is retained. | |
| void | getCalleesOf (const CallICFGNode *callSite, CallGraph::FunctionSet &callees) const |
| Retained callees of a callsite. | |
| void | getForkEdgesOf (const CallICFGNode *callSite, std::vector< const CallGraphEdge * > &out) const |
| void | getJoinEdgesOf (const CallICFGNode *callSite, std::vector< const CallGraphEdge * > &out) const |
| bool | isKeptNode (const CallGraphNode *node) const |
| Check if a node is in the sliced view. | |
| const OrderedSet< const CallGraphNode * > & | getKeptNodes () const |
| Get all kept nodes. | |
| const Set< const FunObjVar * > & | getKeptFunctions () const |
| bool | isKeptEdge (const CallGraphEdge *e) const |
| const Set< const CallICFGNode * > & | getIndirectSitesWithEmptyTargets () const |
| Indirect call sites that lost all targets after filtering. | |
| void | dump (const std::string &filename) const |
| Dump sliced ThreadCallGraph to dot file. | |
| CallGraph * | getBackingCallGraph () const |
Private Member Functions | |
| void | buildKeptNodes () |
| void | buildCallGraphSets () |
Private Attributes | |
| ThreadCallGraph * | tcg |
| OrderedSet< const CallGraphNode * > | keptNodes |
| Set< const CallGraphEdge * > | keptEdges |
| Map< const CallGraphEdge *, CallGraphEdge::CallInstSet > | keptDirectCalls |
| Map< const CallGraphEdge *, CallGraphEdge::CallInstSet > | keptIndirectCalls |
| Set< const FunObjVar * > | keptFunctionsSet |
| Set< const CallICFGNode * > | indirectSitesWithEmptyTargets |
| OrderedSet< const ICFGNode * > | extendedKeptNodes |
Definition at line 176 of file SlicedGraphs.h.
| SVF::SlicedThreadCallGraphView::SlicedThreadCallGraphView | ( | ThreadCallGraph * | tcg, |
| const OrderedSet< const FunObjVar * > & | keptFunctions, | ||
| const OrderedSet< const ICFGNode * > & | extendedKeptNodes ) |
Definition at line 591 of file SlicedGraphs.cpp.
|
private |
Definition at line 741 of file SlicedGraphs.cpp.
|
private |
Definition at line 607 of file SlicedGraphs.cpp.
| bool SVF::SlicedThreadCallGraphView::containsCallSite | ( | const CallGraphEdge * | edge, |
| const CallICFGNode * | callSite ) const |
Whether this precise callsite-to-callee relation is retained.
Definition at line 668 of file SlicedGraphs.cpp.
| void SVF::SlicedThreadCallGraphView::dump | ( | const std::string & | filename | ) | const |
Dump sliced ThreadCallGraph to dot file.
Definition at line 797 of file SlicedGraphs.cpp.
|
inline |
Backing graph access for the graph-traits implementation only. Analysis traversal must use this view's filtered methods above.
Definition at line 242 of file SlicedGraphs.h.
| void SVF::SlicedThreadCallGraphView::getCalleesOf | ( | const CallICFGNode * | callSite, |
| CallGraph::FunctionSet & | callees ) const |
Retained callees of a callsite.
Definition at line 679 of file SlicedGraphs.cpp.
| void SVF::SlicedThreadCallGraphView::getDirectCallsOf | ( | const CallGraphEdge * | edge, |
| std::vector< const CallICFGNode * > & | out ) const |
Retained callsites carried by an aggregated call-graph edge.
Definition at line 650 of file SlicedGraphs.cpp.
| void SVF::SlicedThreadCallGraphView::getForkEdgesOf | ( | const CallICFGNode * | callSite, |
| std::vector< const CallGraphEdge * > & | out ) const |
Retained thread relations indexed by their fork/join callsite. Join relations are deliberately separate from normal CallGraph adjacency.
Definition at line 699 of file SlicedGraphs.cpp.
| void SVF::SlicedThreadCallGraphView::getIndirectCallsOf | ( | const CallGraphEdge * | edge, |
| std::vector< const CallICFGNode * > & | out ) const |
Definition at line 659 of file SlicedGraphs.cpp.
|
inline |
Indirect call sites that lost all targets after filtering.
Definition at line 232 of file SlicedGraphs.h.
| void SVF::SlicedThreadCallGraphView::getInEdgesOf | ( | const CallGraphNode * | node, |
| std::vector< const CallGraphEdge * > & | out ) const |
Get in edges of a node (only returns kept edges and source nodes).
Definition at line 636 of file SlicedGraphs.cpp.
| void SVF::SlicedThreadCallGraphView::getJoinEdgesOf | ( | const CallICFGNode * | callSite, |
| std::vector< const CallGraphEdge * > & | out ) const |
Definition at line 718 of file SlicedGraphs.cpp.
Definition at line 219 of file SlicedGraphs.h.
|
inline |
Get all kept nodes.
Definition at line 214 of file SlicedGraphs.h.
| void SVF::SlicedThreadCallGraphView::getOutEdgesOf | ( | const CallGraphNode * | node, |
| std::vector< const CallGraphEdge * > & | out ) const |
Get out edges of a node (only returns kept edges and target nodes).
Definition at line 621 of file SlicedGraphs.cpp.
|
inline |
Canonical edge membership: keptEdges excludes edges whose call site was pruned, so endpoint checks alone are not enough (queries/traits use this).
Definition at line 226 of file SlicedGraphs.h.
| bool SVF::SlicedThreadCallGraphView::isKeptNode | ( | const CallGraphNode * | node | ) | const |
Check if a node is in the sliced view.
Definition at line 736 of file SlicedGraphs.cpp.
|
private |
Definition at line 255 of file SlicedGraphs.h.
|
private |
Definition at line 254 of file SlicedGraphs.h.
|
private |
Definition at line 251 of file SlicedGraphs.h.
|
private |
Definition at line 250 of file SlicedGraphs.h.
Definition at line 253 of file SlicedGraphs.h.
|
private |
Definition at line 252 of file SlicedGraphs.h.
|
private |
Definition at line 249 of file SlicedGraphs.h.
|
private |
Definition at line 248 of file SlicedGraphs.h.