/*
- * Copyright (c) 2018-2019 Inria
+ * Copyright (c) 2018-2020 Inria
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * Authors: Daniel Carvalho
*/
/** @file
#include "mem/cache/compressors/dictionary_compressor.hh"
#include "params/BaseDictionaryCompressor.hh"
-BaseDictionaryCompressor::BaseDictionaryCompressor(const Params *p)
- : BaseCacheCompressor(p), dictionarySize(p->dictionary_size), numEntries(0)
+namespace Compressor {
+
+BaseDictionaryCompressor::BaseDictionaryCompressor(const Params &p)
+ : Base(p), dictionarySize(p.dictionary_size),
+ numEntries(0), dictionaryStats(stats, *this)
+{
+}
+
+BaseDictionaryCompressor::DictionaryStats::DictionaryStats(
+ BaseStats& base_group, BaseDictionaryCompressor& _compressor)
+ : Stats::Group(&base_group), compressor(_compressor),
+ ADD_STAT(patterns, UNIT_COUNT,
+ "Number of data entries that were compressed to this pattern")
{
}
void
-BaseDictionaryCompressor::regStats()
+BaseDictionaryCompressor::DictionaryStats::regStats()
{
- BaseCacheCompressor::regStats();
+ Stats::Group::regStats();
// We store the frequency of each pattern
- patternStats
- .init(getNumPatterns())
- .name(name() + ".pattern")
- .desc("Number of data entries that were compressed to this pattern.")
- ;
-
- for (unsigned i = 0; i < getNumPatterns(); ++i) {
- patternStats.subname(i, getName(i));
- patternStats.subdesc(i, "Number of data entries that match pattern " +
- getName(i));
+ patterns.init(compressor.getNumPatterns());
+ for (unsigned i = 0; i < compressor.getNumPatterns(); ++i) {
+ const std::string name = compressor.getName(i);
+ patterns.subname(i, name);
+ patterns.subdesc(i, "Number of data entries that match pattern " +
+ name);
}
}
+
+} // namespace Compressor