46d45
< #include "config/stats_binning.hh"
177,182d175
< bool
< FormulaBase::binned() const
< {
< return root && root->binned();
< }
<
241,267d233
< MainBin::MainBin(const string &name)
< : _name(name), mem(NULL), memsize(-1)
< {
< Database::regBin(this, name);
< }
<
< MainBin::~MainBin()
< {
< if (mem)
< delete [] mem;
< }
<
< char *
< MainBin::memory(off_t off)
< {
< if (memsize == -1)
< memsize = ceilPow2((size_t) offset());
<
< if (!mem) {
< mem = new char[memsize];
< memset(mem, 0, memsize);
< }
<
< assert(offset() <= size());
< return mem + off;
< }
<
290,296d255
< #if STATS_BINNING
< if (MainBin::curBin() == NULL) {
< static MainBin mainBin("main bin");
< mainBin.activate();
< }
< #endif
<
316d274
< // reset non-binned stats
321,322c279
< if (!data->binned())
< data->reset();
---
> data->reset();
326,348d282
< // save the bin so we can go back to where we were
< MainBin *orig = MainBin::curBin();
<
< // reset binned stats
< Database::bin_list_t::iterator bi = Database::bins().begin();
< Database::bin_list_t::iterator be = Database::bins().end();
< while (bi != be) {
< MainBin *bin = *bi;
< bin->activate();
<
< i = Database::stats().begin();
< while (i != end) {
< StatData *data = *i;
< if (data->binned())
< data->reset();
< ++i;
< }
< ++bi;
< }
<
< // restore bin
< MainBin::curBin() = orig;
<