From e8154a529f9ecf34e1ade2376a74b7841d40019e Mon Sep 17 00:00:00 2001 From: JosJuice Date: Sun, 24 Mar 2024 11:49:47 +0100 Subject: JitArm64: Increase farcode & nearcode cache size This is a JitArm64 version of 219610d8a0e5a2c12d074314c6f2e62a4b43d7e4. Due to limitations on how far you can jump with a single AArch64 branch instruction, going above the former limit of 128 MiB of code (counting nearcode and farcode combined) requires a bit of restructuring. With the restructuring in place, the limit now is 256 MiB. See the new large comment in Jit.h for a description of the new memory layout. --- Source/Core/Common/CodeBlock.h | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'Source/Core/Common/CodeBlock.h') diff --git a/Source/Core/Common/CodeBlock.h b/Source/Core/Common/CodeBlock.h index fbd4cdb00a..9efc82edeb 100644 --- a/Source/Core/Common/CodeBlock.h +++ b/Source/Core/Common/CodeBlock.h @@ -82,6 +82,10 @@ public: } bool IsInSpace(const u8* ptr) const { return ptr >= region && ptr < (region + region_size); } + bool IsInSpaceOrChildSpace(const u8* ptr) const + { + return ptr >= region && ptr < (region + total_region_size); + } void WriteProtect(bool allow_execute) { Common::WriteProtectMemory(region, region_size, allow_execute); @@ -106,7 +110,7 @@ public: bool HasChildren() const { return region_size != total_region_size; } u8* AllocChildCodeSpace(size_t child_size) { - ASSERT_MSG(DYNA_REC, child_size < GetSpaceLeft(), "Insufficient space for child allocation."); + ASSERT_MSG(DYNA_REC, child_size <= GetSpaceLeft(), "Insufficient space for child allocation."); u8* child_region = region + region_size - child_size; region_size -= child_size; ResetCodePtr(); -- cgit v1.2.3