more initial checking of stats
authorNathan Binkert <binkertn@umich.edu>
Fri, 23 Jul 2004 01:31:35 +0000 (21:31 -0400)
committerNathan Binkert <binkertn@umich.edu>
Fri, 23 Jul 2004 01:31:35 +0000 (21:31 -0400)
base/statistics.cc:
    add more checking to the stats stuff to make sure that
    things are set up correctly
base/stats/statdb.cc:
    Check that bins are only registered once.

--HG--
extra : convert_revision : b0eafe4f584a8587dc3bf48812c632531ca28cb6

base/statistics.cc
base/stats/statdb.cc

index 78012bff735f5db656fbc87d505888475a119003..6e3dae1efe6d6ed3b41e56d55543bc9005fe8180 100644 (file)
@@ -273,7 +273,8 @@ check()
     for (i = Database::stats().begin(); i != end; ++i) {
         StatData *data = *i;
         assert(data);
-        data->check();
+        if (!data->check() || !data->baseCheck())
+            panic("stat check failed for %s\n", data->name);
     }
 
     int j = 0;
index eed3d6296e567e41fd912d76a40c9c1b4f8e84e6..66871b9f761913ccb86fea52cdc9de800384e01b 100644 (file)
@@ -51,6 +51,10 @@ find(void *stat)
 void
 regBin(MainBin *bin, const std::string &_name)
 {
+    bin_list_t::iterator i, end = bins().end();
+    for (i = bins().begin(); i != end; ++i)
+        if ((*i)->name() == _name)
+            panic("re-registering bin %s", _name);
     bins().push_back(bin);
     DPRINTF(Stats, "registering %s\n", _name);
 }