summaryrefslogtreecommitdiff
path: root/src/mem
diff options
context:
space:
mode:
authorAndreas Hansson <andreas.hansson@arm.com>2012-07-09 12:35:30 -0400
committerAndreas Hansson <andreas.hansson@arm.com>2012-07-09 12:35:30 -0400
commitff5718f042ecccee694ae79c9386a589fd77e8ef (patch)
tree2caecba4b46e01b1dc964b62eac700219b6aa382 /src/mem
parent92eaac07118a620c2c9dd48921eefcb7ca4422a8 (diff)
downloadgem5-ff5718f042ecccee694ae79c9386a589fd77e8ef.tar.xz
Fix: Address a few benign memory leaks
This patch is the result of static analysis identifying a number of memory leaks. The leaks are all benign as they are a result of not deallocating memory in the desctructor. The fix still has value as it removes false positives in the static analysis.
Diffstat (limited to 'src/mem')
-rw-r--r--src/mem/cache/mshr.cc2
-rw-r--r--src/mem/cache/tags/fa_lru.cc8
-rw-r--r--src/mem/cache/tags/fa_lru.hh1
-rw-r--r--src/mem/cache/tags/iic.cc1
-rw-r--r--src/mem/page_table.cc1
5 files changed, 13 insertions, 0 deletions
diff --git a/src/mem/cache/mshr.cc b/src/mem/cache/mshr.cc
index ab891296f..6fa22c9b4 100644
--- a/src/mem/cache/mshr.cc
+++ b/src/mem/cache/mshr.cc
@@ -460,4 +460,6 @@ MSHR::print(std::ostream &os, int verbosity, const std::string &prefix) const
MSHR::~MSHR()
{
+ delete[] targets;
+ delete[] deferredTargets;
}
diff --git a/src/mem/cache/tags/fa_lru.cc b/src/mem/cache/tags/fa_lru.cc
index 873883c1b..3a1246ce7 100644
--- a/src/mem/cache/tags/fa_lru.cc
+++ b/src/mem/cache/tags/fa_lru.cc
@@ -98,6 +98,14 @@ FALRU::FALRU(unsigned _blkSize, unsigned _size, unsigned hit_latency)
//assert(check());
}
+FALRU::~FALRU()
+{
+ if (numCaches)
+ delete[] cacheBoundaries;
+
+ delete[] blks;
+}
+
void
FALRU::regStats(const string &name)
{
diff --git a/src/mem/cache/tags/fa_lru.hh b/src/mem/cache/tags/fa_lru.hh
index 78f9ce1b4..fa1f49a42 100644
--- a/src/mem/cache/tags/fa_lru.hh
+++ b/src/mem/cache/tags/fa_lru.hh
@@ -156,6 +156,7 @@ public:
* @param hit_latency The hit latency of the cache.
*/
FALRU(unsigned blkSize, unsigned size, unsigned hit_latency);
+ ~FALRU();
/**
* Register the stats for this object.
diff --git a/src/mem/cache/tags/iic.cc b/src/mem/cache/tags/iic.cc
index 260b89194..d6ddf04a6 100644
--- a/src/mem/cache/tags/iic.cc
+++ b/src/mem/cache/tags/iic.cc
@@ -160,6 +160,7 @@ IIC::~IIC()
delete [] dataStore;
delete [] tagStore;
delete [] sets;
+ delete [] dataBlks;
}
/* register cache stats */
diff --git a/src/mem/page_table.cc b/src/mem/page_table.cc
index f47e73c74..be862e429 100644
--- a/src/mem/page_table.cc
+++ b/src/mem/page_table.cc
@@ -228,6 +228,7 @@ PageTable::unserialize(Checkpoint *cp, const std::string &section)
entry = new TheISA::TlbEntry();
entry->unserialize(cp, csprintf("%s.Entry%d", name(), i));
pTable[vaddr] = *entry;
+ delete entry;
++i;
}
}