From 040a6d1745749ced4662d02fa5b9e4e2ea820f35 Mon Sep 17 00:00:00 2001 From: "Unknown W. Brackets" Date: Sun, 12 Oct 2014 18:57:56 -0700 Subject: [PATCH] jit: Improve performance of clearing jit. --- Core/MIPS/JitCommon/JitBlockCache.cpp | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/Core/MIPS/JitCommon/JitBlockCache.cpp b/Core/MIPS/JitCommon/JitBlockCache.cpp index b0a8e28219..63f1e56e70 100644 --- a/Core/MIPS/JitCommon/JitBlockCache.cpp +++ b/Core/MIPS/JitCommon/JitBlockCache.cpp @@ -119,11 +119,11 @@ void JitBlockCache::Shutdown() { // This clears the JIT cache. It's called from JitCache.cpp when the JIT cache // is full and when saving and loading states. void JitBlockCache::Clear() { + block_map_.clear(); + proxyBlockMap_.clear(); for (int i = 0; i < num_blocks_; i++) DestroyBlock(i, false); links_to_.clear(); - block_map_.clear(); - proxyBlockMap_.clear(); num_blocks_ = 0; blockMemRanges_[JITBLOCK_RANGE_SCRATCH] = std::make_pair(0xFFFFFFFF, 0x00000000); @@ -216,7 +216,11 @@ void JitBlockCache::AddBlockMap(int block_num) { void JitBlockCache::RemoveBlockMap(int block_num) { const JitBlock &b = blocks_[block_num]; - u32 pAddr = b.originalAddress & 0x1FFFFFFF; + if (b.invalid) { + return; + } + + const u32 pAddr = b.originalAddress & 0x1FFFFFFF; auto it = block_map_.find(std::make_pair(pAddr + 4 * b.originalSize - 1, pAddr)); if (it != block_map_.end() && it->second == block_num) { block_map_.erase(it);