Static Value-Flow Analysis
DDAStat.h
Go to the documentation of this file.
1 //===- DDAStat.h -- Statistics for demand-driven pass-------------//
2 //
3 // SVF: Static Value-Flow Analysis
4 //
5 // Copyright (C) <2013-> <Yulei Sui>
6 //
7 
8 // This program is free software: you can redistribute it and/or modify
9 // it under the terms of the GNU Affero General Public License as published by
10 // the Free Software Foundation, either version 3 of the License, or
11 // (at your option) any later version.
12 
13 // This program is distributed in the hope that it will be useful,
14 // but WITHOUT ANY WARRANTY; without even the implied warranty of
15 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 // GNU Affero General Public License for more details.
17 
18 // You should have received a copy of the GNU Affero General Public License
19 // along with this program. If not, see <http://www.gnu.org/licenses/>.
20 //
21 //===----------------------------------------------------------------------===//
22 
23 /*
24  * DDAStat.h
25  *
26  * Created on: Sep 15, 2014
27  * Author: Yulei Sui
28  */
29 
30 #ifndef DDASTAT_H_
31 #define DDASTAT_H_
32 
33 #include "Util/PTAStat.h"
34 #include "MemoryModel/PointsTo.h"
35 
36 namespace SVF
37 {
38 
39 class FlowDDA;
40 class ContextDDA;
41 class SVFG;
42 class PointerAnalysis;
43 
47 class DDAStat : public PTAStat
48 {
49 
50 public:
53 
58 
65 
67 
68  void performStatPerQuery(NodeID ptr) override;
69 
70  void performStat() override;
71 
72  void printStat(std::string str = "") override;
73 
74  void printStatPerQuery(NodeID ptr, const PointsTo& pts) override;
75 
76  void getNumOfOOBQuery();
77 
78 private:
81 
88 
91 
100 
103 
105 
106  void initDefault();
107 
108 public:
109  SVFG* getSVFG() const;
110 
111  PointerAnalysis* getPTA() const;
112 
114  {
115  return _StrongUpdateStores;
116  }
117 };
118 
119 } // End namespace SVF
120 
121 #endif /* DDASTAT_H_ */
const char *const string
Definition: cJSON.h:172
u32_t _TotalNumOfStep
Definition: DDAStat.h:89
u32_t _NumOfMustAliases
Definition: DDAStat.h:56
void performStatPerQuery(NodeID ptr) override
Definition: DDAStat.cpp:104
u32_t _TotalNumOfInfeasiblePath
Definition: DDAStat.h:87
u32_t _TotalPtsSize
Definition: DDAStat.h:96
u32_t _TotalNumOfOutOfBudgetQuery
Definition: DDAStat.h:83
u32_t _MaxPtsSize
Definition: DDAStat.h:94
NodeBS & getStrongUpdateStores()
Definition: DDAStat.h:113
double _AnaTimePerQuery
Definition: DDAStat.h:61
double _AvgNumOfDPMAtSVFGNode
Definition: DDAStat.h:101
u32_t _TotalNumOfMustAliases
Definition: DDAStat.h:86
u32_t _TotalNumOfDPM
Definition: DDAStat.h:84
SVFG * getSVFG() const
Definition: DDAStat.cpp:87
u32_t _TotalCPtsSize
Definition: DDAStat.h:95
PointerAnalysis * getPTA() const
Definition: DDAStat.cpp:96
u32_t _NumOfDPM
Definition: DDAStat.h:54
u32_t _NumOfStrongUpdates
Definition: DDAStat.h:55
u32_t _NumOfInfeasiblePath
Definition: DDAStat.h:57
void performStat() override
Definition: DDAStat.cpp:217
u32_t _TotalNumOfStrongUpdates
Definition: DDAStat.h:85
u64_t _NumOfStep
Definition: DDAStat.h:59
u32_t _MaxNumOfDPMAtSVFGNode
Definition: DDAStat.h:102
NUMStatMap NumPerQueryStatMap
Definition: DDAStat.h:104
FlowDDA * flowDDA
Definition: DDAStat.h:79
u32_t _TotalNumOfQuery
Definition: DDAStat.h:82
double _TotalTimeOfBKCondition
Definition: DDAStat.h:64
u32_t _NumOfConstantPtr
Definition: DDAStat.h:98
u64_t _NumOfStepInCycle
Definition: DDAStat.h:60
u32_t _NumOfNullPtr
Definition: DDAStat.h:97
double _AnaTimeCyclePerQuery
Definition: DDAStat.h:62
void getNumOfOOBQuery()
Definition: DDAStat.cpp:209
double _TotalTimeOfQueries
Definition: DDAStat.h:63
ContextDDA * contextDDA
Definition: DDAStat.h:80
void initDefault()
Definition: DDAStat.cpp:51
u32_t _TotalNumOfStepInCycle
Definition: DDAStat.h:90
u32_t _MaxCPtsSize
Definition: DDAStat.h:93
NodeBS _StrongUpdateStores
Definition: DDAStat.h:66
u32_t _NumOfIndCallEdgeSolved
Definition: DDAStat.h:92
void printStatPerQuery(NodeID ptr, const PointsTo &pts) override
Definition: DDAStat.cpp:272
void printStat(std::string str="") override
Definition: DDAStat.cpp:295
DDAStat(FlowDDA *pta)
Definition: DDAStat.cpp:42
u32_t _NumOfBlackholePtr
Definition: DDAStat.h:99
PointerAnalysis * pta
Definition: PTAStat.h:74
Definition: SVFG.h:66
OrderedMap< std::string, u32_t > NUMStatMap
Definition: SVFStat.h:44
for isBitcode
Definition: BasicTypes.h:68
unsigned long long u64_t
Definition: GeneralType.h:48
u32_t NodeID
Definition: GeneralType.h:55
unsigned u32_t
Definition: GeneralType.h:46