summaryrefslogtreecommitdiff
path: root/src/vm
diff options
context:
space:
mode:
authorJan Kotas <jkotas@microsoft.com>2018-11-24 07:00:36 -0800
committerGitHub <noreply@github.com>2018-11-24 07:00:36 -0800
commit5be7421c75b2bea031ecac44a9c8e304eb4d1850 (patch)
treececb507532ff0b88cc23d6ee578efb990f7e0ee1 /src/vm
parent55d1363ac36735008dee4d11e10934b8ee94e80b (diff)
downloadcoreclr-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.cpp116
-rw-r--r--src/vm/appdomainnative.hpp23
-rw-r--r--src/vm/assembly.hpp1
-rw-r--r--src/vm/ecalllist.h20
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)