summaryrefslogtreecommitdiff
path: root/src/vm/assemblynative.cpp
diff options
context:
space:
mode:
authorRahul Kumar <rahku@microsoft.com>2016-10-24 14:46:40 -0700
committerRahul Kumar <rahku@microsoft.com>2016-10-25 14:42:10 -0700
commit3556e1210f50975515ceec5abe306cb805587b51 (patch)
tree7d3a748619f44e44e337dff8bd98f3fdbcea74dc /src/vm/assemblynative.cpp
parentc537c3f54282fae452f85a3975a39a7ec1c35bba (diff)
downloadcoreclr-3556e1210f50975515ceec5abe306cb805587b51.tar.gz
coreclr-3556e1210f50975515ceec5abe306cb805587b51.tar.bz2
coreclr-3556e1210f50975515ceec5abe306cb805587b51.zip
Add implementation of AppDomain.GetAssemblies
Diffstat (limited to 'src/vm/assemblynative.cpp')
-rw-r--r--src/vm/assemblynative.cpp35
1 files changed, 35 insertions, 0 deletions
diff --git a/src/vm/assemblynative.cpp b/src/vm/assemblynative.cpp
index 90c58fc59c..f372bcb349 100644
--- a/src/vm/assemblynative.cpp
+++ b/src/vm/assemblynative.cpp
@@ -807,6 +807,41 @@ 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)