[heap_tracker] Use ankerl map instead of rb tree (#249)

Signed-off-by: lizzie <lizzie@eden-emu.dev>
Reviewed-on: #249
Reviewed-by: CamilleLaVey <camillelavey99@gmail.com>
Co-authored-by: lizzie <lizzie@eden-emu.dev>
Co-committed-by: lizzie <lizzie@eden-emu.dev>
This commit is contained in:
lizzie 2025-08-27 05:00:38 +02:00 committed by crueter
parent 380cfcaeed
commit c9a3baab5d
Signed by: crueter
GPG key ID: 425ACD2D4830EBC6
11 changed files with 103 additions and 305 deletions

View file

@ -61,8 +61,7 @@ struct Memory::Impl {
}
#ifdef __linux__
heap_tracker.emplace(system.DeviceMemory().buffer);
buffer = std::addressof(*heap_tracker);
buffer.emplace(system.DeviceMemory().buffer);
#else
buffer = std::addressof(system.DeviceMemory().buffer);
#endif
@ -1024,9 +1023,8 @@ struct Memory::Impl {
std::span<Core::GPUDirtyMemoryManager> gpu_dirty_managers;
std::mutex sys_core_guard;
std::optional<Common::HeapTracker> heap_tracker;
#ifdef __linux__
Common::HeapTracker* buffer{};
std::optional<Common::HeapTracker> buffer;
#else
Common::HostMemory* buffer{};
#endif
@ -1230,22 +1228,7 @@ bool Memory::InvalidateNCE(Common::ProcessAddress vaddr, size_t size) {
if (rasterizer) {
impl->InvalidateGPUMemory(ptr, size);
}
#ifdef __linux__
if (!rasterizer && mapped) {
impl->buffer->DeferredMapSeparateHeap(GetInteger(vaddr));
}
#endif
return mapped && ptr != nullptr;
}
bool Memory::InvalidateSeparateHeap(void* fault_address) {
#ifdef __linux__
return impl->buffer->DeferredMapSeparateHeap(static_cast<u8*>(fault_address));
#else
return false;
#endif
}
} // namespace Core::Memory