 |
|
 |
|
| Files: |
1 |
|
Branches Taken: |
76.3% |
29 / 38 |
| Generated: |
2009-05-17 22:47 |
|
Branches Executed: |
73.7% |
28 / 38 |
| |
|
Line Coverage: |
95.5% |
42 / 44 |
| |
 |
|
 |
1 : /* -*- mode: c++; c-basic-offset: 2; -*- */
2 :
3 : #include "klee/Statistics.h"
4 :
5 : #include <vector>
6 :
7 : using namespace klee;
8 :
9 104: StatisticManager::StatisticManager()
10 : : enabled(true),
11 : globalStats(0),
12 : indexedStats(0),
13 : contextStats(0),
14 208: index(0) {
15 104: }
16 :
17 104: StatisticManager::~StatisticManager() {
104: branch 0 taken
0: branch 1 not taken
104: branch 2 taken
0: branch 3 not taken
104: branch 5 taken
104: branch 6 taken
104: branch 7 taken
104: branch 8 taken
18 104: if (globalStats) delete[] globalStats;
103: branch 0 taken
1: branch 1 taken
103: branch 2 taken
0: branch 3 not taken
103: branch 5 taken
103: branch 6 taken
103: branch 7 taken
103: branch 8 taken
19 104: if (indexedStats) delete[] indexedStats;
20 208: }
21 :
22 103: void StatisticManager::useIndexedStats(unsigned totalIndices) {
0: branch 0 not taken
103: branch 1 taken
103: branch 2 taken
103: branch 3 taken
23 103: if (indexedStats) delete[] indexedStats;
24 206: indexedStats = new uint64_t[totalIndices * stats.size()];
25 206: memset(indexedStats, 0, sizeof(*indexedStats) * totalIndices * stats.size());
26 103: }
27 :
28 2688: void StatisticManager::registerStatistic(Statistic &s) {
2584: branch 0 taken
104: branch 1 taken
2584: branch 2 taken
0: branch 3 not taken
29 2688: if (globalStats) delete[] globalStats;
30 5376: s.id = stats.size();
31 2688: stats.push_back(&s);
32 5376: globalStats = new uint64_t[stats.size()];
33 5376: memset(globalStats, 0, sizeof(*globalStats)*stats.size());
34 2688: }
35 :
36 1365: int StatisticManager::getStatisticID(const std::string &name) const {
19845: branch 0 taken
0: branch 1 not taken
37 39690: for (unsigned i=0; i<stats.size(); i++)
1365: branch 0 taken
18480: branch 1 taken
38 59535: if (stats[i]->getName() == name)
39 1365: return i;
40 0: return -1;
41 : }
42 :
43 1442: Statistic *StatisticManager::getStatisticByName(const std::string &name) const {
19364: branch 0 taken
0: branch 1 not taken
44 38728: for (unsigned i=0; i<stats.size(); i++)
1442: branch 0 taken
17922: branch 1 taken
45 58092: if (stats[i]->getName() == name)
46 2884: return stats[i];
47 0: return 0;
48 : }
49 :
50 : StatisticManager *klee::theStatisticManager = 0;
51 :
52 2688: static StatisticManager &getStatisticManager() {
104: branch 0 taken
2584: branch 1 taken
104: branch 3 taken
0: branch 4 not taken
53 2688: static StatisticManager sm;
54 2688: theStatisticManager = &sm;
55 2688: return sm;
56 : }
57 :
58 : /* *** */
59 :
60 : Statistic::Statistic(const std::string &_name,
61 2688: const std::string &_shortName)
62 : : name(_name),
63 2688: shortName(_shortName) {
64 2688: getStatisticManager().registerStatistic(*this);
65 2688: }
66 :
67 2688: Statistic::~Statistic() {
68 2688: }
69 :
70 11505084: Statistic &Statistic::operator +=(const uint64_t addend) {
11505084: branch 0 taken
0: branch 1 not taken
71 11505084: theStatisticManager->incrementStatistic(*this, addend);
72 11505084: return *this;
73 : }
74 :
75 20102214: uint64_t Statistic::getValue() const {
76 40204428: return theStatisticManager->getValue(*this);
77 : }
Generated: 2009-05-17 22:47 by zcov