From a39e331aad4a110602205a0df2ac084a1b43bf94 Mon Sep 17 00:00:00 2001 From: aldelaro5 Date: Sat, 20 Aug 2016 23:59:18 -0400 Subject: [PATCH] Schedule an event to clear the jit cache when adding the first and last memory check Also fix an oddity in the case when the last memory check is deleted, the jit cache was supposed to be cleared in that case, but it was out of the for loop that finds the one to delete so it was never run. Naturally, the same fix for the adding the first memory check was applied. --- Source/Core/Common/BreakPoints.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Source/Core/Common/BreakPoints.cpp b/Source/Core/Common/BreakPoints.cpp index 769afcfcf0..e9c8c481cc 100644 --- a/Source/Core/Common/BreakPoints.cpp +++ b/Source/Core/Common/BreakPoints.cpp @@ -171,7 +171,7 @@ void MemChecks::Add(const TMemCheck& _rMemoryCheck) // If this is the first one, clear the JIT cache so it can switch to // watchpoint-compatible code. if (!had_any && jit) - jit->ClearCache(); + jit->GetBlockCache()->SchedulateClearCacheThreadSafe(); } void MemChecks::Remove(u32 _Address) @@ -181,11 +181,11 @@ void MemChecks::Remove(u32 _Address) if (i->StartAddress == _Address) { m_MemChecks.erase(i); + if (!HasAny() && jit) + jit->GetBlockCache()->SchedulateClearCacheThreadSafe(); return; } } - if (!HasAny() && jit) - jit->ClearCache(); } TMemCheck* MemChecks::GetMemCheck(u32 address)