diff options
author | Gaurav Khanna <gkhanna@microsoft.com> | 2017-04-28 16:06:54 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-04-28 16:06:54 -0700 |
commit | b38113c80d04c39890207d149bf0359a86711d62 (patch) | |
tree | 61f35c08f07b230eb9c40c44f80b74c15d00394d /src/vm | |
parent | 68a9cf4cdc39eea027b01ccbc98531503590a6e3 (diff) | |
download | coreclr-b38113c80d04c39890207d149bf0359a86711d62.tar.gz coreclr-b38113c80d04c39890207d149bf0359a86711d62.tar.bz2 coreclr-b38113c80d04c39890207d149bf0359a86711d62.zip |
Correctly enumerate loaded assemblies in AppDomain (#11294)
* Correctly enumerate loaded assemblies in AppDomain
* Remove unrequired attribute
Diffstat (limited to 'src/vm')
-rw-r--r-- | src/vm/assemblynative.cpp | 36 | ||||
-rw-r--r-- | src/vm/assemblynative.hpp | 1 | ||||
-rw-r--r-- | src/vm/ecalllist.h | 2 |
3 files changed, 1 insertions, 38 deletions
diff --git a/src/vm/assemblynative.cpp b/src/vm/assemblynative.cpp index b9079ec06a..702c255c97 100644 --- a/src/vm/assemblynative.cpp +++ b/src/vm/assemblynative.cpp @@ -536,42 +536,6 @@ Assembly* AssemblyNative::LoadFromPEImage(ICLRPrivBinder* pBinderContext, PEImag RETURN pLoadedAssembly; } -/* static */ -void QCALLTYPE AssemblyNative::GetLoadedAssembliesInternal(QCall::ObjectHandleOnStack assemblies) -{ - QCALL_CONTRACT; - - BEGIN_QCALL; - - MethodTable * pAssemblyClass = MscorlibBinder::GetClass(CLASS__ASSEMBLY); - - PTR_AppDomain pCurDomain = GetAppDomain(); - - SetSHash<PTR_DomainAssembly> assemblySet; - pCurDomain->GetCacheAssemblyList(assemblySet); - size_t nArrayElems = assemblySet.GetCount(); - PTRARRAYREF AsmArray = NULL; - - GCX_COOP(); - - GCPROTECT_BEGIN(AsmArray); - AsmArray = (PTRARRAYREF) AllocateObjectArray( (DWORD)nArrayElems, pAssemblyClass); - for(auto it = assemblySet.Begin(); it != assemblySet.End(); it++) - { - PTR_DomainAssembly assem = *it; - OBJECTREF o = (OBJECTREF)assem->GetExposedAssemblyObject(); - _ASSERTE(o != NULL); - _ASSERTE(nArrayElems > 0); - AsmArray->SetAt(--nArrayElems, o); - } - - assemblies.Set(AsmArray); - - GCPROTECT_END(); - - END_QCALL; -} - /* static */ void QCALLTYPE AssemblyNative::LoadFromPath(INT_PTR ptrNativeAssemblyLoadContext, LPCWSTR pwzILPath, LPCWSTR pwzNIPath, QCall::ObjectHandleOnStack retLoadedAssembly) { diff --git a/src/vm/assemblynative.hpp b/src/vm/assemblynative.hpp index ece8100e95..514589fb4c 100644 --- a/src/vm/assemblynative.hpp +++ b/src/vm/assemblynative.hpp @@ -208,7 +208,6 @@ public: static BOOL QCALLTYPE OverrideDefaultAssemblyLoadContextForCurrentDomain(INT_PTR ptrNativeAssemblyLoadContext); static BOOL QCALLTYPE CanUseAppPathAssemblyLoadContextInCurrentDomain(); static void QCALLTYPE LoadFromPath(INT_PTR ptrNativeAssemblyLoadContext, LPCWSTR pwzILPath, LPCWSTR pwzNIPath, QCall::ObjectHandleOnStack retLoadedAssembly); - static void QCALLTYPE GetLoadedAssembliesInternal(QCall::ObjectHandleOnStack assemblies); static INT_PTR QCALLTYPE InternalLoadUnmanagedDllFromPath(LPCWSTR unmanagedLibraryPath); static void QCALLTYPE LoadFromStream(INT_PTR ptrNativeAssemblyLoadContext, INT_PTR ptrAssemblyArray, INT32 cbAssemblyArrayLength, INT_PTR ptrSymbolArray, INT32 cbSymbolArrayLength, QCall::ObjectHandleOnStack retLoadedAssembly); static Assembly* LoadFromPEImage(ICLRPrivBinder* pBinderContext, PEImage *pILImage, PEImage *pNIImage); diff --git a/src/vm/ecalllist.h b/src/vm/ecalllist.h index 5c3e5f82ba..f2784d11e3 100644 --- a/src/vm/ecalllist.h +++ b/src/vm/ecalllist.h @@ -519,6 +519,7 @@ FCFuncStart(gAppDomainFuncs) #if FEATURE_COMINTEROP FCFuncElement("nSetDisableInterfaceCache", AppDomainNative::SetDisableInterfaceCache) #endif // FEATURE_COMINTEROP + FCFuncElement("nGetAssemblies", AppDomainNative::GetAssemblies) FCFuncElement("nCreateContext", AppDomainNative::CreateContext) FCFuncElement("GetId", AppDomainNative::GetId) FCFuncElement("GetOrInternString", AppDomainNative::GetOrInternString) @@ -617,7 +618,6 @@ FCFuncEnd() FCFuncStart(gAssemblyLoadContextFuncs) QCFuncElement("InitializeAssemblyLoadContext", AssemblyNative::InitializeAssemblyLoadContext) QCFuncElement("LoadFromPath", AssemblyNative::LoadFromPath) - QCFuncElement("GetLoadedAssembliesInternal", AssemblyNative::GetLoadedAssembliesInternal) QCFuncElement("InternalLoadUnmanagedDllFromPath", AssemblyNative::InternalLoadUnmanagedDllFromPath) QCFuncElement("CanUseAppPathAssemblyLoadContextInCurrentDomain", AssemblyNative::CanUseAppPathAssemblyLoadContextInCurrentDomain) QCFuncElement("LoadFromStream", AssemblyNative::LoadFromStream) |