diff --git a/Source/Core/Core/PowerPC/JitCommon/JitCache.cpp b/Source/Core/Core/PowerPC/JitCommon/JitCache.cpp index a41ebb71b2..98ce48f24a 100644 --- a/Source/Core/Core/PowerPC/JitCommon/JitCache.cpp +++ b/Source/Core/Core/PowerPC/JitCommon/JitCache.cpp @@ -42,7 +42,11 @@ void JitBaseBlockCache::Init() { Common::JitRegister::Init(Config::Get(Config::MAIN_PERF_MAP_DIR)); - m_block_map_arena.GrabSHMSegment(FAST_BLOCK_MAP_SIZE, "dolphin-emu-jitblock"); + m_fast_block_map = reinterpret_cast(m_block_map_arena.Create(FAST_BLOCK_MAP_SIZE)); + if (m_fast_block_map) + m_fast_block_map_ptr = m_fast_block_map; + else + m_fast_block_map_ptr = m_fast_block_map_fallback.data(); Clear(); } @@ -51,12 +55,7 @@ void JitBaseBlockCache::Shutdown() { Common::JitRegister::Shutdown(); - if (m_fast_block_map) - { - m_block_map_arena.ReleaseView(m_fast_block_map, FAST_BLOCK_MAP_SIZE); - } - - m_block_map_arena.ReleaseSHMSegment(); + m_block_map_arena.Release(); } // This clears the JIT cache. It's called from JitCache.cpp when the JIT cache @@ -80,23 +79,7 @@ void JitBaseBlockCache::Clear() valid_block.ClearAll(); if (m_fast_block_map) - { - m_block_map_arena.ReleaseView(m_fast_block_map, FAST_BLOCK_MAP_SIZE); - m_block_map_arena.ReleaseSHMSegment(); - m_block_map_arena.GrabSHMSegment(FAST_BLOCK_MAP_SIZE, "dolphin-emu-jitblock"); - } - - m_fast_block_map = - reinterpret_cast(m_block_map_arena.CreateView(0, FAST_BLOCK_MAP_SIZE)); - - if (m_fast_block_map) - { - m_fast_block_map_ptr = m_fast_block_map; - } - else - { - m_fast_block_map_ptr = m_fast_block_map_fallback.data(); - } + m_block_map_arena.Clear(); } void JitBaseBlockCache::Reset() diff --git a/Source/Core/Core/PowerPC/JitCommon/JitCache.h b/Source/Core/Core/PowerPC/JitCommon/JitCache.h index d3f353e815..cf6f785d98 100644 --- a/Source/Core/Core/PowerPC/JitCommon/JitCache.h +++ b/Source/Core/Core/PowerPC/JitCommon/JitCache.h @@ -212,7 +212,7 @@ private: // This is used as a fast cache of block_map used in the assembly dispatcher. // It is implemented via a shm segment using m_block_map_arena. JitBlock** m_fast_block_map = 0; - Common::MemArena m_block_map_arena; + Common::LazyMemoryRegion m_block_map_arena; // An alternative for the above fast_block_map but without a shm segment // in case the shm memory region couldn't be allocated.