diff --git a/rpcs3/Emu/Cell/PPUModule.cpp b/rpcs3/Emu/Cell/PPUModule.cpp index 0ac3092cb3..352d9e6931 100644 --- a/rpcs3/Emu/Cell/PPUModule.cpp +++ b/rpcs3/Emu/Cell/PPUModule.cpp @@ -37,6 +37,12 @@ extern void ppu_register_function_at(u32 addr, u32 size, ppu_intrp_func_t ptr); extern void sys_initialize_tls(ppu_thread&, u64, u32, u32, u32); +std::unordered_map& ppu_module_manager::get() +{ + static std::unordered_map s_module_map; + return s_module_map; +} + // HLE function name cache std::vector g_ppu_function_names; @@ -82,12 +88,12 @@ void ppu_static_module::initialize() void ppu_module_manager::register_module(ppu_static_module* _module) { - ppu_module_manager::s_module_map.emplace(_module->name, _module); + ppu_module_manager::get().emplace(_module->name, _module); } ppu_static_function& ppu_module_manager::access_static_function(const char* _module, u32 fnid) { - auto& res = ::at32(ppu_module_manager::s_module_map, _module)->functions[fnid]; + auto& res = ::at32(ppu_module_manager::get(), _module)->functions[fnid]; if (res.name) { @@ -99,7 +105,7 @@ ppu_static_function& ppu_module_manager::access_static_function(const char* _mod ppu_static_variable& ppu_module_manager::access_static_variable(const char* _module, u32 vnid) { - auto& res = ::at32(ppu_module_manager::s_module_map, _module)->variables[vnid]; + auto& res = ::at32(ppu_module_manager::get(), _module)->variables[vnid]; if (res.name) { @@ -111,14 +117,14 @@ ppu_static_variable& ppu_module_manager::access_static_variable(const char* _mod const ppu_static_module* ppu_module_manager::get_module(const std::string& name) { - const auto& map = ppu_module_manager::s_module_map; + const auto& map = ppu_module_manager::get(); const auto found = map.find(name); return found != map.end() ? found->second : nullptr; } void ppu_module_manager::initialize_modules() { - for (auto& _module : s_module_map) + for (auto& _module : ppu_module_manager::get()) { _module.second->initialize(); } diff --git a/rpcs3/Emu/Cell/PPUModule.h b/rpcs3/Emu/Cell/PPUModule.h index efeef707b6..fa7ec784f9 100644 --- a/rpcs3/Emu/Cell/PPUModule.h +++ b/rpcs3/Emu/Cell/PPUModule.h @@ -163,10 +163,7 @@ public: } // We need this to deal with the enumeration over all ppu_static_modules that happens in ppu_initialize_modules - static const std::unordered_map& get() - { - return s_module_map; - } + static std::unordered_map& get(); static const ppu_static_module cellAdec; static const ppu_static_module cellAtrac; @@ -279,9 +276,6 @@ public: static const ppu_static_module sys_lv2dbg; static const ppu_static_module static_hle; static const ppu_static_module hle_patches; - -private: - inline static std::unordered_map s_module_map; }; template