diff options
author | Jan Kotas <jkotas@microsoft.com> | 2018-11-24 07:00:36 -0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-11-24 07:00:36 -0800 |
commit | 5be7421c75b2bea031ecac44a9c8e304eb4d1850 (patch) | |
tree | cecb507532ff0b88cc23d6ee578efb990f7e0ee1 /src/vm | |
parent | 55d1363ac36735008dee4d11e10934b8ee94e80b (diff) | |
download | coreclr-5be7421c75b2bea031ecac44a9c8e304eb4d1850.tar.gz coreclr-5be7421c75b2bea031ecac44a9c8e304eb4d1850.tar.bz2 coreclr-5be7421c75b2bea031ecac44a9c8e304eb4d1850.zip |
Refactor AppDomain.IsAppXModel and a few other AppDomain methods (#21181)
Contributes to #21028
Diffstat (limited to 'src/vm')
-rw-r--r-- | src/vm/appdomainnative.cpp | 116 | ||||
-rw-r--r-- | src/vm/appdomainnative.hpp | 23 | ||||
-rw-r--r-- | src/vm/assembly.hpp | 1 | ||||
-rw-r--r-- | src/vm/ecalllist.h | 20 |
4 files changed, 30 insertions, 130 deletions
diff --git a/src/vm/appdomainnative.cpp b/src/vm/appdomainnative.cpp index da78874c74..c2cc06a748 100644 --- a/src/vm/appdomainnative.cpp +++ b/src/vm/appdomainnative.cpp @@ -133,8 +133,7 @@ void QCALLTYPE AppDomainNative::SetupBindingPaths(__in_z LPCWSTR wszTrustedPlatf END_QCALL; } - -FCIMPL4(Object*, AppDomainNative::CreateDynamicAssembly, AppDomainBaseObject* refThisUNSAFE, AssemblyNameBaseObject* assemblyNameUNSAFE, StackCrawlMark* stackMark, INT32 access) +FCIMPL3(Object*, AppDomainNative::CreateDynamicAssembly, AssemblyNameBaseObject* assemblyNameUNSAFE, StackCrawlMark* stackMark, INT32 access) { FCALL_CONTRACT; @@ -145,7 +144,6 @@ FCIMPL4(Object*, AppDomainNative::CreateDynamicAssembly, AppDomainBaseObject* re //</TODO> CreateDynamicAssemblyArgs args; - args.refThis = (APPDOMAINREF) refThisUNSAFE; args.assemblyName = (ASSEMBLYNAMEREF) assemblyNameUNSAFE; args.loaderAllocator = NULL; @@ -154,9 +152,7 @@ FCIMPL4(Object*, AppDomainNative::CreateDynamicAssembly, AppDomainBaseObject* re HELPER_METHOD_FRAME_BEGIN_RET_PROTECT((CreateDynamicAssemblyArgsGC&)args); - AppDomain* pAppDomain = ValidateArg(args.refThis); - - Assembly *pAssembly = Assembly::CreateDynamic(pAppDomain, &args); + Assembly *pAssembly = Assembly::CreateDynamic(GetAppDomain(), &args); refRetVal = (ASSEMBLYREF) pAssembly->GetExposedObject(); @@ -166,56 +162,39 @@ FCIMPL4(Object*, AppDomainNative::CreateDynamicAssembly, AppDomainBaseObject* re FCIMPLEND #ifdef FEATURE_APPX - -// -// Keep in sync with bcl\system\appdomain.cs -// -enum -{ - APPX_FLAGS_INITIALIZED = 0x01, - - APPX_FLAGS_APPX_MODEL = 0x02, -}; - // static -INT32 QCALLTYPE AppDomainNative::GetAppXFlags() +BOOL QCALLTYPE AppDomainNative::IsAppXProcess() { QCALL_CONTRACT; - UINT32 flags = APPX_FLAGS_INITIALIZED; + BOOL result; BEGIN_QCALL; - if (AppX::IsAppXProcess()) - { - flags |= APPX_FLAGS_APPX_MODEL; - } + result = AppX::IsAppXProcess(); END_QCALL; - return flags; + return result; } - #endif // FEATURE_APPX -FCIMPL2(Object*, AppDomainNative::GetAssemblies, AppDomainBaseObject* refThisUNSAFE, CLR_BOOL forIntrospection); +FCIMPL0(Object*, AppDomainNative::GetLoadedAssemblies) { FCALL_CONTRACT; struct _gc { PTRARRAYREF AsmArray; - APPDOMAINREF refThis; } gc; gc.AsmArray = NULL; - gc.refThis = (APPDOMAINREF) refThisUNSAFE; HELPER_METHOD_FRAME_BEGIN_RET_PROTECT(gc); MethodTable * pAssemblyClass = MscorlibBinder::GetClass(CLASS__ASSEMBLY); - AppDomain * pApp = ValidateArg(gc.refThis); + AppDomain * pApp = GetAppDomain(); // Allocate an array with as many elements as there are assemblies in this // appdomain. This will usually be correct, but there may be assemblies @@ -294,22 +273,19 @@ FCIMPL1(INT32, AppDomainNative::GetId, AppDomainBaseObject* refThisUNSAFE) } FCIMPLEND -FCIMPL2(Object*, AppDomainNative::IsStringInterned, AppDomainBaseObject* refThisUNSAFE, StringObject* pStringUNSAFE) +FCIMPL1(Object*, AppDomainNative::IsStringInterned, StringObject* pStringUNSAFE) { FCALL_CONTRACT; - APPDOMAINREF refThis = (APPDOMAINREF)ObjectToOBJECTREF(refThisUNSAFE); STRINGREF refString = ObjectToSTRINGREF(pStringUNSAFE); STRINGREF* prefRetVal = NULL; - HELPER_METHOD_FRAME_BEGIN_RET_2(refThis, refString); - - ValidateArg(refThis); + HELPER_METHOD_FRAME_BEGIN_RET_1(refString); if (refString == NULL) COMPlusThrow(kArgumentNullException, W("ArgumentNull_String")); - prefRetVal = refThis->GetDomain()->IsStringInterned(&refString); + prefRetVal = GetAppDomain()->IsStringInterned(&refString); HELPER_METHOD_FRAME_END(); @@ -320,22 +296,19 @@ FCIMPL2(Object*, AppDomainNative::IsStringInterned, AppDomainBaseObject* refThis } FCIMPLEND -FCIMPL2(Object*, AppDomainNative::GetOrInternString, AppDomainBaseObject* refThisUNSAFE, StringObject* pStringUNSAFE) +FCIMPL1(Object*, AppDomainNative::GetOrInternString, StringObject* pStringUNSAFE) { FCALL_CONTRACT; STRINGREF refRetVal = NULL; - APPDOMAINREF refThis = (APPDOMAINREF) refThisUNSAFE; STRINGREF pString = (STRINGREF) pStringUNSAFE; - HELPER_METHOD_FRAME_BEGIN_RET_2(refThis, pString); - - ValidateArg(refThis); + HELPER_METHOD_FRAME_BEGIN_RET_1(pString); if (pString == NULL) COMPlusThrow(kArgumentNullException, W("ArgumentNull_String")); - STRINGREF* stringVal = refThis->GetDomain()->GetOrInternString(&pString); + STRINGREF* stringVal = GetAppDomain()->GetOrInternString(&pString); if (stringVal != NULL) { refRetVal = *stringVal; @@ -346,65 +319,6 @@ FCIMPL2(Object*, AppDomainNative::GetOrInternString, AppDomainBaseObject* refThi } FCIMPLEND - -FCIMPL1(Object*, AppDomainNative::GetDynamicDir, AppDomainBaseObject* refThisUNSAFE) -{ - FCALL_CONTRACT; - - STRINGREF str = NULL; - return OBJECTREFToObject(str); -} -FCIMPLEND - -FCIMPL2(StringObject*, AppDomainNative::nApplyPolicy, AppDomainBaseObject* refThisUNSAFE, AssemblyNameBaseObject* refAssemblyNameUNSAFE) -{ - FCALL_CONTRACT; - - struct _gc - { - APPDOMAINREF refThis; - ASSEMBLYNAMEREF assemblyName; - STRINGREF rv; - } gc; - - gc.refThis = (APPDOMAINREF)refThisUNSAFE; - gc.assemblyName = (ASSEMBLYNAMEREF) refAssemblyNameUNSAFE; - gc.rv = NULL; - - HELPER_METHOD_FRAME_BEGIN_RET_PROTECT(gc); - - AppDomain* pDomain; - pDomain = ValidateArg(gc.refThis); - - if (gc.assemblyName == NULL) - { - COMPlusThrow(kArgumentNullException, W("ArgumentNull_AssemblyName")); - } - if( (gc.assemblyName->GetSimpleName() == NULL) ) - { - COMPlusThrow(kArgumentException, W("Format_StringZeroLength")); - } - Thread *pThread = GetThread(); - CheckPointHolder cph(pThread->m_MarshalAlloc.GetCheckpoint()); //hold checkpoint for autorelease - - // Initialize spec - AssemblySpec spec; - spec.InitializeSpec(&(pThread->m_MarshalAlloc), - &gc.assemblyName, - FALSE /*fIsStringized*/ - ); - - StackSString sDisplayName; - - spec.GetFileOrDisplayName(0,sDisplayName); - - gc.rv = StringObject::NewString(sDisplayName); - - HELPER_METHOD_FRAME_END(); - return (StringObject*)OBJECTREFToObject(gc.rv); -} -FCIMPLEND - FCIMPL1(UINT32, AppDomainNative::GetAppDomainId, AppDomainBaseObject* refThisUNSAFE) { FCALL_CONTRACT; @@ -611,5 +525,3 @@ FCIMPL0(INT64, AppDomainNative::GetLastSurvivedProcessMemorySize) } FCIMPLEND #endif // FEATURE_APPDOMAIN_RESOURCE_MONITORING - - diff --git a/src/vm/appdomainnative.hpp b/src/vm/appdomainnative.hpp index dc1b133d2d..464ced73e6 100644 --- a/src/vm/appdomainnative.hpp +++ b/src/vm/appdomainnative.hpp @@ -23,19 +23,12 @@ public: static AppDomain *ValidateArg(APPDOMAINREF pThis); static FCDECL2(void, SetupFriendlyName, AppDomainBaseObject* refThisUNSAFE, StringObject* strFriendlyNameUNSAFE); - static FCDECL4(Object*, CreateDynamicAssembly, AppDomainBaseObject* refThisUNSAFE, AssemblyNameBaseObject* assemblyNameUNSAFE, StackCrawlMark* stackMark, INT32 access); - static FCDECL2(Object*, GetAssemblies, AppDomainBaseObject* refThisUNSAFE, CLR_BOOL fForIntrospection); - static FCDECL2(Object*, GetOrInternString, AppDomainBaseObject* refThisUNSAFE, StringObject* pStringUNSAFE); - static FCDECL1(void, CreateContext, AppDomainBaseObject *refThisUNSAFE); + static FCDECL3(Object*, CreateDynamicAssembly, AssemblyNameBaseObject* assemblyNameUNSAFE, StackCrawlMark* stackMark, INT32 access); + static FCDECL0(Object*, GetLoadedAssemblies); + static FCDECL1(Object*, GetOrInternString, StringObject* pStringUNSAFE); static void QCALLTYPE SetupBindingPaths(__in_z LPCWSTR wszTrustedPlatformAssemblies, __in_z LPCWSTR wszPlatformResourceRoots, __in_z LPCWSTR wszAppPaths, __in_z LPCWSTR wszAppNiPaths, __in_z LPCWSTR appLocalWinMD); - static FCDECL1(Object*, GetDynamicDir, AppDomainBaseObject* refThisUNSAFE); static FCDECL1(INT32, GetId, AppDomainBaseObject* refThisUNSAFE); - static FCDECL1(void, ForceToSharedDomain, Object* pObjectUNSAFE); - static FCDECL1(LPVOID, GetFusionContext, AppDomainBaseObject* refThis); - static FCDECL2(Object*, IsStringInterned, AppDomainBaseObject* refThis, StringObject* pString); - static FCDECL3(void, UpdateContextProperty, LPVOID fusionContext, StringObject* key, Object* value); - static FCDECL2(StringObject*, nApplyPolicy, AppDomainBaseObject* refThisUNSAFE, AssemblyNameBaseObject* assemblyNameUNSAFE); - static FCDECL2(FC_BOOL_RET, IsFrameworkAssembly, AppDomainBaseObject* refThisUNSAFE, AssemblyNameBaseObject* refAssemblyNameUNSAFE); + static FCDECL1(Object*, IsStringInterned, StringObject* pString); static FCDECL1(UINT32, GetAppDomainId, AppDomainBaseObject* refThisUNSAFE); static FCDECL1(void , PublishAnonymouslyHostedDynamicMethodsAssembly, AssemblyBaseObject * pAssemblyUNSAFE); static void QCALLTYPE SetNativeDllSearchDirectories(__in_z LPCWSTR wszAssembly); @@ -49,15 +42,9 @@ public: static FCDECL0(INT64, GetLastSurvivedProcessMemorySize); #endif // FEATURE_APPDOMAIN_RESOURCE_MONITORING -private: - static INT32 ExecuteAssemblyHelper(Assembly* pAssembly, - BOOL bCreatedConsole, - PTRARRAYREF *pStringArgs); - -public: #ifdef FEATURE_APPX static - INT32 QCALLTYPE GetAppXFlags(); + INT32 QCALLTYPE IsAppXProcess(); #endif }; diff --git a/src/vm/assembly.hpp b/src/vm/assembly.hpp index cd34c707f2..d55d31e88c 100644 --- a/src/vm/assembly.hpp +++ b/src/vm/assembly.hpp @@ -57,7 +57,6 @@ class FriendAssemblyDescriptor; struct CreateDynamicAssemblyArgsGC { - APPDOMAINREF refThis; ASSEMBLYNAMEREF assemblyName; LOADERALLOCATORREF loaderAllocator; }; diff --git a/src/vm/ecalllist.h b/src/vm/ecalllist.h index b056eb9e91..5ee6173137 100644 --- a/src/vm/ecalllist.h +++ b/src/vm/ecalllist.h @@ -112,6 +112,8 @@ FCFuncStart(gStringFuncs) FCFuncElement("IsAscii", COMString::IsAscii) FCFuncElement("SetTrailByte", COMString::FCSetTrailByte) FCFuncElement("TryGetTrailByte", COMString::FCTryGetTrailByte) + FCFuncElement("IsInterned", AppDomainNative::IsStringInterned) + FCFuncElement("Intern", AppDomainNative::GetOrInternString) FCFuncEnd() FCFuncStart(gValueTypeFuncs) @@ -432,22 +434,13 @@ FCFuncStart(gCOMClassWriter) QCFuncElement("DefineCustomAttribute", COMDynamicWrite::DefineCustomAttribute) FCFuncEnd() - FCFuncStart(gCompatibilitySwitchFuncs) FCFuncElement("GetValueInternalCall", CompatibilitySwitch::GetValue) FCFuncEnd() - FCFuncStart(gAppDomainFuncs) - FCFuncElement("IsStringInterned", AppDomainNative::IsStringInterned) - -#ifdef FEATURE_APPX - QCFuncElement("nGetAppXFlags", AppDomainNative::GetAppXFlags) -#endif FCFuncElement("nSetupFriendlyName", AppDomainNative::SetupFriendlyName) - FCFuncElement("nGetAssemblies", AppDomainNative::GetAssemblies) FCFuncElement("GetId", AppDomainNative::GetId) - FCFuncElement("GetOrInternString", AppDomainNative::GetOrInternString) QCFuncElement("nSetupBindingPaths", AppDomainNative::SetupBindingPaths) QCFuncElement("nSetNativeDllSearchDirectories", AppDomainNative::SetNativeDllSearchDirectories) FCFuncElement("PublishAnonymouslyHostedDynamicMethodsAssembly", AppDomainNative::PublishAnonymouslyHostedDynamicMethodsAssembly) @@ -462,6 +455,11 @@ FCFuncStart(gAppDomainFuncs) #endif //FEATURE_APPDOMAIN_RESOURCE_MONITORING FCFuncEnd() +#ifdef FEATURE_APPX +FCFuncStart(gApplicationModelFuncs) + QCFuncElement("IsAppXProcess", AppDomainNative::IsAppXProcess) +FCFuncEnd() +#endif FCFuncStart(gMdUtf8String) FCFuncElement("EqualsCaseSensitive", MdUtf8String::EqualsCaseSensitive) @@ -542,6 +540,7 @@ FCFuncStart(gAssemblyLoadContextFuncs) QCFuncElement("InternalLoadUnmanagedDllFromPath", AssemblyNative::InternalLoadUnmanagedDllFromPath) QCFuncElement("LoadFromStream", AssemblyNative::LoadFromStream) QCFuncElement("GetLoadContextForAssembly", AssemblyNative::GetLoadContextForAssembly) + FCFuncElement("GetLoadedAssemblies", AppDomainNative::GetLoadedAssemblies) #if defined(FEATURE_MULTICOREJIT) QCFuncElement("InternalSetProfileRoot", MultiCoreJITNative::InternalSetProfileRoot) QCFuncElement("InternalStartProfile", MultiCoreJITNative::InternalStartProfile) @@ -1239,6 +1238,9 @@ FCFuncEnd() // The sorting is case-sensitive FCClassElement("AppDomain", "System", gAppDomainFuncs) +#ifdef FEATURE_APPX +FCClassElement("ApplicationModel", "System", gApplicationModelFuncs) +#endif FCClassElement("ArgIterator", "System", gVarArgFuncs) FCClassElement("Array", "System", gArrayFuncs) FCClassElement("ArrayWithOffset", "System.Runtime.InteropServices", gArrayWithOffsetFuncs) |