From 2a02087eb52e12e16e9da74e929e875ae07519ec Mon Sep 17 00:00:00 2001 From: Ron Dreslinski Date: Mon, 12 Mar 2007 15:59:54 -0500 Subject: [PATCH] Clean up more memory leaks --HG-- extra : convert_revision : 32d1b23200752fe5fcdcbafb586f50bbe6db3bf3 --- src/mem/cache/cache_impl.hh | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/src/mem/cache/cache_impl.hh b/src/mem/cache/cache_impl.hh index d8aab0e58..5c6ab0950 100644 --- a/src/mem/cache/cache_impl.hh +++ b/src/mem/cache/cache_impl.hh @@ -583,12 +583,7 @@ Cache::access(PacketPtr &pkt) // Hit hits[pkt->cmdToIndex()][0/*pkt->req->getThreadNum()*/]++; // clear dirty bit if write through - if (pkt->needsResponse()) - respond(pkt, curTick+lat); - if (pkt->cmd == MemCmd::Writeback) { - //Signal that you can kill the pkt/req - pkt->flags |= SATISFIED; - } + respond(pkt, curTick+lat); return true; } @@ -606,14 +601,14 @@ Cache::access(PacketPtr &pkt) if (pkt->flags & SATISFIED) { // happens when a store conditional fails because it missed // the cache completely - if (pkt->needsResponse()) - respond(pkt, curTick+lat); + respond(pkt, curTick+lat); } else { missQueue->handleMiss(pkt, size, curTick + hitLatency); } - if (pkt->cmd == MemCmd::Writeback) { + if (!pkt->needsResponse()) { //Need to clean up the packet on a writeback miss, but leave the request + //for the next level. delete pkt; }