mirror of
https://github.com/RPCS3/rpcs3.git
synced 2025-03-29 22:20:48 +00:00
fix order of static initialization
This commit is contained in:
parent
de592267fe
commit
b5b8f7c35a
@ -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);
|
extern void sys_initialize_tls(ppu_thread&, u64, u32, u32, u32);
|
||||||
|
|
||||||
|
std::unordered_map<std::string, ppu_static_module*>& ppu_module_manager::get()
|
||||||
|
{
|
||||||
|
static std::unordered_map<std::string, ppu_static_module*> s_module_map;
|
||||||
|
return s_module_map;
|
||||||
|
}
|
||||||
|
|
||||||
// HLE function name cache
|
// HLE function name cache
|
||||||
std::vector<std::string> g_ppu_function_names;
|
std::vector<std::string> g_ppu_function_names;
|
||||||
|
|
||||||
@ -82,12 +88,12 @@ void ppu_static_module::initialize()
|
|||||||
|
|
||||||
void ppu_module_manager::register_module(ppu_static_module* _module)
|
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)
|
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)
|
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)
|
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)
|
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 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);
|
const auto found = map.find(name);
|
||||||
return found != map.end() ? found->second : nullptr;
|
return found != map.end() ? found->second : nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
void ppu_module_manager::initialize_modules()
|
void ppu_module_manager::initialize_modules()
|
||||||
{
|
{
|
||||||
for (auto& _module : s_module_map)
|
for (auto& _module : ppu_module_manager::get())
|
||||||
{
|
{
|
||||||
_module.second->initialize();
|
_module.second->initialize();
|
||||||
}
|
}
|
||||||
|
@ -163,10 +163,7 @@ public:
|
|||||||
}
|
}
|
||||||
|
|
||||||
// We need this to deal with the enumeration over all ppu_static_modules that happens in ppu_initialize_modules
|
// We need this to deal with the enumeration over all ppu_static_modules that happens in ppu_initialize_modules
|
||||||
static const std::unordered_map<std::string, ppu_static_module*>& get()
|
static std::unordered_map<std::string, ppu_static_module*>& get();
|
||||||
{
|
|
||||||
return s_module_map;
|
|
||||||
}
|
|
||||||
|
|
||||||
static const ppu_static_module cellAdec;
|
static const ppu_static_module cellAdec;
|
||||||
static const ppu_static_module cellAtrac;
|
static const ppu_static_module cellAtrac;
|
||||||
@ -279,9 +276,6 @@ public:
|
|||||||
static const ppu_static_module sys_lv2dbg;
|
static const ppu_static_module sys_lv2dbg;
|
||||||
static const ppu_static_module static_hle;
|
static const ppu_static_module static_hle;
|
||||||
static const ppu_static_module hle_patches;
|
static const ppu_static_module hle_patches;
|
||||||
|
|
||||||
private:
|
|
||||||
inline static std::unordered_map<std::string, ppu_static_module*> s_module_map;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
template <auto* Func>
|
template <auto* Func>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user