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

@@ -367,19 +367,7 @@ public:
}
// Get the assembly with that class
// TODO: consider caching lookup table MonoImage* -> ManagedBinaryModule*
ManagedBinaryModule* module = nullptr;
MonoImage* mImage = mono_class_get_image(typeClass);
auto& modules = BinaryModule::GetModules();
for (auto e : modules)
{
auto managedModule = dynamic_cast<ManagedBinaryModule*>(e);
if (managedModule && managedModule->Assembly->GetMonoImage() == mImage)
{
module = managedModule;
break;
}
}
auto module = ManagedBinaryModule::FindModule(typeClass);
if (module == nullptr)
{
LOG(Error, "Cannot find scripting assembly for type \'{0}.{1}\'.", String(mono_class_get_namespace(typeClass)), String(mono_class_get_name(typeClass)));
@@ -464,19 +452,7 @@ public:
MonoClass* typeClass = mono_object_get_class(managedInstance);
// Get the assembly with that class
// TODO: consider caching lookup table MonoImage* -> ManagedBinaryModule*
ManagedBinaryModule* module = nullptr;
MonoImage* mimage = mono_class_get_image(typeClass);
auto& modules = BinaryModule::GetModules();
for (auto e : modules)
{
auto managedModule = dynamic_cast<ManagedBinaryModule*>(e);
if (managedModule && managedModule->Assembly->GetMonoImage() == mimage)
{
module = managedModule;
break;
}
}
auto module = ManagedBinaryModule::FindModule(typeClass);
if (module == nullptr)
{
LOG(Error, "Cannot find scripting assembly for type \'{0}.{1}\'.", String(mono_class_get_namespace(typeClass)), String(mono_class_get_name(typeClass)));