diff options
-rw-r--r-- | src/mem/cache/tags/base.cc | 8 | ||||
-rw-r--r-- | src/mem/cache/tags/base.hh | 11 |
2 files changed, 8 insertions, 11 deletions
diff --git a/src/mem/cache/tags/base.cc b/src/mem/cache/tags/base.cc index 0087de818..dfd6976fd 100644 --- a/src/mem/cache/tags/base.cc +++ b/src/mem/cache/tags/base.cc @@ -78,16 +78,8 @@ BaseTags::insertBlock(PacketPtr pkt, CacheBlk *blk) // Get address Addr addr = pkt->getAddr(); - // If we're replacing a block that was previously valid update - // stats for it. This can't be done in findBlock() because a - // found block might not actually be replaced there if the - // coherence protocol says it can't be. if (blk->isValid()) { - totalRefs += blk->refCount; - ++sampledRefs; - invalidate(blk); - blk->invalidate(); } // Previous block, if existed, has been removed, and now we have diff --git a/src/mem/cache/tags/base.hh b/src/mem/cache/tags/base.hh index c04329fe9..47bab4323 100644 --- a/src/mem/cache/tags/base.hh +++ b/src/mem/cache/tags/base.hh @@ -239,16 +239,21 @@ class BaseTags : public ClockedObject } /** - * This function updates the tags when a block is invalidated but - * does not invalidate the block itself. - * @param blk The block to invalidate. + * This function updates the tags when a block is invalidated + * + * @param blk A valid block to invalidate. */ virtual void invalidate(CacheBlk *blk) { assert(blk); assert(blk->isValid()); + tagsInUse--; occupancies[blk->srcMasterId]--; + totalRefs += blk->refCount; + sampledRefs++; + + blk->invalidate(); } /** |