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:
parent
1aef5c06a3
commit
6415c47a5b
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
14
src/mem/cache/cache_impl.hh
vendored
14
src/mem/cache/cache_impl.hh
vendored
|
@ -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()*/]++;
|
||||||
|
|
Loading…
Reference in a new issue