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
//in the cpu store buffer.
if (outstandingAddrs.find(paddr) != outstandingAddrs.end()) {
delete result;
delete [] result;
delete req;
return;
}

View file

@ -570,8 +570,10 @@ Cache<TagStore,Coherence>::access(PacketPtr &pkt)
}
}
while (!writebacks.empty()) {
missQueue->doWriteback(writebacks.front());
PacketPtr wbPkt = writebacks.front();
missQueue->doWriteback(wbPkt);
writebacks.pop_front();
delete wbPkt;
}
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,
new_state, writebacks, pkt);
while (!writebacks.empty()) {
missQueue->doWriteback(writebacks.front());
writebacks.pop_front();
PacketPtr wbPkt = writebacks.front();
missQueue->doWriteback(wbPkt);
writebacks.pop_front();
delete wbPkt;
}
}
missQueue->handleResponse(pkt, curTick + hitLatency);
@ -1040,8 +1044,10 @@ return 0;
// There was a cache hit.
// Handle writebacks if needed
while (!writebacks.empty()){
memSidePort->sendAtomic(writebacks.front());
PacketPtr wbPkt = writebacks.front();
memSidePort->sendAtomic(wbPkt);
writebacks.pop_front();
delete wbPkt;
}
hits[pkt->cmdToIndex()][0/*pkt->req->getThreadNum()*/]++;