Revert: "LookupCache: Track ARM64EC page state in the code cache"

This reverts the commit 526e3e654f.
This commit is contained in:
Billy Laws 2024-07-16 21:03:18 +00:00
parent 51b4bfc6a6
commit fb7275b3d8
2 changed files with 0 additions and 29 deletions

View File

@ -806,14 +806,6 @@ uintptr_t ContextImpl::CompileBlock(FEXCore::Core::CpuStateFrame* Frame, uint64_
FEXCORE_PROFILE_SCOPED("CompileBlock");
auto Thread = Frame->Thread;
#ifdef _M_ARM_64EC
// If the target PC is EC code, mark it in the L2 and return straight to the dispatcher
// so it can handle the call/return.
if (Thread->LookupCache->CheckPageEC(GuestRIP)) {
return GuestRIP;
}
#endif
// Invalidate might take a unique lock on this, to guarantee that during invalidation no code gets compiled
auto lk = GuardSignalDeferringSection<std::shared_lock>(CodeInvalidationMutex, Thread);

View File

@ -13,9 +13,6 @@
#include <stddef.h>
#include <utility>
#include <mutex>
#ifdef _M_ARM_64EC
#include <winnt.h>
#endif
namespace FEXCore {
@ -70,24 +67,6 @@ public:
return 0;
}
#ifdef _M_ARM_64EC
bool CheckPageEC(uint64_t Address) {
if (!RtlIsEcCode(Address)) {
return false;
}
std::lock_guard<std::recursive_mutex> lk(WriteLock);
// Mark L2 entry for this page as EC by setting the LSB, this can then be
// checked by the dispatcher to see if it needs to perform a call/return to
// EC code.
const auto PageIndex = (Address & (VirtualMemSize - 1)) >> 12;
const auto Pointers = reinterpret_cast<uintptr_t*>(PagePointer);
Pointers[PageIndex] |= 1;
return true;
}
#endif
fextl::map<uint64_t, fextl::vector<uint64_t>> CodePages;
// Appends Block {Address} to CodePages [Start, Start + Length)