Move AssemblyLoadContext VM-invoked static resolve methods to shared (dotnet/coreclr...
authorRyan Lucia <rylucia@microsoft.com>
Tue, 20 Aug 2019 14:45:03 +0000 (10:45 -0400)
committerJan Kotas <jkotas@microsoft.com>
Tue, 20 Aug 2019 14:45:03 +0000 (16:45 +0200)
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

src/coreclr/src/System.Private.CoreLib/src/System/Runtime/Loader/AssemblyLoadContext.CoreCLR.cs
src/libraries/System.Private.CoreLib/src/System/Runtime/Loader/AssemblyLoadContext.cs

index ded9896..6607d16 100644 (file)
@@ -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
index e7e9285..a2cc279 100644 (file)
@@ -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)