zcov: / lib/Basic/Statistics.cpp


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


Programs: 2 Runs 1389


       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