Fix some of the memory leaks related to writebacks

src/cpu/memtest/memtest.cc:
    Add the [] to a delete to make it work correctly
src/mem/cache/cache_impl.hh:
    Fix one of the memory leaks

--HG--
extra : convert_revision : 64c7465c68a084efe38a62419205518b24d852a7
This commit is contained in:
Ron Dreslinski 2007-03-12 13:15:32 -05:00
parent 1aef5c06a3
commit 6415c47a5b
2 changed files with 11 additions and 5 deletions

View file

@ -369,7 +369,7 @@ MemTest::tick()
//This means we assume CPU does write forwarding to reads that alias something //This means we assume CPU does write forwarding to reads that alias something
//in the cpu store buffer. //in the cpu store buffer.
if (outstandingAddrs.find(paddr) != outstandingAddrs.end()) { if (outstandingAddrs.find(paddr) != outstandingAddrs.end()) {
delete result; delete [] result;
delete req; delete req;
return; return;
} }

View file

@ -570,8 +570,10 @@ Cache<TagStore,Coherence>::access(PacketPtr &pkt)
} }
} }
while (!writebacks.empty()) { while (!writebacks.empty()) {
missQueue->doWriteback(writebacks.front()); PacketPtr wbPkt = writebacks.front();
missQueue->doWriteback(wbPkt);
writebacks.pop_front(); writebacks.pop_front();
delete wbPkt;
} }
DPRINTF(Cache, "%s %x %s\n", pkt->cmdString(), pkt->getAddr(), DPRINTF(Cache, "%s %x %s\n", pkt->cmdString(), pkt->getAddr(),
@ -721,8 +723,10 @@ Cache<TagStore,Coherence>::handleResponse(PacketPtr &pkt)
blk = handleFill(blk, (MSHR*)pkt->senderState, blk = handleFill(blk, (MSHR*)pkt->senderState,
new_state, writebacks, pkt); new_state, writebacks, pkt);
while (!writebacks.empty()) { while (!writebacks.empty()) {
missQueue->doWriteback(writebacks.front()); PacketPtr wbPkt = writebacks.front();
writebacks.pop_front(); missQueue->doWriteback(wbPkt);
writebacks.pop_front();
delete wbPkt;
} }
} }
missQueue->handleResponse(pkt, curTick + hitLatency); missQueue->handleResponse(pkt, curTick + hitLatency);
@ -1040,8 +1044,10 @@ return 0;
// There was a cache hit. // There was a cache hit.
// Handle writebacks if needed // Handle writebacks if needed
while (!writebacks.empty()){ while (!writebacks.empty()){
memSidePort->sendAtomic(writebacks.front()); PacketPtr wbPkt = writebacks.front();
memSidePort->sendAtomic(wbPkt);
writebacks.pop_front(); writebacks.pop_front();
delete wbPkt;
} }
hits[pkt->cmdToIndex()][0/*pkt->req->getThreadNum()*/]++; hits[pkt->cmdToIndex()][0/*pkt->req->getThreadNum()*/]++;