43 _vmsizeUsageBefore(0),
63 if(SVFUtil::isa<ObjVar>(node))
88 unsigned totalNode = 0;
89 unsigned totalCycle = 0;
90 unsigned nodeInCycle = 0;
91 unsigned maxNodeInCycle = 0;
92 unsigned totalEdge = 0;
93 unsigned edgeInCycle = 0;
98 for (; it != eit; ++it)
103 sccRepNodeSet.insert(callgraphSCC->
repNode(it->first));
106 if(subNodes.
count() > maxNodeInCycle)
107 maxNodeInCycle = subNodes.
count();
112 for (; edgeIt != edgeEit; ++edgeIt)
123 totalCycle = sccRepNodeSet.size();
NodeID getSrcID() const
get methods of the components
iterator begin()
Iterators.
IDToNodeMapTy::iterator iterator
Node Iterators.
CallInstSet & getIndirectCalls()
CallInstSet & getDirectCalls()
PTACallGraphEdge::CallGraphEdgeSet::const_iterator const_iterator
void setMemUsageBefore(u32_t vmrss, u32_t vmsize)
void setMemUsageAfter(u32_t vmrss, u32_t vmsize)
NodeBS localVarInRecursion
PTAStat(PointerAnalysis *p)
void performStat() override
void callgraphStat() override
bool isLocalVarInRecursiveFun(NodeID id) const
Whether a local variable is in function recursions.
PTACallGraph * getCallGraph() const
Return call graph.
PTATY getAnalysisTy() const
Type of pointer analysis.
SCCDetection< PTACallGraph * > CallGraphSCC
NodeID repNode(NodeID n) const
get the rep node if not found return itself
bool isInCycle(NodeID n) const
whether the node is in a cycle
const NodeBS & subNodes(NodeID n) const
get all subnodes in one scc, if size is empty insert itself into the set
NodeID getId() const
Get ID.
static SVFIR * getPAG(bool buildFromFile=false)
Singleton design here to make sure we only have one instance during any analysis.
virtual void printStat(std::string str="")
virtual void performStat()=0
bool getMemoryUsageKB(u32_t *vmrss_kb, u32_t *vmsize_kb)
Get memory usage from system file. Return TRUE if succeed.