summaryrefslogtreecommitdiff
path: root/Source
diff options
context:
space:
mode:
authorJosJuice <josjuice@gmail.com>2023-09-30 19:38:09 +0200
committerJosJuice <josjuice@gmail.com>2023-10-31 19:43:49 +0100
commit8686536d7d7b29c15dcbb2cc428e4295cb16f75d (patch)
tree37de0c876e34699a7fc454e7d17ac523b675d50d /Source
parent0606433404ba2ab220ea3d3468911ed045c01cac (diff)
Jit: Always initialize fastmem arena
If dcache is enabled when the game starts, initializing the fastmem arena is still useful in case the user changes the dcache setting. And initializing it doesn't really cost anything.
Diffstat (limited to 'Source')
-rw-r--r--Source/Core/Core/PowerPC/CachedInterpreter/CachedInterpreter.cpp4
-rw-r--r--Source/Core/Core/PowerPC/Jit64/Jit.cpp7
-rw-r--r--Source/Core/Core/PowerPC/JitArm64/Jit.cpp7
-rw-r--r--Source/Core/Core/PowerPC/JitCommon/JitBase.cpp8
-rw-r--r--Source/Core/Core/PowerPC/JitCommon/JitBase.h8
5 files changed, 14 insertions, 20 deletions
diff --git a/Source/Core/Core/PowerPC/CachedInterpreter/CachedInterpreter.cpp b/Source/Core/Core/PowerPC/CachedInterpreter/CachedInterpreter.cpp
index 632fbb23f1..8fbed42f06 100644
--- a/Source/Core/Core/PowerPC/CachedInterpreter/CachedInterpreter.cpp
+++ b/Source/Core/Core/PowerPC/CachedInterpreter/CachedInterpreter.cpp
@@ -82,7 +82,7 @@ CachedInterpreter::~CachedInterpreter() = default;
void CachedInterpreter::Init()
{
- RefreshConfig(InitFastmemArena::No);
+ RefreshConfig();
m_code.reserve(CODE_SIZE / sizeof(Instruction));
@@ -384,5 +384,5 @@ void CachedInterpreter::ClearCache()
{
m_code.clear();
m_block_cache.Clear();
- RefreshConfig(InitFastmemArena::No);
+ RefreshConfig();
}
diff --git a/Source/Core/Core/PowerPC/Jit64/Jit.cpp b/Source/Core/Core/PowerPC/Jit64/Jit.cpp
index 6dbb998d3a..fa96bd4b20 100644
--- a/Source/Core/Core/PowerPC/Jit64/Jit.cpp
+++ b/Source/Core/Core/PowerPC/Jit64/Jit.cpp
@@ -251,7 +251,10 @@ bool Jit64::BackPatch(SContext* ctx)
void Jit64::Init()
{
- RefreshConfig(InitFastmemArena::Yes);
+ auto& memory = m_system.GetMemory();
+ jo.fastmem_arena = memory.InitFastmemArena();
+
+ RefreshConfig();
EnableBlockLink();
@@ -304,7 +307,7 @@ void Jit64::ClearCache()
m_const_pool.Clear();
ClearCodeSpace();
Clear();
- RefreshConfig(InitFastmemArena::No);
+ RefreshConfig();
asm_routines.Regenerate();
ResetFreeMemoryRanges();
}
diff --git a/Source/Core/Core/PowerPC/JitArm64/Jit.cpp b/Source/Core/Core/PowerPC/JitArm64/Jit.cpp
index efc24f988a..4c927ed427 100644
--- a/Source/Core/Core/PowerPC/JitArm64/Jit.cpp
+++ b/Source/Core/Core/PowerPC/JitArm64/Jit.cpp
@@ -47,7 +47,10 @@ JitArm64::~JitArm64() = default;
void JitArm64::Init()
{
- RefreshConfig(InitFastmemArena::Yes);
+ auto& memory = m_system.GetMemory();
+ jo.fastmem_arena = memory.InitFastmemArena();
+
+ RefreshConfig();
const size_t child_code_size = jo.memcheck ? FARCODE_SIZE_MMU : FARCODE_SIZE;
AllocCodeSpace(CODE_SIZE + child_code_size);
@@ -155,7 +158,7 @@ void JitArm64::ClearCache()
const Common::ScopedJITPageWriteAndNoExecute enable_jit_page_writes;
ClearCodeSpace();
m_far_code.ClearCodeSpace();
- RefreshConfig(InitFastmemArena::No);
+ RefreshConfig();
GenerateAsm();
diff --git a/Source/Core/Core/PowerPC/JitCommon/JitBase.cpp b/Source/Core/Core/PowerPC/JitCommon/JitBase.cpp
index 88d28ea8ac..bcdafd9725 100644
--- a/Source/Core/Core/PowerPC/JitCommon/JitBase.cpp
+++ b/Source/Core/Core/PowerPC/JitCommon/JitBase.cpp
@@ -115,7 +115,7 @@ bool JitBase::DoesConfigNeedRefresh()
});
}
-void JitBase::RefreshConfig(InitFastmemArena init_fastmem_arena)
+void JitBase::RefreshConfig()
{
for (const auto& [member, config_info] : JIT_SETTINGS)
this->*member = Config::Get(*config_info);
@@ -132,12 +132,6 @@ void JitBase::RefreshConfig(InitFastmemArena init_fastmem_arena)
analyzer.SetFloatExceptionsEnabled(m_enable_float_exceptions);
analyzer.SetDivByZeroExceptionsEnabled(m_enable_div_by_zero_exceptions);
- if (init_fastmem_arena != InitFastmemArena::No)
- {
- auto& memory = m_system.GetMemory();
- jo.fastmem_arena = m_fastmem_enabled && memory.InitFastmemArena();
- }
-
bool any_watchpoints = m_system.GetPowerPC().GetMemChecks().HasAny();
jo.fastmem = m_fastmem_enabled && jo.fastmem_arena && (m_ppc_state.msr.DR || !any_watchpoints) &&
EMM::IsExceptionHandlerSupported();
diff --git a/Source/Core/Core/PowerPC/JitCommon/JitBase.h b/Source/Core/Core/PowerPC/JitCommon/JitBase.h
index f96c068b98..6c95559438 100644
--- a/Source/Core/Core/PowerPC/JitCommon/JitBase.h
+++ b/Source/Core/Core/PowerPC/JitCommon/JitBase.h
@@ -163,14 +163,8 @@ protected:
static const std::array<std::pair<bool JitBase::*, const Config::Info<bool>*>, 22> JIT_SETTINGS;
- enum class InitFastmemArena
- {
- No,
- Yes,
- };
-
bool DoesConfigNeedRefresh();
- void RefreshConfig(InitFastmemArena init_fastmem_arena);
+ void RefreshConfig();
void InitBLROptimization();
void ProtectStack();