Add ManagedBinaryModule::FindModule utility for C# type class lookup

This commit is contained in:
Wojtek Figat
2021-09-29 15:46:17 +02:00
parent fa82d818d8
commit e2cd0393ac
3 changed files with 21 additions and 26 deletions

View File

@@ -600,6 +600,24 @@ MMethod* ManagedBinaryModule::FindMethod(MClass* mclass, const ScriptingTypeMeth
return nullptr;
}
ManagedBinaryModule* ManagedBinaryModule::FindModule(MonoClass* klass)
{
// TODO: consider caching lookup table MonoImage* -> ManagedBinaryModule*
ManagedBinaryModule* module = nullptr;
MonoImage* mImage = mono_class_get_image(klass);
auto& modules = BinaryModule::GetModules();
for (auto e : modules)
{
auto managedModule = dynamic_cast<ManagedBinaryModule*>(e);
if (managedModule && managedModule->Assembly->GetMonoImage() == mImage)
{
module = managedModule;
break;
}
}
return module;
}
void ManagedBinaryModule::OnLoading(MAssembly* assembly)
{
PROFILE_CPU();