diff --git a/src/coreclr/dlls/mscoree/mscorwks_ntdef.src b/src/coreclr/dlls/mscoree/mscorwks_ntdef.src index 29544287cedc59..07d8213864e727 100644 --- a/src/coreclr/dlls/mscoree/mscorwks_ntdef.src +++ b/src/coreclr/dlls/mscoree/mscorwks_ntdef.src @@ -32,6 +32,7 @@ EXPORTS ; mono coreclr_image_get_custom_attribute_data coreclr_unity_profiler_register + coreclr_unity_profiler_get_managed_assembly_load_context coreclr_unity_gc_concurrent_mode mono_array_element_size mono_assembly_get_assemblyref diff --git a/src/coreclr/dlls/mscoree/mscorwks_unixexports.src b/src/coreclr/dlls/mscoree/mscorwks_unixexports.src index 96b7b7cc1b52af..261b4b0af515c5 100644 --- a/src/coreclr/dlls/mscoree/mscorwks_unixexports.src +++ b/src/coreclr/dlls/mscoree/mscorwks_unixexports.src @@ -18,6 +18,7 @@ MetaDataGetDispenser ; mono coreclr_image_get_custom_attribute_data coreclr_unity_profiler_register +coreclr_unity_profiler_get_managed_assembly_load_context coreclr_unity_gc_concurrent_mode mono_array_element_size mono_assembly_get_assemblyref diff --git a/src/coreclr/vm/mono/mono_coreclr.cpp b/src/coreclr/vm/mono/mono_coreclr.cpp index 67e9e5f451c208..1cd9cb25164e78 100644 --- a/src/coreclr/vm/mono/mono_coreclr.cpp +++ b/src/coreclr/vm/mono/mono_coreclr.cpp @@ -912,6 +912,22 @@ extern "C" EXPORT_API void EXPORT_CC coreclr_unity_profiler_register(const CLSID g_profControlBlock.storedProfilers.InsertHead(profilerData); } +extern "C" EXPORT_API ObjectHandleID EXPORT_CC coreclr_unity_profiler_get_managed_assembly_load_context(AssemblyID assemblyID) +{ + STATIC_CONTRACT_NOTHROW; + + Assembly *pAssembly = (Assembly*)assemblyID; + if (pAssembly == NULL) + return NULL; + + AssemblyBinder* pAssemblyBinder = pAssembly->GetPEAssembly()->GetAssemblyBinder(); + if (pAssemblyBinder->IsDefault()) + return NULL; + + // ManagedAssemblyLoadContext is a handle to the managed AssemblyLoadContext object + return (ObjectHandleID)pAssemblyBinder->GetManagedAssemblyLoadContext(); +} + extern "C" EXPORT_API gboolean EXPORT_CC coreclr_unity_gc_concurrent_mode(gboolean state) { CONTRACTL