From cf678a1aa6649b7662e9b25248cc187c26a6629e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Henrik=20Rydg=C3=A5rd?= Date: Mon, 28 Oct 2024 12:17:05 +0100 Subject: [PATCH] JIT: Allow more blocks to be stored in the cache. Also, add margin to the IsFull check. --- Common/Net/Resolve.cpp | 1 + Core/MIPS/JitCommon/JitBlockCache.cpp | 5 ++--- Core/MIPS/JitCommon/JitBlockCache.h | 3 ++- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/Common/Net/Resolve.cpp b/Common/Net/Resolve.cpp index bcdd1ad567..7ec678150b 100644 --- a/Common/Net/Resolve.cpp +++ b/Common/Net/Resolve.cpp @@ -71,6 +71,7 @@ void Shutdown() #endif } +// NOTE: Due to the nature of getaddrinfo, this can block indefinitely. Not good. bool DNSResolve(const std::string &host, const std::string &service, addrinfo **res, std::string &error, DNSType type) { #if PPSSPP_PLATFORM(SWITCH) // Force IPv4 lookups. diff --git a/Core/MIPS/JitCommon/JitBlockCache.cpp b/Core/MIPS/JitCommon/JitBlockCache.cpp index 021ee7b16c..c917eb05d1 100644 --- a/Core/MIPS/JitCommon/JitBlockCache.cpp +++ b/Core/MIPS/JitCommon/JitBlockCache.cpp @@ -91,8 +91,8 @@ bool JitBlock::ContainsAddress(u32 em_address) const { } bool JitBlockCache::IsFull() const { - // -10 to safely leave space for some proxy blocks, which we don't check before we allocate (not ideal, but should work). - return num_blocks_ >= MAX_NUM_BLOCKS - 10; + // Subtract some amount to safely leave space for some proxy blocks, which we don't check before we allocate (not ideal, but should be enough). + return num_blocks_ >= MAX_NUM_BLOCKS - 512; } void JitBlockCache::Init() { @@ -218,7 +218,6 @@ void JitBlockCache::ProxyBlock(u32 rootAddress, u32 startAddress, u32 size, cons void JitBlockCache::AddBlockMap(int block_num) { const JitBlock &b = blocks_[block_num]; // Convert the logical address to a physical address for the block map - // Yeah, this'll work fine for PSP too I think. u32 pAddr = b.originalAddress & 0x1FFFFFFF; block_map_[std::make_pair(pAddr + 4 * b.originalSize, pAddr)] = block_num; } diff --git a/Core/MIPS/JitCommon/JitBlockCache.h b/Core/MIPS/JitCommon/JitBlockCache.h index 16457b0b06..6cf805a6e5 100644 --- a/Core/MIPS/JitCommon/JitBlockCache.h +++ b/Core/MIPS/JitCommon/JitBlockCache.h @@ -227,7 +227,8 @@ private: std::pair blockMemRanges_[3]; enum { - MAX_NUM_BLOCKS = 65536*2 + // Where does this number come from? + MAX_NUM_BLOCKS = 65536 * 4 }; };