Static Value-Flow Analysis
Public Member Functions | Private Attributes | List of all members
SVF::CFLStat Class Reference

#include <CFLStat.h>

Inheritance diagram for SVF::CFLStat:
SVF::PTAStat SVF::SVFStat

Public Member Functions

 CFLStat (CFLBase *p)
 
virtual ~CFLStat ()
 
virtual void performStat ()
 
void CFLGraphStat ()
 
void CFLGrammarStat ()
 
void CFLSolverStat ()
 
- Public Member Functions inherited from SVF::PTAStat
 PTAStat (PointerAnalysis *p)
 
virtual ~PTAStat ()
 
void setMemUsageBefore (u32_t vmrss, u32_t vmsize)
 
void setMemUsageAfter (u32_t vmrss, u32_t vmsize)
 
void performStat () override
 
void callgraphStat () override
 
- Public Member Functions inherited from SVF::SVFStat
 SVFStat ()
 
virtual ~SVFStat ()
 
virtual void startClk ()
 
virtual void endClk ()
 
virtual void printStat (std::string str="")
 
virtual void performStatPerQuery (NodeID)
 
virtual void printStatPerQuery (NodeID, const PointsTo &)
 

Private Attributes

CFLBasepta
 

Additional Inherited Members

- Public Types inherited from SVF::SVFStat
enum  ClockType { Wall , CPU }
 
typedef OrderedMap< std::string, u32_tNUMStatMap
 
typedef OrderedMap< std::string, double > TIMEStatMap
 
- Static Public Member Functions inherited from SVF::SVFStat
static double getClk (bool mark=false)
 
- Public Attributes inherited from SVF::PTAStat
NodeBS localVarInRecursion
 
- Public Attributes inherited from SVF::SVFStat
NUMStatMap generalNumMap
 
NUMStatMap PTNumStatMap
 
TIMEStatMap timeStatMap
 
double startTime
 
double endTime
 
- Static Public Attributes inherited from SVF::SVFStat
static bool printGeneralStats = true
 SVF's general statistics are only printed once even if you run multiple anayses. More...
 
static double timeOfBuildingLLVMModule = 0
 
static double timeOfBuildingSymbolTable = 0
 
static double timeOfBuildingSVFIR = 0
 
- Protected Attributes inherited from SVF::PTAStat
PointerAnalysispta
 
u32_t _vmrssUsageBefore
 
u32_t _vmrssUsageAfter
 
u32_t _vmsizeUsageBefore
 
u32_t _vmsizeUsageAfter
 

Detailed Description

Statistics of CFL's analysis

Definition at line 44 of file CFLStat.h.

Constructor & Destructor Documentation

◆ CFLStat()

CFLStat::CFLStat ( CFLBase p)

Constructor

Definition at line 39 of file CFLStat.cpp.

39  : PTAStat(p),pta(p)
40 {
41  startClk();
42 }
cJSON * p
Definition: cJSON.cpp:2559
CFLBase * pta
Definition: CFLStat.h:47
PTAStat(PointerAnalysis *p)
Definition: PTAStat.cpp:39
virtual void startClk()
Definition: SVFStat.h:58

◆ ~CFLStat()

virtual SVF::CFLStat::~CFLStat ( )
inlinevirtual

Definition at line 52 of file CFLStat.h.

53  {
54  }

Member Function Documentation

◆ CFLGrammarStat()

void CFLStat::CFLGrammarStat ( )

Definition at line 59 of file CFLStat.cpp.

60 {
61  timeStatMap["BuildingTime"] = pta->timeOfBuildCFLGrammar;
62  timeStatMap["NormalizationTime"] = pta->timeOfNormalizeGrammar;
63 
64  PTAStat::printStat("CFLGrammar Stats");
65 }
static double timeOfBuildCFLGrammar
Statistics.
Definition: CFLBase.h:94
static double timeOfNormalizeGrammar
Definition: CFLBase.h:95
virtual void printStat(std::string str="")
Definition: SVFStat.cpp:66
TIMEStatMap timeStatMap
Definition: SVFStat.h:78

◆ CFLGraphStat()

void CFLStat::CFLGraphStat ( )

Collect CFLGraph information

Definition at line 47 of file CFLStat.cpp.

48 {
49  pta->countSumEdges();
51 
52  timeStatMap["BuildingTime"] = pta->timeOfBuildCFLGraph;
53  PTNumStatMap["NumOfNodes"] = CFLGraph->getTotalNodeNum();
54  PTNumStatMap["NumOfEdges"] = CFLGraph->getCFLEdges().size();
55 
56  PTAStat::printStat("CFLGraph Stats");
57 }
CFLGraph * getCFLGraph()
Get CFL graph.
Definition: CFLBase.cpp:145
virtual void countSumEdges()
Count the num of Nonterminal Edges.
Definition: CFLBase.cpp:150
static double timeOfBuildCFLGraph
Definition: CFLBase.h:97
const CFLEdgeSet & getCFLEdges() const
Definition: CFLGraph.h:199
u32_t getTotalNodeNum() const
Get total number of node/edge.
Definition: GenericGraph.h:680
NUMStatMap PTNumStatMap
Definition: SVFStat.h:77

◆ CFLSolverStat()

void CFLStat::CFLSolverStat ( )

Definition at line 67 of file CFLStat.cpp.

68 {
69  timeStatMap["AnalysisTime"] = pta->timeOfSolving;
70  PTNumStatMap["numOfChecks"] = pta->numOfChecks;
71  PTNumStatMap["numOfIteration"] = pta->numOfIteration;
72  PTNumStatMap["SumEdges"] = pta->numOfStartEdges;
73 
74  PTAStat::printStat("CFL-reachability Solver Stats");
75 }
static double numOfStartEdges
Definition: CFLBase.h:101
static double numOfChecks
Definition: CFLBase.h:104
static double timeOfSolving
Definition: CFLBase.h:105
static double numOfIteration
Definition: CFLBase.h:103

◆ performStat()

void CFLStat::performStat ( )
virtual

Start here

Implements SVF::SVFStat.

Definition at line 80 of file CFLStat.cpp.

81 {
82  assert((SVFUtil::isa<CFLAlias, CFLVF>(pta)) && "not an CFLAlias pass!! what else??");
83  endClk();
84 
85  // Grammar stat
87 
88  // CFLGraph stat
89  CFLGraphStat();
90 
91  // Solver stat
92  CFLSolverStat();
93 
94  // Stat about Call graph and General stat
96 }
void CFLGrammarStat()
Definition: CFLStat.cpp:59
void CFLGraphStat()
Definition: CFLStat.cpp:47
void CFLSolverStat()
Definition: CFLStat.cpp:67
void performStat() override
Definition: PTAStat.cpp:52
virtual void endClk()
Definition: SVFStat.h:63

Member Data Documentation

◆ pta

CFLBase* SVF::CFLStat::pta
private

Definition at line 47 of file CFLStat.h.


The documentation for this class was generated from the following files: