Daniel Carvalho has uploaded this change for review. ( https://gem5-review.googlesource.com/c/public/gem5/+/27083 )

Change subject: base: Remove info dependency from stats storage
......................................................................

base: Remove info dependency from stats storage

Info depends on the storage type, not the other way around.

Change-Id: Ie3deca17b859a217c0c7bd833c017d9436eee4b0
Signed-off-by: Daniel R. Carvalho <oda...@yahoo.com.br>
---
M src/base/statistics.hh
M src/base/stats/SConscript
M src/base/stats/info.hh
M src/base/stats/storage.hh
M src/base/stats/storage.test.cc
M src/base/stats/types.hh
6 files changed, 116 insertions(+), 157 deletions(-)



diff --git a/src/base/statistics.hh b/src/base/statistics.hh
index 7c1d854..2447615 100644
--- a/src/base/statistics.hh
+++ b/src/base/statistics.hh
@@ -410,7 +410,7 @@

         size_t size = self.size();
         for (off_type i = 0; i < size; ++i)
-            self.data(i)->prepare(info);
+            self.data(i)->prepare(info->storageParams);
     }

     void
@@ -421,7 +421,7 @@

         size_t size = self.size();
         for (off_type i = 0; i < size; ++i)
-            self.data(i)->reset(info);
+            self.data(i)->reset(info->storageParams);
     }
 };

@@ -520,7 +520,7 @@
     void
     doInit()
     {
-        new (storage) Storage(this->info());
+        new (storage) Storage(this->info()->storageParams);
         this->setInit();
     }

@@ -595,8 +595,8 @@

     bool zero() { return result() == 0.0; }

-    void reset() { data()->reset(this->info()); }
-    void prepare() { data()->prepare(this->info()); }
+    void reset() { data()->reset(this->info()->storageParams); }
+    void prepare() { data()->prepare(this->info()->storageParams); }
 };

 class ProxyInfo : public ScalarInfo
@@ -897,7 +897,7 @@
         storage = reinterpret_cast<Storage *>(ptr);

         for (off_type i = 0; i < _size; ++i)
-            new (&storage[i]) Storage(this->info());
+            new (&storage[i]) Storage(this->info()->storageParams);

         this->setInit();
     }
@@ -1132,7 +1132,7 @@
         storage = reinterpret_cast<Storage *>(ptr);

         for (off_type i = 0; i < _size; ++i)
-            new (&storage[i]) Storage(info);
+            new (&storage[i]) Storage(info->storageParams);

         this->setInit();

@@ -1180,7 +1180,7 @@
         size_type size = this->size();

         for (off_type i = 0; i < size; ++i)
-            data(i)->prepare(info);
+            data(i)->prepare(info->storageParams);

         info->cvec.resize(size);
         for (off_type i = 0; i < size; ++i)
@@ -1196,7 +1196,7 @@
         Info *info = this->info();
         size_type size = this->size();
         for (off_type i = 0; i < size; ++i)
-            data(i)->reset(info);
+            data(i)->reset(info->storageParams);
     }

     bool
@@ -1252,7 +1252,7 @@
     void
     doInit()
     {
-        new (storage) Storage(this->info());
+        new (storage) Storage(this->info()->storageParams);
         this->setInit();
     }

@@ -1286,7 +1286,7 @@
     prepare()
     {
         Info *info = this->info();
-        data()->prepare(info, info->data);
+        data()->prepare(info->storageParams, info->data);
     }

     /**
@@ -1295,7 +1295,7 @@
     void
     reset()
     {
-        data()->reset(this->info());
+        data()->reset(this->info()->storageParams);
     }

     /**
@@ -1347,7 +1347,7 @@

         Info *info = this->info();
         for (off_type i = 0; i < _size; ++i)
-            new (&storage[i]) Storage(info);
+            new (&storage[i]) Storage(info->storageParams);

         this->setInit();
     }
@@ -1396,7 +1396,7 @@
         size_type size = this->size();
         info->data.resize(size);
         for (off_type i = 0; i < size; ++i)
-            data(i)->prepare(info, info->data[i]);
+            data(i)->prepare(info->storageParams, info->data[i]);
     }

     bool
@@ -2217,7 +2217,7 @@
     void
     doInit()
     {
-        new (storage) Storage(this->info());
+        new (storage) Storage(this->info()->storageParams);
         this->setInit();
     }

@@ -2251,7 +2251,7 @@
     prepare()
     {
         Info *info = this->info();
-        data()->prepare(info, info->data);
+        data()->prepare(info->storageParams, info->data);
     }

     /**
@@ -2260,7 +2260,7 @@
     void
     reset()
     {
-        data()->reset(this->info());
+        data()->reset(this->info()->storageParams);
     }
 };

diff --git a/src/base/stats/SConscript b/src/base/stats/SConscript
index fe9e385..79f3691 100644
--- a/src/base/stats/SConscript
+++ b/src/base/stats/SConscript
@@ -35,5 +35,4 @@
 if env['USE_HDF5']:
     Source('hdf5.cc', append={'CXXFLAGS': '-Wno-deprecated-copy'})

-GTest('storage.test', 'storage.test.cc', '../debug.cc', '../str.cc', 'info.cc',
-    'storage.cc')
+GTest('storage.test', 'storage.test.cc', 'storage.cc')
diff --git a/src/base/stats/info.hh b/src/base/stats/info.hh
index ad34b39..d07a64b 100644
--- a/src/base/stats/info.hh
+++ b/src/base/stats/info.hh
@@ -170,26 +170,6 @@
     virtual Result total() const = 0;
 };

-enum DistType { Deviation, Dist, Hist };
-
-struct DistData
-{
-    DistType type;
-    Counter min;
-    Counter max;
-    Counter bucket_size;
-
-    Counter min_val;
-    Counter max_val;
-    Counter underflow;
-    Counter overflow;
-    VCounter cvec;
-    Counter sum;
-    Counter squares;
-    Counter logs;
-    Counter samples;
-};
-
 class DistInfo : public Info
 {
   public:
@@ -240,14 +220,6 @@
     virtual std::string str() const = 0;
 };

-/** Data structure of sparse histogram */
-struct SparseHistData
-{
-    MCounter cmap;
-    Counter samples;
-};
-
-
 class SparseHistInfo : public Info
 {
   public:
diff --git a/src/base/stats/storage.hh b/src/base/stats/storage.hh
index 6902088..2d27e47 100644
--- a/src/base/stats/storage.hh
+++ b/src/base/stats/storage.hh
@@ -35,7 +35,6 @@

 #include "base/cast.hh"
 #include "base/logging.hh"
-#include "base/stats/info.hh"
 #include "base/stats/types.hh"

 /** The current simulated tick. */
@@ -64,7 +63,7 @@
      * Builds this storage element and calls the base constructor of the
      * datatype.
      */
-    StatStor(Info *info)
+    StatStor(const StorageParams* const storage_params)
         : data(Counter())
     { }

@@ -101,12 +100,12 @@
     /**
      * Prepare stat data for dumping or serialization
      */
-    void prepare(Info *info) { }
+    void prepare(const StorageParams* const storage_params) { }

     /**
      * Reset stat value to default
      */
-    void reset(Info *info) { data = Counter(); }
+ void reset(const StorageParams* const storage_params) { data = Counter(); }

     /**
      * @return true if zero value
@@ -139,7 +138,7 @@
     /**
      * Build and initializes this stat storage.
      */
-    AvgStor(Info *info)
+    AvgStor(const StorageParams* const storage_params)
         : current(0), lastReset(0), total(0), last(0)
     { }

@@ -194,7 +193,7 @@
      * Prepare stat data for dumping or serialization
      */
     void
-    prepare(Info *info)
+    prepare(const StorageParams* const storage_params)
     {
         total += current * (curTick() - last);
         last = curTick();
@@ -204,7 +203,7 @@
      * Reset stat value to default
      */
     void
-    reset(Info *info)
+    reset(const StorageParams* const storage_params)
     {
         total = 0.0;
         last = curTick();
@@ -281,10 +280,10 @@
         }
     };

-    DistStor(Info *info)
-        : cvec(safe_cast<const Params *>(info->storageParams)->buckets)
+    DistStor(const StorageParams* const storage_params)
+        : cvec(safe_cast<const Params *>(storage_params)->buckets)
     {
-        reset(info);
+        reset(storage_params);
     }

     /**
@@ -311,9 +310,9 @@
     }

     void
-    prepare(Info *info, DistData &data)
+    prepare(const StorageParams* const storage_params, DistData &data)
     {
- const Params *params = safe_cast<const Params *>(info->storageParams);
+        const Params *params = safe_cast<const Params *>(storage_params);

         assert(params->type == Dist);
         data.type = params->type;
@@ -339,9 +338,9 @@
      * Reset stat value to default
      */
     void
-    reset(Info *info)
+    reset(const StorageParams* const storage_params)
     {
- const Params *params = safe_cast<const Params *>(info->storageParams);
+        const Params *params = safe_cast<const Params *>(storage_params);
         min_track = params->min;
         max_track = params->max;
         bucket_size = params->bucket_size;
@@ -467,10 +466,10 @@
         }
     };

-    HistStor(Info *info)
-        : cvec(safe_cast<const Params *>(info->storageParams)->buckets)
+    HistStor(const StorageParams* const storage_params)
+        : cvec(safe_cast<const Params *>(storage_params)->buckets)
     {
-        reset(info);
+        reset(storage_params);
     }

     /**
@@ -503,9 +502,9 @@
     }

     void
-    prepare(Info *info, DistData &data)
+    prepare(const StorageParams* const storage_params, DistData &data)
     {
- const Params *params = safe_cast<const Params *>(info->storageParams);
+        const Params *params = safe_cast<const Params *>(storage_params);

         assert(params->type == Hist);
         data.type = params->type;
@@ -531,9 +530,9 @@
      * Reset stat value to default
      */
     void
-    reset(Info *info)
+    reset(const StorageParams* const storage_params)
     {
- const Params *params = safe_cast<const Params *>(info->storageParams);
+        const Params *params = safe_cast<const Params *>(storage_params);
         min_bucket = 0;
         max_bucket = params->buckets - 1;
         bucket_size = 1;
@@ -572,7 +571,7 @@
     /**
      * Create and initialize this storage.
      */
-    SampleStor(Info *info)
+    SampleStor(const StorageParams* const storage_params)
         : sum(Counter()), squares(Counter()), samples(Counter())
     { }

@@ -604,9 +603,9 @@
     bool zero() const { return samples == Counter(); }

     void
-    prepare(Info *info, DistData &data)
+    prepare(const StorageParams* const storage_params, DistData &data)
     {
- const Params *params = safe_cast<const Params *>(info->storageParams);
+        const Params *params = safe_cast<const Params *>(storage_params);

         assert(params->type == Deviation);
         data.type = params->type;
@@ -619,7 +618,7 @@
      * Reset stat value to default
      */
     void
-    reset(Info *info)
+    reset(const StorageParams* const storage_params)
     {
         sum = Counter();
         squares = Counter();
@@ -648,7 +647,7 @@
     /**
      * Create and initialize this storage.
      */
-    AvgSampleStor(Info *info)
+    AvgSampleStor(const StorageParams* const storage_params)
         : sum(Counter()), squares(Counter())
     {}

@@ -678,9 +677,9 @@
     bool zero() const { return sum == Counter(); }

     void
-    prepare(Info *info, DistData &data)
+    prepare(const StorageParams* const storage_params, DistData &data)
     {
- const Params *params = safe_cast<const Params *>(info->storageParams);
+        const Params *params = safe_cast<const Params *>(storage_params);

         assert(params->type == Deviation);
         data.type = params->type;
@@ -693,7 +692,7 @@
      * Reset stat value to default
      */
     void
-    reset(Info *info)
+    reset(const StorageParams* const storage_params)
     {
         sum = Counter();
         squares = Counter();
@@ -722,9 +721,9 @@
         Params() : DistParams(Hist) {}
     };

-    SparseHistStor(Info *info)
+    SparseHistStor(const StorageParams* const storage_params)
     {
-        reset(info);
+        reset(storage_params);
     }

     /**
@@ -756,7 +755,7 @@
     }

     void
-    prepare(Info *info, SparseHistData &data)
+ prepare(const StorageParams* const storage_params, SparseHistData &data)
     {
         MCounter::iterator it;
         data.cmap.clear();
@@ -771,7 +770,7 @@
      * Reset stat value to default
      */
     void
-    reset(Info *info)
+    reset(const StorageParams* const storage_params)
     {
         cmap.clear();
         samples = 0;
diff --git a/src/base/stats/storage.test.cc b/src/base/stats/storage.test.cc
index df9129c..c9d9f36 100644
--- a/src/base/stats/storage.test.cc
+++ b/src/base/stats/storage.test.cc
@@ -60,28 +60,6 @@
     }
 };

-/**
- * A mocked info class.
- * @todo There is no real dependency on the info class, so this must be
- * removed on a cleanup.
- */
-class MockInfo : public Stats::Info
-{
-  public:
-    MockInfo(Stats::StorageParams* storage_params)
-      : Stats::Info()
-    {
-        this->storageParams = storage_params;
-    }
-    ~MockInfo() = default;
-
-    bool check() const override { return true; }
-    void prepare() override { }
-    void reset() override { }
-    bool zero() const override { return true; }
-    void visit(Stats::Output &visitor) override { }
-};
-
 /** Test setting and getting a value to the storage. */
 TEST(StatsStatStorTest, SetValueResult)
 {
@@ -298,18 +276,17 @@
 TEST(StatsDistStorTest, ZeroReset)
 {
     Stats::DistStor::Params params(0, 99, 10);
-    MockInfo info(&params);
-    Stats::DistStor stor(&info);
+    Stats::DistStor stor(&params);
     Stats::Counter val = 10;
     Stats::Counter num_samples = 5;

     ASSERT_TRUE(stor.zero());

-    stor.reset(&info);
+    stor.reset(&params);
     stor.sample(val, num_samples);
     ASSERT_FALSE(stor.zero());

-    stor.reset(&info);
+    stor.reset(&params);
     ASSERT_TRUE(stor.zero());
 }

@@ -325,15 +302,14 @@
     Stats::DistData data;

     Stats::DistStor::Params params(0, 19, 1);
-    MockInfo info(&params);
-    Stats::DistStor stor(&info);
+    Stats::DistStor stor(&params);

     ASSERT_EQ(stor.size(), size);
     stor.sample(val, num_samples);
     ASSERT_EQ(stor.size(), size);
-    stor.prepare(&info, data);
+    stor.prepare(&params, data);
     ASSERT_EQ(stor.size(), size);
-    stor.reset(&info);
+    stor.reset(&params);
     ASSERT_EQ(stor.size(), size);
     stor.zero();
     ASSERT_EQ(stor.size(), size);
@@ -382,8 +358,7 @@
 prepareCheckDistStor(Stats::DistStor::Params& params, ValueSamples* values,
     int num_values, Stats::DistData& expected_data)
 {
-    MockInfo info(&params);
-    Stats::DistStor stor(&info);
+    Stats::DistStor stor(&params);

     Stats::Counter val;
     Stats::DistData data;
@@ -404,7 +379,7 @@
         expected_data.squares += values[i].value * val;
         expected_data.samples += values[i].numSamples;
     }
-    stor.prepare(&info, data);
+    stor.prepare(&params, data);

     // DistStor does not use log
     checkExpectedDistData(data, expected_data, true);
@@ -474,8 +449,7 @@
 TEST(StatsDistStorTest, Reset)
 {
     Stats::DistStor::Params params(0, 99, 5);
-    MockInfo info(&params);
-    Stats::DistStor stor(&info);
+    Stats::DistStor stor(&params);

     // Populate storage with random samples
     ValueSamples values[] = {{10, 5}, {1234, 2}, {12345678, 99}, {-10, 4},
@@ -486,9 +460,9 @@
     }

     // Reset storage, and make sure all data has been cleared
-    stor.reset(&info);
+    stor.reset(&params);
     Stats::DistData data;
-    stor.prepare(&info, data);
+    stor.prepare(&params, data);

     Stats::DistData expected_data;
     expected_data.type = Stats::Dist;
@@ -532,18 +506,17 @@
 TEST(StatsHistStorTest, ZeroReset)
 {
     Stats::HistStor::Params params(10);
-    MockInfo info(&params);
-    Stats::HistStor stor(&info);
+    Stats::HistStor stor(&params);
     Stats::Counter val = 10;
     Stats::Counter num_samples = 5;

     ASSERT_TRUE(stor.zero());

-    stor.reset(&info);
+    stor.reset(&params);
     stor.sample(val, num_samples);
     ASSERT_FALSE(stor.zero());

-    stor.reset(&info);
+    stor.reset(&params);
     ASSERT_TRUE(stor.zero());
 }

@@ -560,15 +533,14 @@

     for (int i = 0; i < (sizeof(sizes) / sizeof(Stats::size_type)); i++) {
         Stats::HistStor::Params params(sizes[i]);
-        MockInfo info(&params);
-        Stats::HistStor stor(&info);
+        Stats::HistStor stor(&params);

         ASSERT_EQ(stor.size(), sizes[i]);
         stor.sample(val, num_samples);
         ASSERT_EQ(stor.size(), sizes[i]);
-        stor.prepare(&info, data);
+        stor.prepare(&params, data);
         ASSERT_EQ(stor.size(), sizes[i]);
-        stor.reset(&info);
+        stor.reset(&params);
         ASSERT_EQ(stor.size(), sizes[i]);
         stor.zero();
         ASSERT_EQ(stor.size(), sizes[i]);
@@ -589,8 +561,7 @@
 prepareCheckHistStor(Stats::HistStor::Params& params, ValueSamples* values,
     int num_values, Stats::DistData& expected_data)
 {
-    MockInfo info(&params);
-    Stats::HistStor stor(&info);
+    Stats::HistStor stor(&params);

     Stats::Counter val;
     Stats::DistData data;
@@ -619,7 +590,7 @@
         }
         expected_data.samples += values[i].numSamples;
     }
-    stor.prepare(&info, data);
+    stor.prepare(&params, data);
     checkExpectedDistData(data, expected_data, no_log);
 }

@@ -902,8 +873,7 @@
 TEST(StatsHistStorTest, Reset)
 {
     Stats::HistStor::Params params(4);
-    MockInfo info(&params);
-    Stats::HistStor stor(&info);
+    Stats::HistStor stor(&params);

// Setup expected data for the hand-carved values given. This adds quite // a few positive and negative samples, and the bucket size will grow to
@@ -918,7 +888,7 @@

     // Reset storage, and make sure all data has been cleared:
     //   Bkt0=[0,1[ , Bkt1=[1,2[, Bkt2=[2,3[, Bkt3=[3,4[
-    stor.reset(&info);
+    stor.reset(&params);
     Stats::DistData expected_data;
     expected_data.type = Stats::Hist;
     expected_data.bucket_size = 1;
@@ -933,12 +903,10 @@
 TEST(StatsHistStorDeathTest, AddDifferentSize)
 {
     Stats::HistStor::Params params(4);
-    MockInfo info(&params);
-    Stats::HistStor stor(&info);
+    Stats::HistStor stor(&params);

     Stats::HistStor::Params params2(5);
-    MockInfo info2(&params2);
-    Stats::HistStor stor2(&info2);
+    Stats::HistStor stor2(&params2);

     ASSERT_DEATH(stor.add(&stor2), ".+");
 }
@@ -947,14 +915,12 @@
 TEST(StatsHistStorDeathTest, AddDifferentMin)
 {
     Stats::HistStor::Params params(4);
-    MockInfo info(&params);
-    Stats::HistStor stor(&info);
+    Stats::HistStor stor(&params);
     stor.sample(-1, 3);

     // On creation, the storage's min is zero
     Stats::HistStor::Params params2(4);
-    MockInfo info2(&params2);
-    Stats::HistStor stor2(&info2);
+    Stats::HistStor stor2(&params2);

     ASSERT_DEATH(stor.add(&stor2), ".+");
 }
@@ -963,34 +929,33 @@
 TEST(StatsHistStorTest, Add)
 {
     Stats::HistStor::Params params(4);
-    MockInfo info(&params);

     // Setup first storage. Buckets are:
     //   Bkt0=[0,16[, Bkt1=[16,32[, Bkt2=[32,48[, Bkt3=[58,64[
-    Stats::HistStor stor(&info);
+    Stats::HistStor stor(&params);
     ValueSamples values[] = {{0, 5}, {3, 2}, {20, 37}, {32, 18}};
     int num_values = sizeof(values) / sizeof(ValueSamples);
     for (int i = 0; i < num_values; i++) {
         stor.sample(values[i].value, values[i].numSamples);
     }
     Stats::DistData data;
-    stor.prepare(&info, data);
+    stor.prepare(&params, data);

     // Setup second storage. Buckets are:
     //   Bkt0=[0,32[, Bkt1=[32,64[, Bkt2=[64,96[, Bkt3=[96,128[
-    Stats::HistStor stor2(&info);
+    Stats::HistStor stor2(&params);
ValueSamples values2[] = {{10, 10}, {0, 1}, {80, 4}, {17, 100}, {95, 79}};
     int num_values2 = sizeof(values2) / sizeof(ValueSamples);
     for (int i = 0; i < num_values2; i++) {
         stor2.sample(values2[i].value, values2[i].numSamples);
     }
     Stats::DistData data2;
-    stor2.prepare(&info, data2);
+    stor2.prepare(&params, data2);

     // Perform the merge
     stor.add(&stor2);
     Stats::DistData merge_data;
-    stor.prepare(&info, merge_data);
+    stor.prepare(&params, merge_data);

     // Setup expected data. Buckets are:
     //   Bkt0=[0,32[, Bkt1=[32,64[, Bkt2=[64,96[, Bkt3=[96,128[
@@ -1047,11 +1012,10 @@
     Stats::DistData data;
     Stats::DistData expected_data;
     Stats::DistParams params(Stats::Deviation);
-    MockInfo info(&params);

     // Simple test with one value being sampled
     stor.sample(values[0].value, values[0].numSamples);
-    stor.prepare(&info, data);
+    stor.prepare(&params, data);
     val = values[0].value * values[0].numSamples;
     expected_data.type = Stats::Deviation;
     expected_data.sum = val;
@@ -1067,7 +1031,7 @@
     expected_data.squares = 0;
     expected_data.samples = 0;
     stor.reset(nullptr);
-    stor.prepare(&info, data);
+    stor.prepare(&params, data);
     ASSERT_EQ(data.type, expected_data.type);
     ASSERT_EQ(data.sum, expected_data.sum);
     ASSERT_EQ(data.squares, expected_data.squares);
@@ -1082,7 +1046,7 @@
         expected_data.squares += values[i].value * val;
         expected_data.samples += values[i].numSamples;
     }
-    stor.prepare(&info, data);
+    stor.prepare(&params, data);
     ASSERT_EQ(data.type, expected_data.type);
     ASSERT_EQ(data.sum, expected_data.sum);
     ASSERT_EQ(data.squares, expected_data.squares);
@@ -1097,12 +1061,11 @@
     Stats::Counter num_samples = 5;
     Stats::DistData data;
     Stats::DistParams params(Stats::Deviation);
-    MockInfo info(&params);

     ASSERT_EQ(stor.size(), 1);
     stor.sample(val, num_samples);
     ASSERT_EQ(stor.size(), 1);
-    stor.prepare(&info, data);
+    stor.prepare(&params, data);
     ASSERT_EQ(stor.size(), 1);
     stor.reset(nullptr);
     ASSERT_EQ(stor.size(), 1);
@@ -1141,11 +1104,10 @@
     Stats::DistData data;
     Stats::DistData expected_data;
     Stats::DistParams params(Stats::Deviation);
-    MockInfo info(&params);

     // Simple test with one value being sampled
     stor.sample(values[0].value, values[0].numSamples);
-    stor.prepare(&info, data);
+    stor.prepare(&params, data);
     val = values[0].value * values[0].numSamples;
     expected_data.type = Stats::Deviation;
     expected_data.sum = val;
@@ -1161,7 +1123,7 @@
     expected_data.sum = 0;
     expected_data.squares = 0;
     stor.reset(nullptr);
-    stor.prepare(&info, data);
+    stor.prepare(&params, data);
     ASSERT_EQ(data.type, expected_data.type);
     ASSERT_EQ(data.sum, expected_data.sum);
     ASSERT_EQ(data.squares, expected_data.squares);
@@ -1177,7 +1139,7 @@
         expected_data.sum += val;
         expected_data.squares += values[i].value * val;
     }
-    stor.prepare(&info, data);
+    stor.prepare(&params, data);
     ASSERT_EQ(data.type, expected_data.type);
     ASSERT_EQ(data.sum, expected_data.sum);
     ASSERT_EQ(data.squares, expected_data.squares);
@@ -1192,12 +1154,11 @@
     Stats::Counter num_samples = 5;
     Stats::DistData data;
     Stats::DistParams params(Stats::Deviation);
-    MockInfo info(&params);

     ASSERT_EQ(stor.size(), 1);
     stor.sample(val, num_samples);
     ASSERT_EQ(stor.size(), 1);
-    stor.prepare(&info, data);
+    stor.prepare(&params, data);
     ASSERT_EQ(stor.size(), 1);
     stor.reset(nullptr);
     ASSERT_EQ(stor.size(), 1);
diff --git a/src/base/stats/types.hh b/src/base/stats/types.hh
index adb64d0..7fd3710 100644
--- a/src/base/stats/types.hh
+++ b/src/base/stats/types.hh
@@ -54,6 +54,34 @@
 typedef unsigned int size_type;
 typedef unsigned int off_type;

+enum DistType { Deviation, Dist, Hist };
+
+/** General container for distribution data. */
+struct DistData
+{
+    DistType type;
+    Counter min;
+    Counter max;
+    Counter bucket_size;
+
+    Counter min_val;
+    Counter max_val;
+    Counter underflow;
+    Counter overflow;
+    VCounter cvec;
+    Counter sum;
+    Counter squares;
+    Counter logs;
+    Counter samples;
+};
+
+/** Data structure of sparse histogram */
+struct SparseHistData
+{
+    MCounter cmap;
+    Counter samples;
+};
+
 } // namespace Stats

 #endif // __BASE_STATS_TYPES_HH__

--
To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/27083
To unsubscribe, or for help writing mail filters, visit https://gem5-review.googlesource.com/settings

Gerrit-Project: public/gem5
Gerrit-Branch: develop
Gerrit-Change-Id: Ie3deca17b859a217c0c7bd833c017d9436eee4b0
Gerrit-Change-Number: 27083
Gerrit-PatchSet: 1
Gerrit-Owner: Daniel Carvalho <oda...@yahoo.com.br>
Gerrit-MessageType: newchange
_______________________________________________
gem5-dev mailing list
gem5-dev@gem5.org
http://m5sim.org/mailman/listinfo/gem5-dev

Reply via email to