From 5206770153b565d064ebb8802dee9f30b8793474 Mon Sep 17 00:00:00 2001 From: Ryan Lucia Date: Tue, 20 Aug 2019 10:45:03 -0400 Subject: [PATCH] Move AssemblyLoadContext VM-invoked static resolve methods to shared (dotnet/coreclr#26248) Shared between CoreCLR and Mono. Mono began using a copy of these methods with https://github.com/mono/mono/pull/16256/ Commit migrated from https://github.com/dotnet/coreclr/commit/d305063523370cfe3b728898df9b4e67acd6e3cb --- .../Runtime/Loader/AssemblyLoadContext.CoreCLR.cs | 42 ---------------------- .../System/Runtime/Loader/AssemblyLoadContext.cs | 42 ++++++++++++++++++++++ 2 files changed, 42 insertions(+), 42 deletions(-) diff --git a/src/coreclr/src/System.Private.CoreLib/src/System/Runtime/Loader/AssemblyLoadContext.CoreCLR.cs b/src/coreclr/src/System.Private.CoreLib/src/System/Runtime/Loader/AssemblyLoadContext.CoreCLR.cs index ded9896..6607d16 100644 --- a/src/coreclr/src/System.Private.CoreLib/src/System/Runtime/Loader/AssemblyLoadContext.CoreCLR.cs +++ b/src/coreclr/src/System.Private.CoreLib/src/System/Runtime/Loader/AssemblyLoadContext.CoreCLR.cs @@ -188,48 +188,6 @@ namespace System.Runtime.Loader InternalStartProfile(profile, _nativeAssemblyLoadContext); } - // This method is called by the VM. - private static void OnAssemblyLoad(RuntimeAssembly assembly) - { - AssemblyLoad?.Invoke(AppDomain.CurrentDomain, new AssemblyLoadEventArgs(assembly)); - } - - // This method is called by the VM. - private static RuntimeAssembly? OnResourceResolve(RuntimeAssembly assembly, string resourceName) - { - return InvokeResolveEvent(ResourceResolve, assembly, resourceName); - } - - // This method is called by the VM - private static RuntimeAssembly? OnTypeResolve(RuntimeAssembly assembly, string typeName) - { - return InvokeResolveEvent(TypeResolve, assembly, typeName); - } - - // This method is called by the VM. - private static RuntimeAssembly? OnAssemblyResolve(RuntimeAssembly assembly, string assemblyFullName) - { - return InvokeResolveEvent(AssemblyResolve, assembly, assemblyFullName); - } - - private static RuntimeAssembly? InvokeResolveEvent(ResolveEventHandler? eventHandler, RuntimeAssembly assembly, string name) - { - if (eventHandler == null) - return null; - - var args = new ResolveEventArgs(name, assembly); - - foreach (ResolveEventHandler handler in eventHandler.GetInvocationList()) - { - Assembly? asm = handler(AppDomain.CurrentDomain, args); - RuntimeAssembly? ret = GetRuntimeAssembly(asm); - if (ret != null) - return ret; - } - - return null; - } - private static RuntimeAssembly? GetRuntimeAssembly(Assembly? asm) { return diff --git a/src/libraries/System.Private.CoreLib/src/System/Runtime/Loader/AssemblyLoadContext.cs b/src/libraries/System.Private.CoreLib/src/System/Runtime/Loader/AssemblyLoadContext.cs index e7e9285..a2cc279 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Runtime/Loader/AssemblyLoadContext.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Runtime/Loader/AssemblyLoadContext.cs @@ -657,6 +657,48 @@ namespace System.Runtime.Loader return assembly; } + + // This method is called by the VM. + private static void OnAssemblyLoad(RuntimeAssembly assembly) + { + AssemblyLoad?.Invoke(AppDomain.CurrentDomain, new AssemblyLoadEventArgs(assembly)); + } + + // This method is called by the VM. + private static RuntimeAssembly? OnResourceResolve(RuntimeAssembly assembly, string resourceName) + { + return InvokeResolveEvent(ResourceResolve, assembly, resourceName); + } + + // This method is called by the VM + private static RuntimeAssembly? OnTypeResolve(RuntimeAssembly assembly, string typeName) + { + return InvokeResolveEvent(TypeResolve, assembly, typeName); + } + + // This method is called by the VM. + private static RuntimeAssembly? OnAssemblyResolve(RuntimeAssembly assembly, string assemblyFullName) + { + return InvokeResolveEvent(AssemblyResolve, assembly, assemblyFullName); + } + + private static RuntimeAssembly? InvokeResolveEvent(ResolveEventHandler? eventHandler, RuntimeAssembly assembly, string name) + { + if (eventHandler == null) + return null; + + var args = new ResolveEventArgs(name, assembly); + + foreach (ResolveEventHandler handler in eventHandler.GetInvocationList()) + { + Assembly? asm = handler(AppDomain.CurrentDomain, args); + RuntimeAssembly? ret = GetRuntimeAssembly(asm); + if (ret != null) + return ret; + } + + return null; + } #endif // !CORERT private Assembly? ResolveSatelliteAssembly(AssemblyName assemblyName) -- 2.7.4