diff options
author | Nathan Binkert <binkertn@umich.edu> | 2003-12-24 01:45:56 -0500 |
---|---|---|
committer | Nathan Binkert <binkertn@umich.edu> | 2003-12-24 01:45:56 -0500 |
commit | fad8b13adde99c3759b30dc4b16d5031d3e468fa (patch) | |
tree | fecfb044f366c8c1ac338df690721751cf2f4ccc /base/statistics.cc | |
parent | 9908987f1578681d11e1d0e7ea1224faa52fb039 (diff) | |
download | gem5-fad8b13adde99c3759b30dc4b16d5031d3e468fa.tar.xz |
Random cleanup to make things work a bit better
base/statistics.cc:
- give an internal name to statistics that aren't printable
- speed up reset a tad
- Make sure that the original value of the current bin is restored properly
- check for the case where there are no subnames so we don't have an error
- check to make sure that the formula's root is set before accessing it
base/statistics.hh:
- clean up includes a bit
- deal with the case where there are no subnames
- get rid of remnants of FS_MEASURE stuff
--HG--
extra : convert_revision : 1e4338fc2b225647df47641b04c13b7046b2e114
Diffstat (limited to 'base/statistics.cc')
-rw-r--r-- | base/statistics.cc | 57 |
1 files changed, 36 insertions, 21 deletions
diff --git a/base/statistics.cc b/base/statistics.cc index 9f528e712..191a72b07 100644 --- a/base/statistics.cc +++ b/base/statistics.cc @@ -168,9 +168,18 @@ Data::check() list_t::iterator end = allStats.end(); while (i != end) { - StatData *stat = *i; - assert(stat); - stat->check(); + StatData *data = *i; + assert(data); + data->check(); + ++i; + } + + i = allStats.begin(); + int j = 0; + while (i != end) { + StatData *data = *i; + if (!(data->flags & print)) + data->name = "__Stat" + to_string(j++); ++i; } } @@ -178,16 +187,20 @@ Data::check() void Data::reset() { + // reset non-binned stats list_t::iterator i = allStats.begin(); list_t::iterator end = allStats.end(); while (i != end) { - StatData *stat = *i; - stat->reset(); + StatData *data = *i; + if (!data->binned()) + data->reset(); ++i; } + // save the bin so we can go back to where we were MainBin *orig = MainBin::curBin(); + // reset binned stats list<MainBin *>::iterator bi = bins.begin(); list<MainBin *>::iterator be = bins.end(); while (bi != be) { @@ -196,15 +209,16 @@ Data::reset() i = allStats.begin(); while (i != end) { - StatData *stat = *i; - stat->reset(); + StatData *data = *i; + if (data->binned()) + data->reset(); ++i; } ++bi; } - if (orig) - orig->activate(); + // restore bin + MainBin::curBin() = orig; } void @@ -751,22 +765,23 @@ VectorDataBase::display(ostream &stream, DisplayMode mode) const print.vec = val(); print.total = total(); - for (int i = 0; i < size; ++i) { - if (!subnames[i].empty()) { - print.subnames = subnames; - print.subnames.resize(size); - for (int i = 0; i < size; ++i) { - if (!subnames[i].empty() && !subdescs[i].empty()) { - print.subdescs = subdescs; - print.subdescs.resize(size); - break; + if (!subnames.empty()) { + for (int i = 0; i < size; ++i) { + if (!subnames[i].empty()) { + print.subnames = subnames; + print.subnames.resize(size); + for (int i = 0; i < size; ++i) { + if (!subnames[i].empty() && !subdescs[i].empty()) { + print.subdescs = subdescs; + print.subdescs.resize(size); + break; + } } + break; } - break; } } - print(stream); } @@ -911,7 +926,7 @@ FormulaBase::size() const bool FormulaBase::binned() const { - return root->binned(); + return root && root->binned(); } void |