Clean up unused parameters around Assembly::Load (dotnet/coreclr#22716)
authorMarek Safar <marek.safar@gmail.com>
Thu, 21 Feb 2019 18:54:17 +0000 (19:54 +0100)
committerJan Kotas <jkotas@microsoft.com>
Thu, 21 Feb 2019 18:54:17 +0000 (10:54 -0800)
Commit migrated from https://github.com/dotnet/coreclr/commit/aa542e489034335f3536782f05f5c502d855736b

src/coreclr/src/System.Private.CoreLib/src/System/Activator.cs
src/coreclr/src/System.Private.CoreLib/src/System/Reflection/Assembly.CoreCLR.cs
src/coreclr/src/System.Private.CoreLib/src/System/Reflection/RuntimeAssembly.cs
src/coreclr/src/System.Private.CoreLib/src/System/Runtime/Loader/AssemblyLoadContext.cs
src/coreclr/src/vm/assemblynative.cpp
src/coreclr/src/vm/assemblynative.hpp

index 4da4f36..8722f48 100644 (file)
@@ -143,8 +143,7 @@ namespace System
                 {
                     // Classic managed type
                     assembly = RuntimeAssembly.InternalLoadAssemblyName(
-                        assemblyName, null, ref stackMark,
-                        true /*thrownOnFileNotFound*/);
+                        assemblyName, ref stackMark);
                 }
             }
 
index 6881890..30acc44 100644 (file)
@@ -124,28 +124,19 @@ namespace System.Reflection
         [System.Security.DynamicSecurityMethod] // Methods containing StackCrawlMark local var has to be marked DynamicSecurityMethod
         public static Assembly Load(AssemblyName assemblyRef)
         {
-            AssemblyName modifiedAssemblyRef = null;
-            if (assemblyRef != null && assemblyRef.CodeBase != null)
-            {
-                modifiedAssemblyRef = (AssemblyName)assemblyRef.Clone();
-                modifiedAssemblyRef.CodeBase = null;
-            }
-            else
-            {
-                modifiedAssemblyRef = assemblyRef;
-            }
-            
+            if (assemblyRef == null)
+                throw new ArgumentNullException(nameof(assemblyRef));
+
             StackCrawlMark stackMark = StackCrawlMark.LookForMyCaller;
-            return RuntimeAssembly.InternalLoadAssemblyName(modifiedAssemblyRef, null, ref stackMark, true /*thrownOnFileNotFound*/);
+            return Load(assemblyRef, ref stackMark, IntPtr.Zero);
         }
 
         // Locate an assembly by its name. The name can be strong or
         // weak. The assembly is loaded into the domain of the caller.
-        [System.Security.DynamicSecurityMethod] // Methods containing StackCrawlMark local var has to be marked DynamicSecurityMethod
-        internal static Assembly Load(AssemblyName assemblyRef, IntPtr ptrLoadContextBinder)
+        internal static Assembly Load(AssemblyName assemblyRef, ref StackCrawlMark stackMark, IntPtr ptrLoadContextBinder)
         {
             AssemblyName modifiedAssemblyRef = null;
-            if (assemblyRef != null && assemblyRef.CodeBase != null)
+            if (assemblyRef.CodeBase != null)
             {
                 modifiedAssemblyRef = (AssemblyName)assemblyRef.Clone();
                 modifiedAssemblyRef.CodeBase = null;
@@ -155,8 +146,7 @@ namespace System.Reflection
                 modifiedAssemblyRef = assemblyRef;
             }
 
-            StackCrawlMark stackMark = StackCrawlMark.LookForMyCaller;
-            return RuntimeAssembly.InternalLoadAssemblyName(modifiedAssemblyRef, null, ref stackMark, true /*thrownOnFileNotFound*/, ptrLoadContextBinder);
+            return RuntimeAssembly.InternalLoadAssemblyName(modifiedAssemblyRef, ref stackMark, ptrLoadContextBinder);
         }
 
         // Loads the assembly with a COFF based IMAGE containing
index 14929d6..3cc4b86 100644 (file)
@@ -281,17 +281,7 @@ namespace System.Reflection
             return CustomAttributeData.GetCustomAttributesInternal(this);
         }
 
-        // Wrapper function to wrap the typical use of InternalLoad.
-        internal static RuntimeAssembly InternalLoad(string assemblyString,
-                                                     ref StackCrawlMark stackMark)
-        {
-            return InternalLoad(assemblyString, ref stackMark, IntPtr.Zero);
-        }
-
-        [System.Security.DynamicSecurityMethod] // Methods containing StackCrawlMark local var has to be marked DynamicSecurityMethod
-        internal static RuntimeAssembly InternalLoad(string assemblyString,
-                                                     ref StackCrawlMark stackMark,
-                                                     IntPtr pPrivHostBinder)
+        internal static RuntimeAssembly InternalLoad(string assemblyString, ref StackCrawlMark stackMark)
         {
             RuntimeAssembly assembly;
             AssemblyName an = CreateAssemblyName(assemblyString, out assembly);
@@ -302,9 +292,7 @@ namespace System.Reflection
                 return assembly;
             }
 
-            return InternalLoadAssemblyName(an, null, ref stackMark,
-                                            pPrivHostBinder,
-                                            true  /*thrownOnFileNotFound*/);
+            return InternalLoadAssemblyName(an, ref stackMark);
         }
 
         // Creates AssemblyName. Fills assembly if AssemblyResolve event has been raised.
@@ -327,28 +315,8 @@ namespace System.Reflection
             return an;
         }
 
-        // Wrapper function to wrap the typical use of InternalLoadAssemblyName.
-        internal static RuntimeAssembly InternalLoadAssemblyName(
-            AssemblyName assemblyRef,
-            RuntimeAssembly reqAssembly,
-            ref StackCrawlMark stackMark,
-            bool throwOnFileNotFound,
-            IntPtr ptrLoadContextBinder = default)
-        {
-            return InternalLoadAssemblyName(assemblyRef, reqAssembly, ref stackMark, IntPtr.Zero, throwOnFileNotFound, ptrLoadContextBinder);
-        }
-
-        internal static RuntimeAssembly InternalLoadAssemblyName(
-            AssemblyName assemblyRef,
-            RuntimeAssembly reqAssembly,
-            ref StackCrawlMark stackMark,
-            IntPtr pPrivHostBinder,
-            bool throwOnFileNotFound,
-            IntPtr ptrLoadContextBinder = default)
+        internal static RuntimeAssembly InternalLoadAssemblyName(AssemblyName assemblyRef, ref StackCrawlMark stackMark, IntPtr ptrLoadContextBinder = default)
         {
-            if (assemblyRef == null)
-                throw new ArgumentNullException(nameof(assemblyRef));
-
 #if FEATURE_APPX
             if (ApplicationModel.IsUap)
             {
@@ -368,19 +336,16 @@ namespace System.Reflection
 
             string codeBase = VerifyCodeBase(assemblyRef.CodeBase);
 
-            return nLoad(assemblyRef, codeBase, reqAssembly, ref stackMark,
-                pPrivHostBinder,
-                throwOnFileNotFound, ptrLoadContextBinder);
+            return nLoad(assemblyRef, codeBase, null, ref stackMark, true, ptrLoadContextBinder);
         }
 
         [MethodImplAttribute(MethodImplOptions.InternalCall)]
         private static extern RuntimeAssembly nLoad(AssemblyName fileName,
                                                     string codeBase,
-                                                    RuntimeAssembly locationHint,
+                                                    RuntimeAssembly assemblyContext,
                                                     ref StackCrawlMark stackMark,
-                                                    IntPtr pPrivHostBinder,
                                                     bool throwOnFileNotFound,
-                                                    IntPtr ptrLoadContextBinder = default);
+                                                    IntPtr ptrLoadContextBinder);
 
         public override bool ReflectionOnly
         {
@@ -654,9 +619,6 @@ namespace System.Reflection
                                                        Version version,
                                                        bool throwOnFileNotFound)
         {
-            // This stack crawl mark is never used because the requesting assembly is explicitly specified,
-            // so the value could be anything.
-            StackCrawlMark stackMark = StackCrawlMark.LookForMyCaller;
             AssemblyName an = new AssemblyName();
 
             an.SetPublicKey(GetPublicKey());
@@ -670,9 +632,10 @@ namespace System.Reflection
             an.CultureInfo = culture;
             an.Name = GetSimpleName() + ".resources";
 
-            RuntimeAssembly retAssembly = nLoad(an, null, this, ref stackMark,
-                                IntPtr.Zero,
-                                throwOnFileNotFound);
+            // This stack crawl mark is never used because the requesting assembly is explicitly specified,
+            // so the value could be anything.
+            StackCrawlMark unused = default;
+            RuntimeAssembly retAssembly = nLoad(an, null, this, ref unused, throwOnFileNotFound, IntPtr.Zero);
 
             if (retAssembly == this)
             {
index 38c1afc..2ac0f6b 100644 (file)
@@ -8,6 +8,7 @@ using System.IO;
 using System.Reflection;
 using System.Runtime.CompilerServices;
 using System.Runtime.InteropServices;
+using StackCrawlMark = System.Threading.StackCrawlMark;
 
 namespace System.Runtime.Loader
 {
@@ -368,10 +369,15 @@ namespace System.Runtime.Loader
             return assembly;
         }
 
+        [System.Security.DynamicSecurityMethod] // Methods containing StackCrawlMark local var has to be marked DynamicSecurityMethod
         public Assembly LoadFromAssemblyName(AssemblyName assemblyName)
         {
+            if (assemblyName == null)
+                throw new ArgumentNullException(nameof(assemblyName));
+
             // Attempt to load the assembly, using the same ordering as static load, in the current load context.
-            return Assembly.Load(assemblyName, m_pNativeAssemblyLoadContext);
+            StackCrawlMark stackMark = StackCrawlMark.LookForMyCaller;
+            return Assembly.Load(assemblyName, ref stackMark, m_pNativeAssemblyLoadContext);
         }
 
         [DllImport(JitHelpers.QCall, CharSet = CharSet.Unicode)]
index 10e6319..d0f1418 100644 (file)
 
 
 
-FCIMPL7(Object*, AssemblyNative::Load, AssemblyNameBaseObject* assemblyNameUNSAFE, 
+FCIMPL6(Object*, AssemblyNative::Load, AssemblyNameBaseObject* assemblyNameUNSAFE,
         StringObject* codeBaseUNSAFE, 
         AssemblyBaseObject* requestingAssemblyUNSAFE,
         StackCrawlMark* stackMark,
-        ICLRPrivBinder * pPrivHostBinder,
         CLR_BOOL fThrowOnFileNotFound,
         INT_PTR ptrLoadContextBinder)
 {
@@ -103,12 +102,6 @@ FCIMPL7(Object*, AssemblyNative::Load, AssemblyNameBaseObject* assemblyNameUNSAF
         EEFileLoadException::Throw(&spec, COR_E_NOTSUPPORTED);
     }
     
-    if (pPrivHostBinder != NULL)
-    {
-        pParentAssembly = NULL;
-        spec.SetHostBinder(pPrivHostBinder);
-    }
-    
     if (gc.codeBase != NULL)
         spec.SetCodeBase(&(pThread->m_MarshalAlloc), &gc.codeBase);
 
index ca78c2d..d506b6e 100644 (file)
@@ -32,11 +32,10 @@ public:
     static
     void QCALLTYPE GetExecutingAssembly(QCall::StackCrawlMarkHandle stackMark, QCall::ObjectHandleOnStack retAssembly);
 
-    static FCDECL7(Object*,         Load,                       AssemblyNameBaseObject* assemblyNameUNSAFE, 
+    static FCDECL6(Object*,         Load,                       AssemblyNameBaseObject* assemblyNameUNSAFE, 
                                                                 StringObject* codeBaseUNSAFE, 
                                                                 AssemblyBaseObject* requestingAssemblyUNSAFE,
                                                                 StackCrawlMark* stackMark,
-                                                                ICLRPrivBinder * pPrivHostBinder,
                                                                 CLR_BOOL fThrowOnFileNotFound,
                                                                 INT_PTR ptrLoadContextBinder);