diff options
author | danmosemsft <danmose@microsoft.com> | 2017-02-14 13:43:19 -0800 |
---|---|---|
committer | danmosemsft <danmose@microsoft.com> | 2017-02-14 13:59:08 -0800 |
commit | 1476776a3989817bf5378d583b5cf61dd5957925 (patch) | |
tree | 36798c713d141bd47eddfda11d2b1a2d60197801 | |
parent | c9a217bcabd69a31ec5b81ce1ff6a479dcac1dc2 (diff) | |
download | coreclr-1476776a3989817bf5378d583b5cf61dd5957925.tar.gz coreclr-1476776a3989817bf5378d583b5cf61dd5957925.tar.bz2 coreclr-1476776a3989817bf5378d583b5cf61dd5957925.zip |
Remove never defined FEATURE_INCLUDE_ALL_INTERFACES
46 files changed, 20 insertions, 5650 deletions
diff --git a/src/debug/daccess/dacdbiimpl.cpp b/src/debug/daccess/dacdbiimpl.cpp index 0ac5dc04ea..957ab68205 100644 --- a/src/debug/daccess/dacdbiimpl.cpp +++ b/src/debug/daccess/dacdbiimpl.cpp @@ -4533,29 +4533,6 @@ void DacDbiInterfaceImpl::MarkDebuggerAttached(BOOL fAttached) } -#ifdef FEATURE_INCLUDE_ALL_INTERFACES -// Enumerate all the Connections in the process. -void DacDbiInterfaceImpl::EnumerateConnections(FP_CONNECTION_CALLBACK fpCallback, void * pUserData) -{ - DD_ENTER_MAY_THROW; - - ConnectionNameHashEntry * pConnection; - - HASHFIND hashfind; - - pConnection = CCLRDebugManager::FindFirst(&hashfind); - while (pConnection) - { - DWORD id = pConnection->m_dwConnectionId; - LPCWSTR pName = pConnection->m_pwzName; - - fpCallback(id, pName, pUserData); - - // now get the next connection record - pConnection = CCLRDebugManager::FindNext(&hashfind); - } -} -#endif // Enumerate all threads in the process. diff --git a/src/debug/daccess/enummem.cpp b/src/debug/daccess/enummem.cpp index 16a9ceec11..7e29fcdfc4 100644 --- a/src/debug/daccess/enummem.cpp +++ b/src/debug/daccess/enummem.cpp @@ -1731,11 +1731,7 @@ HRESULT ClrDataAccess::EnumMemoryRegionsWorkerCustom() ECustomDumpFlavor eFlavor; -#ifdef FEATURE_INCLUDE_ALL_INTERFACES - eFlavor = CCLRErrorReportingManager::g_ECustomDumpFlavor; -#else eFlavor = DUMP_FLAVOR_Default; -#endif m_enumMemFlags = CLRDATA_ENUM_MEM_MINI; diff --git a/src/debug/di/process.cpp b/src/debug/di/process.cpp index 927b438aff..4c32641290 100644 --- a/src/debug/di/process.cpp +++ b/src/debug/di/process.cpp @@ -4491,12 +4491,6 @@ void CordbProcess::GetModulesInLoadOrder( // static void CordbProcess::CountConnectionsCallback(DWORD id, LPCWSTR pName, void * pUserData) { -#if defined(FEATURE_INCLUDE_ALL_INTERFACES) - EnumerateConnectionsData * pCallbackData = reinterpret_cast<EnumerateConnectionsData *>(pUserData); - INTERNAL_DAC_CALLBACK(pCallbackData->m_pThis); - - pCallbackData->m_uIndex += 1; -#endif // FEATURE_INCLUDE_ALL_INTERFACES } //--------------------------------------------------------------------------------------- @@ -4513,20 +4507,6 @@ void CordbProcess::CountConnectionsCallback(DWORD id, LPCWSTR pName, void * pUse // static void CordbProcess::EnumerateConnectionsCallback(DWORD id, LPCWSTR pName, void * pUserData) { -#if defined(FEATURE_INCLUDE_ALL_INTERFACES) - EnumerateConnectionsData * pCallbackData = reinterpret_cast<EnumerateConnectionsData *>(pUserData); - INTERNAL_DAC_CALLBACK(pCallbackData->m_pThis); - - // get the next entry in the array to be filled in - EnumerateConnectionsEntry * pEntry = &(pCallbackData->m_pEntryArray[pCallbackData->m_uIndex]); - - // initialize the StringCopyHolder in the entry and copy over the name of the connection - new (&(pEntry->m_pName)) StringCopyHolder; - pEntry->m_pName.AssignCopy(pName); - pEntry->m_dwID = id; - - pCallbackData->m_uIndex += 1; -#endif // FEATURE_INCLUDE_ALL_INTERFACES } //--------------------------------------------------------------------------------------- @@ -4538,51 +4518,6 @@ void CordbProcess::QueueFakeConnectionEvents() { PUBLIC_API_ENTRY_FOR_SHIM(this); -#ifdef FEATURE_INCLUDE_ALL_INTERFACES - EnumerateConnectionsData callbackData; - callbackData.m_pThis = this; - callbackData.m_uIndex = 0; - callbackData.m_pEntryArray = NULL; - - UINT32 uSize = 0; - - // We must take the process lock before calling DAC primitives which will call back into DBI. - // On the other hand, we must NOT be holding the lock when we call out to the shim. - // So introduce a new scope here. - { - RSLockHolder lockHolder(GetProcessLock()); - GetDAC()->EnumerateConnections(CountConnectionsCallback, &callbackData); - - // save the size for later - uSize = callbackData.m_uIndex; - - // Allocate the array to store the connections. This array will be released when the dtor runs. - callbackData.m_uIndex = 0; - callbackData.m_pEntryArray = new EnumerateConnectionsEntry[uSize]; - GetDAC()->EnumerateConnections(EnumerateConnectionsCallback, &callbackData); - _ASSERTE(uSize == callbackData.m_uIndex); - } - - { - // V2 would send CreateConnection for all connections, and then ChangeConnection - // for all connections. - PUBLIC_CALLBACK_IN_THIS_SCOPE0_NO_LOCK(this); - for (UINT32 i = 0; i < uSize; i++) - { - EnumerateConnectionsEntry * pEntry = &(callbackData.m_pEntryArray[i]); - GetShim()->GetShimCallback()->CreateConnection( - this, - (CONNID)pEntry->m_dwID, - const_cast<WCHAR *>((const WCHAR *)(pEntry->m_pName))); - } - - for (UINT32 i = 0; i < uSize; i++) - { - EnumerateConnectionsEntry * pEntry = &(callbackData.m_pEntryArray[i]); - GetShim()->GetShimCallback()->ChangeConnection(this, (CONNID)pEntry->m_dwID); - } - } -#endif } // diff --git a/src/debug/inc/dacdbiinterface.h b/src/debug/inc/dacdbiinterface.h index 569ccbaca7..4077ad426a 100644 --- a/src/debug/inc/dacdbiinterface.h +++ b/src/debug/inc/dacdbiinterface.h @@ -979,9 +979,6 @@ public: // V2 Attach would provide faked up CreateConnection, ChangeConnection events on attach. // This enumeration ability allows V3 to emulate that behavior. // -#ifdef FEATURE_INCLUDE_ALL_INTERFACES - virtual void EnumerateConnections(FP_CONNECTION_CALLBACK fpCallback, CALLBACK_DATA pUserData) = 0; -#endif //FEATURE_INCLUDE_ALL_INTERFACES // // Enumerate all threads in the target. diff --git a/src/inc/MSCOREE.IDL b/src/inc/MSCOREE.IDL index e543124304..97e2f2aca6 100644 --- a/src/inc/MSCOREE.IDL +++ b/src/inc/MSCOREE.IDL @@ -19,7 +19,7 @@ cpp_quote("") // Interface descriptions // import "unknwn.idl"; -#if defined(FEATURE_INCLUDE_ALL_INTERFACES) || defined(FEATURE_WINDOWSPHONE) +#if defined(FEATURE_WINDOWSPHONE) import "gchost.idl"; #endif import "ivalidator.idl"; @@ -37,21 +37,10 @@ const char* CLR_ASSEMBLY_MAJOR_VERSION = VER_ASSEMBLYMAJORVERSION; const char* CLR_ASSEMBLY_MINOR_VERSION = VER_ASSEMBLYMINORVERSION; const char* CLR_ASSEMBLY_BUILD_VERSION = VER_ASSEMBLYBUILD; -#ifdef FEATURE_INCLUDE_ALL_INTERFACES -// LIBID mscoree -cpp_quote("EXTERN_GUID(LIBID_mscoree, 0x5477469e,0x83b1,0x11d2,0x8b,0x49,0x00,0xa0,0xc9,0xb7,0xc9,0xc4);") - -// CLSID CorRuntimeHost : uuid(CB2F6723-AB3A-11d2-9C40-00C04FA30A3E) -cpp_quote("EXTERN_GUID(CLSID_CorRuntimeHost, 0xcb2f6723, 0xab3a, 0x11d2, 0x9c, 0x40, 0x00, 0xc0, 0x4f, 0xa3, 0x0a, 0x3e);") -#endif // FEATURE_INCLUDE_ALL_INTERFACES // CLSID TypeNameFactory : uuid{B81FF171-20F3-11d2-8DCC-00A0C9B00525} cpp_quote("EXTERN_GUID(CLSID_TypeNameFactory, 0xB81FF171, 0x20F3, 0x11d2, 0x8d, 0xcc, 0x00, 0xa0, 0xc9, 0xb0, 0x05, 0x25);") -#ifdef FEATURE_INCLUDE_ALL_INTERFACES -// CLSID CLRRuntimeHost : uuid(90F1A06E-7712-4762-86B5-7A5EBA6BDB02) -cpp_quote("EXTERN_GUID(CLSID_CLRRuntimeHost, 0x90F1A06E, 0x7712, 0x4762, 0x86, 0xB5, 0x7A, 0x5E, 0xBA, 0x6B, 0xDB, 0x02);") -#endif // FEATURE_INCLUDE_ALL_INTERFACES #ifdef FEATURE_COMINTEROP // CLSID ComCallUnmarshal @@ -61,83 +50,12 @@ cpp_quote("EXTERN_GUID(CLSID_ComCallUnmarshal, 0x3F281000,0xE95A,0x11d2,0x88,0x6 cpp_quote("EXTERN_GUID(CLSID_ComCallUnmarshalV4, 0x45fb4600,0xe6e8,0x4928,0xb2,0x5e,0x50,0x47,0x6f,0xf7,0x94,0x25);") #endif // FEATURE_COMINTEROP -#ifdef FEATURE_INCLUDE_ALL_INTERFACES -// IID IObjectHandle : uuid(C460E2B4-E199-412a-8456-84DC3E4838C3) -cpp_quote("EXTERN_GUID(IID_IObjectHandle, 0xc460e2b4, 0xe199, 0x412a, 0x84, 0x56, 0x84, 0xdc, 0x3e, 0x48, 0x38, 0xc3);") -#endif // FEATURE_INCLUDE_ALL_INTERFACES #ifdef FEATURE_COMINTEROP // IID IManagedObject : uuid(C3FCC19E-A970-11d2-8B5A-00A0C9B7C9C4) cpp_quote("EXTERN_GUID(IID_IManagedObject, 0xc3fcc19e, 0xa970, 0x11d2, 0x8b, 0x5a, 0x00, 0xa0, 0xc9, 0xb7, 0xc9, 0xc4);") #endif // FEATURE_COMINTEROP -#ifdef FEATURE_INCLUDE_ALL_INTERFACES -// IID IApartmentCallback : uuid(178E5337-1528-4591-B1C9-1C6E484686D8) -cpp_quote("EXTERN_GUID(IID_IApartmentCallback, 0x178e5337, 0x1528, 0x4591, 0xb1, 0xc9, 0x1c, 0x6e, 0x48, 0x46, 0x86, 0xd8);") - -// IID ICatalogServices : uuid(04C6BE1E-1DB1-4058-AB7A-700CCCFBF254) -cpp_quote("EXTERN_GUID(IID_ICatalogServices, 0x04c6be1e, 0x1db1, 0x4058, 0xab, 0x7a, 0x70, 0x0c, 0xcc, 0xfb, 0xf2, 0x54);") - -// IID ICorRuntimeHost : uuid(CB2F6722-AB3A-11d2-9C40-00C04FA30A3E) -cpp_quote("EXTERN_GUID(IID_ICorRuntimeHost, 0xcb2f6722, 0xab3a, 0x11d2, 0x9c, 0x40, 0x00, 0xc0, 0x4f, 0xa3, 0x0a, 0x3e);") - -// IID ICorThreadpool : uuid(84680D3A-B2C1-46e8-ACC2-DBC0A359159A) -cpp_quote("EXTERN_GUID(IID_ICorThreadpool, 0x84680D3A, 0xB2C1, 0x46e8, 0xAC, 0xC2, 0xDB, 0xC0, 0xA3, 0x59, 0x15, 0x9A);") - -// IID_ICLRDebugManager : uuid(00DCAEC6-2AC0-43a9-ACF9-1E36C139B10D) -cpp_quote("EXTERN_GUID(IID_ICLRDebugManager, 0xdcaec6, 0x2ac0, 0x43a9, 0xac, 0xf9, 0x1e, 0x36, 0xc1, 0x39, 0xb1, 0xd);") - -// IID IHostMemoryNeededCallback : uuid(47EB8E57-0846-4546-AF76-6F42FCFC2649) -cpp_quote("EXTERN_GUID(IID_IHostMemoryNeededCallback, 0x47EB8E57, 0x0846, 0x4546, 0xAF, 0x76, 0x6F, 0x42, 0xFC, 0xFC, 0x26, 0x49);") - -// IID IHostMalloc : uuid(1831991C-CC53-4A31-B218-04E910446479) -cpp_quote("EXTERN_GUID(IID_IHostMalloc, 0x1831991C, 0xCC53, 0x4A31, 0xB2, 0x18, 0x04, 0xE9, 0x10, 0x44, 0x64, 0x79);") - -// IID IHostMemoryManager : uuid(7BC698D1-F9E3-4460-9CDE-D04248E9FA25) -cpp_quote("EXTERN_GUID(IID_IHostMemoryManager, 0x7BC698D1, 0xF9E3, 0x4460, 0x9C, 0xDE, 0xD0, 0x42, 0x48, 0xE9, 0xFA, 0x25);") - -// IID ICLRTask : uuid(28E66A4A-9906-4225-B231-9187C3EB8611) -cpp_quote("EXTERN_GUID(IID_ICLRTask, 0x28E66A4A, 0x9906, 0x4225, 0xB2, 0x31, 0x91, 0x87, 0xc3, 0xeb, 0x86, 0x11);") - -// IID ICLRTask2 : uuid(28E66A4A-9906-4225-B231-9187C3EB8612) -cpp_quote("EXTERN_GUID(IID_ICLRTask2, 0x28E66A4A, 0x9906, 0x4225, 0xB2, 0x31, 0x91, 0x87, 0xc3, 0xeb, 0x86, 0x12);") - -// IID IHostTask : uuid(C2275828-C4B1-4B55-82C9-92135F74DF1A) -cpp_quote("EXTERN_GUID(IID_IHostTask, 0xC2275828, 0xC4B1, 0x4B55, 0x82, 0xC9, 0x92, 0x13, 0x5F, 0x74, 0xDF, 0x1A);") - -// IID ICLRTaskManager : uuid(4862efbe-3ae5-44f8-8feb-346190ee8a34) -cpp_quote("EXTERN_GUID(IID_ICLRTaskManager, 0x4862efbe, 0x3ae5, 0x44f8, 0x8F, 0xEB, 0x34, 0x61, 0x90, 0xeE, 0x8A, 0x34);") - -// IID IHostTaskManager : uuid(997FF24C-43B7-4352-8667-0DC04FAFD354) -cpp_quote("EXTERN_GUID(IID_IHostTaskManager, 0x997FF24C, 0x43B7, 0x4352, 0x86, 0x67, 0x0D, 0xC0, 0x4F, 0xAF, 0xD3, 0x54);") - -// IID IHostThreadpoolManager : uuid(983D50E2-CB15-466B-80FC-845DC6E8C5FD) -cpp_quote("EXTERN_GUID(IID_IHostThreadpoolManager, 0x983D50E2, 0xCB15, 0x466B, 0x80, 0xFC, 0x84, 0x5D, 0xC6, 0xE8, 0xC5, 0xFD);") - -// IID_ICLRIOCompletionManager : uuid(2D74CE86-B8D6-4C84-B3A7-9768933B3C12) -cpp_quote("EXTERN_GUID(IID_ICLRIoCompletionManager, 0x2D74CE86, 0xB8D6, 0x4C84, 0xB3, 0xA7, 0x97, 0x68, 0x93, 0x3B, 0x3C, 0x12);") - -// IID_IHostIOCompletionManager : uuid(8BDE9D80-EC06-41D6-83E6-22580EFFCC20) -cpp_quote("EXTERN_GUID(IID_IHostIoCompletionManager, 0x8BDE9D80, 0xEC06, 0x41D6, 0x83, 0xE6, 0x22, 0x58, 0x0E, 0xFF, 0xCC, 0x20);") - -// IID IHostSyncManager : uuid(234330c7-5f10-4f20-9615-5122dab7a0ac) -cpp_quote("EXTERN_GUID(IID_IHostSyncManager, 0x234330c7, 0x5f10, 0x4f20, 0x96, 0x15, 0x51, 0x22, 0xda, 0xb7, 0xa0, 0xac);") - -// IID IHostCrst : uuid(6DF710A6-26A4-4a65-8CD5-7237B8BDA8DC) -cpp_quote("EXTERN_GUID(IID_IHostCrst, 0x6DF710A6, 0x26A4, 0x4a65, 0x8c, 0xd5, 0x72, 0x37, 0xb8, 0xbd, 0xa8, 0xdc);") - -// IID IHostAutoEvent : uuid(50B0CFCE-4063-4278-9673-E5CB4ED0BDB8) -cpp_quote("EXTERN_GUID(IID_IHostAutoEvent, 0x50B0CFCE, 0x4063, 0x4278, 0x96, 0x73, 0xe5, 0xcb, 0x4e, 0xd0, 0xbd, 0xb8);") - -// IID IHostManualEvent : uuid(1BF4EC38-AFFE-4fb9-85A6-525268F15B54) -cpp_quote("EXTERN_GUID(IID_IHostManualEvent, 0x1BF4EC38, 0xAFFE, 0x4fb9, 0x85, 0xa6, 0x52, 0x52, 0x68, 0xf1, 0x5b, 0x54);") - -// IID IHostSemaphore : uuid(855efd47-cc09-463a-a97d-16acab882661) -cpp_quote("EXTERN_GUID(IID_IHostSemaphore, 0x855efd47, 0xcc09, 0x463a, 0xa9, 0x7d, 0x16, 0xac, 0xab, 0x88, 0x26, 0x61);") - -// IID ICLRSyncManager : uuid(55FF199D-AD21-48f9-A16C-F24EBBB8727D) -cpp_quote("EXTERN_GUID(IID_ICLRSyncManager, 0x55FF199D, 0xAD21, 0x48f9, 0xa1, 0x6c, 0xf2, 0x4e, 0xbb, 0xb8, 0x72, 0x7d);") -#endif // FEATURE_INCLUDE_ALL_INTERFACES #ifdef FEATURE_APPDOMAIN_RESOURCE_MONITORING // IID ICLRAppDomainResourceMonitor: uuid(C62DE18C-2E23-4AEA-8423-B40C1FC59EAE) @@ -147,33 +65,20 @@ cpp_quote("EXTERN_GUID(IID_ICLRAppDomainResourceMonitor, 0XC62DE18C, 0X2E23, 0X4 // {7D290010-D781-45da-A6F8-AA5D711A730E} cpp_quote("EXTERN_GUID(IID_ICLRPolicyManager, 0x7D290010, 0xD781, 0x45da, 0xA6, 0xF8, 0xAA, 0x5D, 0x71, 0x1A, 0x73, 0x0E);") -#if defined(FEATURE_INCLUDE_ALL_INTERFACES) || defined (FEATURE_WINDOWSPHONE) +#if defined (FEATURE_WINDOWSPHONE) // IID_ICLRGCManager : uuid(54D9007E-A8E2-4885-B7BF-F998DEEE4F2A) cpp_quote("EXTERN_GUID(IID_ICLRGCManager, 0x54D9007E, 0xA8E2, 0x4885, 0xB7, 0xBF, 0xF9, 0x98, 0xDE, 0xEE, 0x4F, 0x2A);") // IID_ICLRGCManager2 : uuid(0603B793-A97A-4712-9CB4-0CD1C74C0F7C) cpp_quote("EXTERN_GUID(IID_ICLRGCManager2, 0x0603B793, 0xA97A, 0x4712, 0x9C, 0xB4, 0x0C, 0xD1, 0xC7, 0x4C, 0x0F, 0x7C);") // IID_ICLRErrorReportingManager : uuid(980D2F1A-BF79-4c08-812A-BB9778928F78) cpp_quote("EXTERN_GUID(IID_ICLRErrorReportingManager, 0x980d2f1a, 0xbf79, 0x4c08, 0x81, 0x2a, 0xbb, 0x97, 0x78, 0x92, 0x8f, 0x78);") -#endif // FEATURE_INCLUDE_ALL_INTERFACES || FEATURE_WINDOWSPHONE +#endif // FEATURE_WINDOWSPHONE #ifdef FEATURE_WINDOWSPHONE // IID_ICLRErrorReportingManager2 : uuid(C68F63B1-4D8B-4E0B-9564-9D2EFE2FA18C) cpp_quote("EXTERN_GUID(IID_ICLRErrorReportingManager2, 0xc68f63b1, 0x4d8b, 0x4e0b, 0x95, 0x64, 0x9d, 0x2e, 0xfe, 0x2f, 0xa1, 0x8c);") #endif // FEATURE_WINDOWSPHONE -#ifdef FEATURE_INCLUDE_ALL_INTERFACES -// {7AE49844-B1E3-4683-BA7C-1E8212EA3B79} -cpp_quote("EXTERN_GUID(IID_IHostPolicyManager, 0x7AE49844, 0xB1E3, 0x4683, 0xBA, 0x7C, 0x1E, 0x82, 0x12, 0xEA, 0x3B, 0x79);") - -// IID IHostGCManager : uuid(5D4EC34E-F248-457B-B603-255FAABA0D21) -cpp_quote("EXTERN_GUID(IID_IHostGCManager, 0x5D4EC34E, 0xF248, 0x457B, 0xB6, 0x03, 0x25, 0x5F, 0xAA, 0xBA, 0x0D, 0x21);") - -// {607BE24B-D91B-4E28-A242-61871CE56E35} -cpp_quote("EXTERN_GUID(IID_IActionOnCLREvent, 0x607BE24B, 0xD91B, 0x4E28, 0xA2, 0x42, 0x61, 0x87, 0x1C, 0xE5, 0x6E, 0x35);") - -// {1D0E0132-E64F-493D-9260-025C0E32C175} -cpp_quote("EXTERN_GUID(IID_ICLROnEventManager, 0x1D0E0132, 0xE64F, 0x493D, 0x92, 0x60, 0x02, 0x5C, 0x0E, 0x32, 0xC1, 0x75);") -#endif // FEATURE_INCLUDE_ALL_INTERFACES // IID ICLRRuntimeHost: uuid(90F1A06C-7712-4762-86B5-7A5EBA6BDB02) cpp_quote("EXTERN_GUID(IID_ICLRRuntimeHost, 0x90F1A06C, 0x7712, 0x4762, 0x86, 0xB5, 0x7A, 0x5E, 0xBA, 0x6B, 0xDB, 0x02);") @@ -184,46 +89,10 @@ cpp_quote("EXTERN_GUID(IID_ICLRRuntimeHost2, 0x712AB73F, 0x2C22, 0x4807, 0xAD, 0 // IID IID_ICLRExecutionManager: uuid(1000A3E7-B420-4620-AE30-FB19B587AD1D) cpp_quote("EXTERN_GUID(IID_ICLRExecutionManager, 0x1000A3E7, 0xB420, 0x4620, 0xAE, 0x30, 0xFB, 0x19, 0xB5, 0x87, 0xAD, 0x1D);") -#ifdef FEATURE_INCLUDE_ALL_INTERFACES -// IID ICLRHostProtectionManager : uuid{89F25F5C-CEEF-43e1-9CFA-A68CE863AAAC} -cpp_quote("EXTERN_GUID(IID_ICLRHostProtectionManager, 0x89f25f5c, 0xceef, 0x43e1, 0x9c, 0xfa, 0xa6, 0x8c, 0xe8, 0x63, 0xaa, 0xac);") - -// IID IHostAssemblyStore : uuid(7B102A88-3F7F-496D-8FA2-C35374E01AF3) -cpp_quote("EXTERN_GUID(IID_IHostAssemblyStore, 0x7b102a88, 0x3f7f, 0x496d, 0x8f, 0xa2, 0xc3, 0x53, 0x74, 0xe0, 0x1a, 0xf3);") - -// IID IHostAssemblyManager : uuid(613dabd7-62b2-493e-9e65-c1e32a1e0c5e) -cpp_quote("EXTERN_GUID(IID_IHostAssemblyManager, 0x613dabd7, 0x62b2, 0x493e, 0x9e, 0x65, 0xc1, 0xe3, 0x2a, 0x1e, 0x0c, 0x5e);") - -// IID IHostSecurityManager : uuid{75AD2468-A349-4D02-A764-76A68AEE0C4F} -cpp_quote("EXTERN_GUID(IID_IHostSecurityManager, 0x75ad2468, 0xa349, 0x4d02, 0xa7, 0x64, 0x76, 0xa6, 0x8a, 0xee, 0x0c, 0x4f);") - -// IID IHostSecurityContext : uuid{7E573CE4-0343-4423-98D7-6318348A1D3C} -cpp_quote("EXTERN_GUID(IID_IHostSecurityContext, 0x7e573ce4, 0x343, 0x4423, 0x98, 0xd7, 0x63, 0x18, 0x34, 0x8a, 0x1d, 0x3c);") - -// IID ICLRAssemblyIdentityManager: uuid(15f0a9da-3ff6-4393-9da9-fdfd284e6972) -cpp_quote("EXTERN_GUID(IID_ICLRAssemblyIdentityManager, 0x15f0a9da, 0x3ff6, 0x4393, 0x9d, 0xa9, 0xfd, 0xfd, 0x28, 0x4e, 0x69, 0x72);") - -// IID ICLRDomainManager: uuid(270D00A2-8E15-4d0b-ADEB-37BC3E47DF77) -cpp_quote("EXTERN_GUID(IID_ICLRDomainManager, 0x270d00a2, 0x8e15, 0x4d0b, 0xad, 0xeb, 0x37, 0xbc, 0x3e, 0x47, 0xdf, 0x77);") - -#endif // FEATURE_INCLUDE_ALL_INTERFACES // IID ITypeName : uuid{B81FF171-20F3-11d2-8DCC-00A0C9B00522} cpp_quote("EXTERN_GUID(IID_ITypeName, 0xB81FF171, 0x20F3, 0x11d2, 0x8d, 0xcc, 0x00, 0xa0, 0xc9, 0xb0, 0x05, 0x22);") -#ifdef FEATURE_INCLUDE_ALL_INTERFACES -// IID ICLRAssemblyReferenceList: uuid(1b2c9750-2e66-4bda-8b44-0a642c5cd733) -cpp_quote("EXTERN_GUID(IID_ICLRAssemblyReferenceList, 0x1b2c9750, 0x2e66, 0x4bda, 0x8b, 0x44, 0x0a, 0x64, 0x2c, 0x5c, 0xd7, 0x33);") - -// IID ICLRReferenceAssemblyEnum: uuid(d509cb5d-cf32-4876-ae61-67770cf91973) -cpp_quote("EXTERN_GUID(IID_ICLRReferenceAssemblyEnum, 0xd509cb5d, 0xcf32, 0x4876, 0xae, 0x61, 0x67, 0x77, 0x0c, 0xf9, 0x19, 0x73);") - -// IID ICLRProbingAssemblyEnum: uuid(d0c5fb1f-416b-4f97-81f4-7ac7dc24dd5d) -cpp_quote("EXTERN_GUID(IID_ICLRProbingAssemblyEnum, 0xd0c5fb1f, 0x416b, 0x4f97, 0x81, 0xf4, 0x7a, 0xc7, 0xdc, 0x24, 0xdd, 0x5d);") - -// IID ICLRHostBindingPolicyManager: uuid(4b3545e7-1856-48c9-a8ba-24b21a753c09) -cpp_quote("EXTERN_GUID(IID_ICLRHostBindingPolicyManager, 0x4b3545e7, 0x1856, 0x48c9, 0xa8, 0xba, 0x24, 0xb2, 0x1a, 0x75, 0x3c, 0x09);") -#endif // FEATURE_INCLUDE_ALL_INTERFACES // IID ITypeNameBuilder : uuid{B81FF171-20F3-11d2-8DCC-00A0C9B00523} cpp_quote("EXTERN_GUID(IID_ITypeNameBuilder, 0xB81FF171, 0x20F3, 0x11d2, 0x8d, 0xcc, 0x00, 0xa0, 0xc9, 0xb0, 0x05, 0x23);") @@ -334,154 +203,6 @@ typedef enum #pragma midl_echo("STDAPI GetRequestedRuntimeVersionForCLSID(REFCLSID rclsid, _Out_writes_opt_(cchBuffer) LPWSTR pVersion, DWORD cchBuffer, _Out_opt_ DWORD* dwLength, CLSID_RESOLUTION_FLAGS dwResolutionFlags);") -#ifdef FEATURE_INCLUDE_ALL_INTERFACES -//***************************************************************************** -// Interface for Object Handles -//***************************************************************************** -[ - object, - oleautomation, - uuid(C460E2B4-E199-412a-8456-84DC3E4838C3), - helpstring("Object Handle Interface"), - pointer_default(unique) -] -interface IObjectHandle : IUnknown -{ - HRESULT Unwrap([out, retval] VARIANT *ppv); -}; - -//***************************************************************************** -// Interface for Setting runtime configuration -//***************************************************************************** -[ - uuid(5C2B07A7-1E98-11d3-872F-00C04F79ED0D), - version(1.0), - helpstring("Application Domain call back"), - pointer_default(unique), - local -] -interface IAppDomainBinding : IUnknown -{ - // <TODO>TODO: this should return an AppDomain interface - // The event is invoked everytime a domain is created </TODO> - HRESULT OnAppDomain([in] IUnknown* pAppdomain); -} - - -//***************************************************************************** -// Interface for participating in the scheduling of threads that would -// otherwise be blocked for a GC -//***************************************************************************** -[ - uuid(F31D1788-C397-4725-87A5-6AF3472C2791), - version(1.0), - helpstring("Control over threads blocked in GC"), - pointer_default(unique), - local -] -interface IGCThreadControl : IUnknown -{ - // Notification that the thread making the call is about to block, perhaps for - // a GC or other suspension. This gives the host an opportunity to re-schedule - // the thread for unmanaged tasks. - HRESULT ThreadIsBlockingForSuspension(); - - // Notification that the runtime is beginning a thread suspension for a GC or - // other suspension. Do not reschedule this thread! - HRESULT SuspensionStarting(); - - // Notification that the runtime is resuming threads after a GC or other - // suspension. Do not reschedule this thread! - HRESULT SuspensionEnding(DWORD Generation); -} - -//***************************************************************************** -// Interface for GC to request change in virtual memory limit -//***************************************************************************** -[ - uuid(5513D564-8374-4cb9-AED9-0083F4160A1D), - version(1.1), - helpstring("Request change in virtual memory for GC"), - pointer_default(unique), - local -] -interface IGCHostControl : IUnknown -{ - // Request to increase the virtual memeory limit of the runtime (GC heap) - HRESULT RequestVirtualMemLimit([in] SIZE_T sztMaxVirtualMemMB, - [in, out] SIZE_T* psztNewMaxVirtualMemMB); -} - -//***************************************************************************** -// Interface for accessing threadpool -//***************************************************************************** -cpp_quote("#ifdef __midl") -typedef VOID (__stdcall *WAITORTIMERCALLBACK)(PVOID, BOOL); -cpp_quote("#endif // __midl") - -cpp_quote("#ifdef __midl") -typedef DWORD (__stdcall *LPTHREAD_START_ROUTINE)(LPVOID lpThreadParameter); -typedef VOID (*LPOVERLAPPED_COMPLETION_ROUTINE)(DWORD dwErrorCode, - DWORD dwNumberOfBytesTransfered, - LPVOID lpOverlapped); -cpp_quote("#endif // __midl") - -// Callback function for cleaning up TLS -typedef VOID (__stdcall *PTLS_CALLBACK_FUNCTION)(PVOID); - -[ - uuid(84680D3A-B2C1-46e8-ACC2-DBC0A359159A), - version(1.0), - helpstring("Threadpool interface"), - pointer_default(unique), - local -] -interface ICorThreadpool : IUnknown -{ - HRESULT CorRegisterWaitForSingleObject([in] HANDLE* phNewWaitObject, - [in] HANDLE hWaitObject, - [in] WAITORTIMERCALLBACK Callback, - [in] PVOID Context, - [in] ULONG timeout, - [in] BOOL executeOnlyOnce, - [out] BOOL* result ); - - HRESULT CorUnregisterWait([in] HANDLE hWaitObject,[in] HANDLE CompletionEvent,[out] BOOL* result); - - HRESULT CorQueueUserWorkItem([in] LPTHREAD_START_ROUTINE Function, - [in] PVOID Context, - [in] BOOL executeOnlyOnce, - [out] BOOL* result ); - - - HRESULT CorCreateTimer([in] HANDLE* phNewTimer, - [in] WAITORTIMERCALLBACK Callback, - [in] PVOID Parameter, - [in] DWORD DueTime, - [in] DWORD Period, - [out] BOOL* result); - - HRESULT CorChangeTimer([in] HANDLE Timer, [in] ULONG DueTime, [in] ULONG Period, [out] BOOL* result); - - HRESULT CorDeleteTimer([in] HANDLE Timer, [in] HANDLE CompletionEvent, [out] BOOL* result); - - HRESULT CorBindIoCompletionCallback([in] HANDLE fileHandle, [in] LPOVERLAPPED_COMPLETION_ROUTINE callback); - - HRESULT CorCallOrQueueUserWorkItem([in] LPTHREAD_START_ROUTINE Function, - [in] PVOID Context, - [out] BOOL* result ); - HRESULT CorSetMaxThreads([in] DWORD MaxWorkerThreads, - [in] DWORD MaxIOCompletionThreads); - - HRESULT CorGetMaxThreads([out] DWORD *MaxWorkerThreads, - [out] DWORD *MaxIOCompletionThreads); - - HRESULT CorGetAvailableThreads([out] DWORD *AvailableWorkerThreads, - [out] DWORD *AvailableIOCompletionThreads); - - -} -#endif // FEATURE_INCLUDE_ALL_INTERFACES cpp_quote("EXTERN_GUID(IID_IDebuggerThreadControl, 0x23d86786, 0x0bb5, 0x4774, 0x8f, 0xb5, 0xe3, 0x52, 0x2a, 0xdd, 0x62, 0x46);") [ @@ -527,124 +248,12 @@ interface IDebuggerInfo : IUnknown HRESULT IsDebuggerAttached([out] BOOL *pbAttached); } -#ifdef FEATURE_INCLUDE_ALL_INTERFACES -// {5C2B07A5-1E98-11d3-872F-00C04F79ED0D} -cpp_quote("EXTERN_GUID(IID_ICorConfiguration, 0x5c2b07a5, 0x1e98, 0x11d3, 0x87, 0x2f, 0x00, 0xc0, 0x4f, 0x79, 0xed, 0x0d);") -[ - uuid(5C2B07A5-1E98-11d3-872F-00C04F79ED0D), - version(1.0), - helpstring("Common Language Runtime Configuration Interface"), - pointer_default(unique), - local -] -interface ICorConfiguration : IUnknown -{ - // Set the callback for scheduling threads for non-runtime tasks when they - // would otherwise be blocked for a GC. - HRESULT SetGCThreadControl([in] IGCThreadControl* pGCThreadControl); - - // Set the callback for gc to request a change in virtual memmory limit - HRESULT SetGCHostControl([in] IGCHostControl* pGCHostControl); - - // Set the callback interface that the debugging services will - // call as Runtime threads are blocked and un-blocked for - // debugging. - HRESULT SetDebuggerThreadControl([in] IDebuggerThreadControl* pDebuggerThreadControl); - - // The host may indicate to the debugging services that a - // particular thread should be allowed to continue to execute - // while the debugger has an application stopped during - // managed/unmanaged debugging scenarios. The specified thread - // will not be allowed to run managed code, or to enter the - // Runtime in any way. An example of such a thread would be an - // in-process thread to support legacy script debuggers. - HRESULT AddDebuggerSpecialThread([in] DWORD dwSpecialThreadId); -} -#endif // FEATURE_INCLUDE_ALL_INTERFACES //***************************************************************************** // Interface for hosting mscoree //***************************************************************************** typedef void* HDOMAINENUM; -#ifdef FEATURE_INCLUDE_ALL_INTERFACES -[ - uuid(CB2F6722-AB3A-11d2-9C40-00C04FA30A3E), - version(1.0), - helpstring("Common Language Runtime Hosting Interface"), - pointer_default(unique), - local -] -interface ICorRuntimeHost : IUnknown -{ - HRESULT CreateLogicalThreadState(); - HRESULT DeleteLogicalThreadState(); - HRESULT SwitchInLogicalThreadState( - [in] DWORD *pFiberCookie); // [in] Cookie that indicates the fiber to use. - - HRESULT SwitchOutLogicalThreadState( - [out] DWORD **pFiberCookie); // [out] Cookie that indicates the fiber being switched out. - - HRESULT LocksHeldByLogicalThread( // Return code. - [out] DWORD *pCount // [out] Number of locks that the current thread holds. - ); - - HRESULT MapFile( - [in] HANDLE hFile, // [in] HANDLE for file - [out] HMODULE* hMapAddress); // [out] HINSTANCE for mapped file - - //================================================================= - // - // New hosting methods - // - // Returns an object for configuring the runtime prior to - // it starting. If the runtime has been initialized this - // routine returns an error. See ICorConfiguration. - HRESULT GetConfiguration([out] ICorConfiguration** pConfiguration); - - // Starts the runtime. This is equivalent to CoInitializeCor(); - HRESULT Start(); - - // Terminates the runtime, This is equivalent CoUninitializeCor(); - HRESULT Stop(); - - // Creates a domain in the runtime. The identity array is - // a pointer to an array TYPE containing IIdentity objects defining - // the security identity. - HRESULT CreateDomain([in] LPCWSTR pwzFriendlyName, - [in] IUnknown* pIdentityArray, // Optional - [out] IUnknown** pAppDomain); - - // Returns the default domain. - HRESULT GetDefaultDomain([out] IUnknown** pAppDomain); - - - // Enumerate currently existing domains. - HRESULT EnumDomains([out] HDOMAINENUM *hEnum); - - // Returns S_FALSE when there are no more domains. A domain - // is passed out only when S_OK is returned. - HRESULT NextDomain([in] HDOMAINENUM hEnum, - [out] IUnknown** pAppDomain); - - // Close the enumeration, releasing resources - HRESULT CloseEnum([in] HDOMAINENUM hEnum); - - HRESULT CreateDomainEx([in] LPCWSTR pwzFriendlyName, // Optional - [in] IUnknown* pSetup, // Optional - [in] IUnknown* pEvidence, // Optional - [out] IUnknown** pAppDomain); - - HRESULT CreateDomainSetup([out] IUnknown** pAppDomainSetup); - - HRESULT CreateEvidence([out] IUnknown** pEvidence); - - HRESULT UnloadDomain([in] IUnknown* pAppDomain); - - // Returns the thread's domain. - HRESULT CurrentDomain([out] IUnknown** pAppDomain); -}; -#endif // FEATURE_INCLUDE_ALL_INTERFACES typedef enum { @@ -666,162 +275,10 @@ typedef enum { WAIT_NOTINDEADLOCK = 0x4 }WAIT_OPTION; -#ifdef FEATURE_INCLUDE_ALL_INTERFACES -cpp_quote("EXTERN_GUID(IID_ICLRMemoryNotificationCallback, 0x47EB8E57, 0x0846, 0x4546, 0xAF, 0x76, 0x6F, 0x42, 0xFC, 0xFC, 0x26, 0x49);") -[ - uuid(47EB8E57-0846-4546-AF76-6F42FCFC2649), - version(1.0), - helpstring("Callback by Host to notify runtime short of memory"), - pointer_default(unique), - local -] -interface ICLRMemoryNotificationCallback : IUnknown -{ - // Callback by Host on out of memory to request runtime to free memory. - // Runtime will do a GC and Wait for PendingFinalizer. - HRESULT OnMemoryNotification([in] EMemoryAvailable eMemoryAvailable); -} - -[ - uuid(1831991C-CC53-4A31-B218-04E910446479), - version(1.0), - helpstring("Host Malloc"), - pointer_default(unique), - local -] -interface IHostMalloc : IUnknown -{ - HRESULT Alloc([in] SIZE_T cbSize, - [in] EMemoryCriticalLevel eCriticalLevel, - [out] void** ppMem); - - HRESULT DebugAlloc([in] SIZE_T cbSize, - [in] EMemoryCriticalLevel eCriticalLevel, - [in, annotation("_In_ ")] char* pszFileName, - [in] int iLineNo, - [out, annotation("_Outptr_result_maybenull_")] void** ppMem); - - HRESULT Free([in] void* pMem); -} - -typedef enum -{ - MALLOC_THREADSAFE = 0x1, - MALLOC_EXECUTABLE = 0x2, -} MALLOC_TYPE; - -[ - uuid(7BC698D1-F9E3-4460-9CDE-D04248E9FA25), - version(1.0), - helpstring("Host memory manager"), - pointer_default(unique), - local -] -interface IHostMemoryManager : IUnknown -{ - HRESULT CreateMalloc([in] DWORD dwMallocType, - [out] IHostMalloc **ppMalloc); - - HRESULT VirtualAlloc([in] void* pAddress, - [in] SIZE_T dwSize, - [in] DWORD flAllocationType, - [in] DWORD flProtect, - [in] EMemoryCriticalLevel eCriticalLevel, - [out] void** ppMem); - - HRESULT VirtualFree([in] LPVOID lpAddress, - [in] SIZE_T dwSize, - [in] DWORD dwFreeType); - - HRESULT VirtualQuery([in] void * lpAddress, - [out] void* lpBuffer, - [in] SIZE_T dwLength, - [out] SIZE_T * pResult); - - HRESULT VirtualProtect([in] void * lpAddress, - [in] SIZE_T dwSize, - [in] DWORD flNewProtect, - [out] DWORD * pflOldProtect); - - HRESULT GetMemoryLoad([out] DWORD* pMemoryLoad, - [out] SIZE_T *pAvailableBytes); - - HRESULT RegisterMemoryNotificationCallback([in] ICLRMemoryNotificationCallback * pCallback); - - HRESULT NeedsVirtualAddressSpace( - [in] LPVOID startAddress, - [in] SIZE_T size - ); - - HRESULT AcquiredVirtualAddressSpace( - [in] LPVOID startAddress, - [in] SIZE_T size - ); - - HRESULT ReleasedVirtualAddressSpace( - [in] LPVOID startAddress - ); -} -#endif // FEATURE_INCLUDE_ALL_INTERFACES typedef UINT64 TASKID; typedef DWORD CONNID; -#ifdef FEATURE_INCLUDE_ALL_INTERFACES -[ - uuid(28E66A4A-9906-4225-B231-9187C3EB8611), - version(1.0), - helpstring("Callback by Host to collaborate with CLR on HostTask"), - pointer_default(unique), - local -] -interface ICLRTask: IUnknown -{ - HRESULT SwitchIn([in] HANDLE threadHandle); - HRESULT SwitchOut(); - HRESULT GetMemStats([out] COR_GC_THREAD_STATS *memUsage); - HRESULT Reset(BOOL fFull); - HRESULT ExitTask(); - HRESULT Abort(); - HRESULT RudeAbort(); - HRESULT NeedsPriorityScheduling([out] BOOL * pbNeedsPriorityScheduling); - HRESULT YieldTask(); - HRESULT LocksHeld([out] SIZE_T *pLockCount); - HRESULT SetTaskIdentifier([in] TASKID asked); -} - -[ - uuid(28E66A4A-9906-4225-B231-9187C3EB8612), - version(1.0), - helpstring("Callback by Host to collaborate with CLR on HostTask"), - pointer_default(unique), - local -] -interface ICLRTask2 : ICLRTask -{ - HRESULT BeginPreventAsyncAbort(); - HRESULT EndPreventAsyncAbort(); -} - - -[ - uuid(C2275828-C4B1-4B55-82C9-92135F74DF1A), - version(1.0), - helpstring("Called by CLR to operate on a HostTask"), - pointer_default(unique), - local -] -interface IHostTask : IUnknown -{ - HRESULT Start(); - HRESULT Alert(); - HRESULT Join([in] DWORD dwMilliseconds, - [in] DWORD option); - HRESULT SetPriority([in] int newPriority); - HRESULT GetPriority([out] int *pPriority); - HRESULT SetCLRTask([in] ICLRTask *pCLRTask); -} -#endif // FEATURE_INCLUDE_ALL_INTERFACES typedef enum ETaskType { @@ -839,141 +296,6 @@ typedef enum ETaskType TT_UNKNOWN = 0x80000000, } ETaskType; -#ifdef FEATURE_INCLUDE_ALL_INTERFACES -[ - uuid(4862efbe-3ae5-44f8-8feb-346190ee8a34), - version(1.0), - helpstring("Functions provided by CLR to handle a CLRTask"), - pointer_default(unique), - local -] -interface ICLRTaskManager : IUnknown -{ - HRESULT CreateTask ([out] ICLRTask **pTask); - HRESULT GetCurrentTask ([out] ICLRTask **pTask); - HRESULT SetUILocale([in] LCID lcid); - HRESULT SetLocale([in] LCID lcid); - - HRESULT GetCurrentTaskType([out] ETaskType *pTaskType); - -} - -[ - uuid(997FF24C-43B7-4352-8667-0DC04FAFD354), - version(1.0), - helpstring("Functions provided by host to handle a HostTask"), - pointer_default(unique), - local -] -interface IHostTaskManager : IUnknown -{ - HRESULT GetCurrentTask ([out] IHostTask **pTask); - HRESULT CreateTask ([in] DWORD dwStackSize, - [in] LPTHREAD_START_ROUTINE pStartAddress, - [in] PVOID pParameter, - [out] IHostTask **ppTask); - HRESULT Sleep([in] DWORD dwMilliseconds, - [in] DWORD option); - HRESULT SwitchToTask([in] DWORD option); - - HRESULT SetUILocale([in] LCID lcid); - HRESULT SetLocale([in] LCID lcid); - - HRESULT CallNeedsHostHook([in] SIZE_T target, - [out] BOOL *pbCallNeedsHostHook); - - HRESULT LeaveRuntime([in] SIZE_T target); - HRESULT EnterRuntime(); - - HRESULT ReverseLeaveRuntime(); - HRESULT ReverseEnterRuntime(); - - HRESULT BeginDelayAbort(); - HRESULT EndDelayAbort(); - HRESULT BeginThreadAffinity(); - HRESULT EndThreadAffinity(); - - HRESULT SetStackGuarantee([in] ULONG guarantee); - HRESULT GetStackGuarantee([out] ULONG *pGuarantee); - - HRESULT SetCLRTaskManager([in] ICLRTaskManager *ppManager); - -} - -[ - uuid(983D50E2-CB15-466B-80FC-845DC6E8C5FD), - version(1.0), - helpstring("Threadpool Functions provided by host"), - pointer_default(unique), - local -] -interface IHostThreadpoolManager : IUnknown -{ - HRESULT QueueUserWorkItem( - [in] LPTHREAD_START_ROUTINE Function, - [in] PVOID Context, - [in] ULONG Flags); - HRESULT SetMaxThreads( - [in] DWORD dwMaxWorkerThreads); - HRESULT GetMaxThreads( - [out] DWORD *pdwMaxWorkerThreads); - HRESULT GetAvailableThreads( - [out] DWORD *pdwAvailableWorkerThreads); - HRESULT SetMinThreads( - [in] DWORD dwMinIOCompletionThreads); - HRESULT GetMinThreads( - [out] DWORD *pdwMinIOCompletionThreads); -} - -[ - uuid(2d74ce86-b8d6-4c84-b3a7-9768933b3c12), - version(1.0), - helpstring("Asynchronous IO support callback"), - pointer_default(unique), - local -] -interface ICLRIoCompletionManager : IUnknown -{ - HRESULT OnComplete( - [in] DWORD dwErrorCode, - [in] DWORD NumberOfBytesTransferred, - [in] void* pvOverlapped); -} - -[ - uuid(8bde9d80-ec06-41d6-83e6-22580effcc20), - version(1.0), - helpstring("Asynchronous IO support provided by host"), - pointer_default(unique), - local -] -interface IHostIoCompletionManager : IUnknown -{ - HRESULT CreateIoCompletionPort( - [out] HANDLE *phPort); - HRESULT CloseIoCompletionPort( - [in] HANDLE hPort); - HRESULT SetMaxThreads( - [in] DWORD dwMaxIOCompletionThreads); - HRESULT GetMaxThreads( - [out] DWORD *pdwMaxIOCompletionThreads); - HRESULT GetAvailableThreads( - [out] DWORD *pdwAvailableIOCompletionThreads); - HRESULT GetHostOverlappedSize( - [out] DWORD * pcbSize); - HRESULT SetCLRIoCompletionManager( - [in] ICLRIoCompletionManager * pManager); - HRESULT InitializeHostOverlapped( - [in] void * pvOverlapped); - HRESULT Bind( - [in] HANDLE hPort, - [in] HANDLE hHandle); - HRESULT SetMinThreads( - [in] DWORD dwMinIOCompletionThreads); - HRESULT GetMinThreads( - [out] DWORD *pdwMinIOCompletionThreads); -} -#endif // FEATURE_INCLUDE_ALL_INTERFACES typedef enum { eSymbolReadingNever = 0, // Never read PDBs @@ -981,41 +303,6 @@ typedef enum { eSymbolReadingFullTrustOnly = 2 // Only read PDBs that correspond to full-trust assemblies } ESymbolReadingPolicy; -#ifdef FEATURE_INCLUDE_ALL_INTERFACES -[ - uuid(00DCAEC6-2AC0-43a9-ACF9-1E36C139B10D), - version(1.0), - helpstring("CLR debugger manager"), - pointer_default(unique), - local -] -interface ICLRDebugManager : IUnknown -{ - HRESULT BeginConnection( - [in] CONNID dwConnectionId, - [in, string, annotation("_In_")] wchar_t *szConnectionName); - HRESULT SetConnectionTasks( - [in] CONNID id, - [in] DWORD dwCount, - [in, size_is(dwCount)] ICLRTask **ppCLRTask); - HRESULT EndConnection( - [in] CONNID dwConnectionId); - // Set ACL on shared section, events, and process - HRESULT SetDacl([in] PACL pacl); - - // Returning the current ACL that CLR is using - // The memory is allocated by runtime using CoTaskmemAlloc. Caller must - // free the memory pointed to by pacl using CoTaskMemFree. - HRESULT GetDacl([out] PACL *pacl); - - // Indicates whether or not a managed debugger is attached to this process. - HRESULT IsDebuggerAttached([out] BOOL *pbAttached); - - // Specify whether the symbol reader should be used. Affects whether file and line - // info can be included when the CLR captures a call stack. - HRESULT SetSymbolReadingPolicy([in] ESymbolReadingPolicy policy); -} -#endif // FEATURE_INCLUDE_ALL_INTERFACES typedef enum { // Default to minidump @@ -1077,7 +364,7 @@ typedef struct _BucketParameters WCHAR pszParams[BucketParamsCount][BucketParamLength]; // Parameter strings. } BucketParameters; -#if defined(FEATURE_INCLUDE_ALL_INTERFACES) || defined(FEATURE_WINDOWSPHONE) +#if defined(FEATURE_WINDOWSPHONE) [ uuid(980D2F1A-BF79-4c08-812A-BB9778928F78), version(1.0), @@ -1181,119 +468,8 @@ interface ICLRErrorReportingManager2 : ICLRErrorReportingManager } #endif // FEATURE_WINDOWSPHONE -#endif // defined(FEATURE_INCLUDE_ALL_INTERFACES) || defined(FEATURE_WINDOWSPHONE) - -#ifdef FEATURE_INCLUDE_ALL_INTERFACES -[ - uuid(6DF710A6-26A4-4a65-8CD5-7237B8BDA8DC), - version(1.0), - helpstring("CriticalSection provided by host"), - pointer_default(unique), - local -] -interface IHostCrst : IUnknown -{ - HRESULT Enter([in] DWORD option); - HRESULT Leave(); - HRESULT TryEnter([in] DWORD option, - [out] BOOL *pbSucceeded); - HRESULT SetSpinCount([in] DWORD dwSpinCount); -} - -[ - uuid(50B0CFCE-4063-4278-9673-E5CB4ED0BDB8), - version(1.0), - helpstring("AutoEvent provided by host"), - pointer_default(unique), - local -] -interface IHostAutoEvent : IUnknown -{ - HRESULT Wait([in] DWORD dwMilliseconds, - [in] DWORD option); - HRESULT Set(); -} - -[ - uuid(1BF4EC38-AFFE-4fb9-85A6-525268F15B54), - version(1.0), - helpstring("ManualEvent provided by host"), - pointer_default(unique), - local -] -interface IHostManualEvent : IUnknown -{ - HRESULT Wait([in] DWORD dwMilliseconds, - [in] DWORD option); - HRESULT Reset(); - HRESULT Set(); -} +#endif // defined(FEATURE_WINDOWSPHONE) -[ - uuid(855efd47-cc09-463a-a97d-16acab882661), - version(1.0), - helpstring("Semaphore provided by host"), - pointer_default(unique), - local -] -interface IHostSemaphore : IUnknown -{ - HRESULT Wait([in] DWORD dwMilliseconds, - [in] DWORD option); - HRESULT ReleaseSemaphore([in] LONG lReleaseCount, - [out] LONG *lpPreviousCount); -} - -[ - uuid(55FF199D-AD21-48f9-A16C-F24EBBB8727D), - version(1.0), - helpstring("Functions provided by CLR to provide infomation on synchronization objects"), - pointer_default(unique), - local -] -interface ICLRSyncManager : IUnknown -{ - HRESULT GetMonitorOwner ([in] SIZE_T Cookie, - [out] IHostTask **ppOwnerHostTask); - - HRESULT CreateRWLockOwnerIterator([in] SIZE_T Cookie, [out] SIZE_T *pIterator); - HRESULT GetRWLockOwnerNext([in] SIZE_T Iterator, [out] IHostTask **ppOwnerHostTask); - HRESULT DeleteRWLockOwnerIterator([in] SIZE_T Iterator); -} - -[ - uuid(234330c7-5f10-4f20-9615-5122dab7a0ac), - version(1.0), - helpstring("Functions provided by host to create synchronization objects"), - pointer_default(unique), - local -] -interface IHostSyncManager : IUnknown -{ - HRESULT SetCLRSyncManager([in] ICLRSyncManager *pManager); - - HRESULT CreateCrst([out] IHostCrst** ppCrst); - HRESULT CreateCrstWithSpinCount ([in] DWORD dwSpinCount, - [out] IHostCrst** ppCrst); - - HRESULT CreateAutoEvent([out] IHostAutoEvent **ppEvent); - HRESULT CreateManualEvent([in] BOOL bInitialState, - [out] IHostManualEvent **ppEvent); - - HRESULT CreateMonitorEvent([in] SIZE_T Cookie, - [out] IHostAutoEvent **ppEvent); - - HRESULT CreateRWLockWriterEvent([in] SIZE_T Cookie, - [out] IHostAutoEvent **ppEvent); - HRESULT CreateRWLockReaderEvent([in] BOOL bInitialState, - [in] SIZE_T Cookie, - [out] IHostManualEvent **ppEvent); - - HRESULT CreateSemaphore([in] DWORD dwInitial, - [in] DWORD dwMax, - [out] IHostSemaphore ** ppSemaphore); -} -#endif // FEATURE_INCLUDE_ALL_INTERFACES typedef enum { @@ -1383,29 +559,6 @@ interface ICLRPolicyManager: IUnknown [in] EClrUnhandledException policy); } -#ifdef FEATURE_INCLUDE_ALL_INTERFACES -[ - uuid(7AE49844-B1E3-4683-BA7C-1E8212EA3B79), - version(1.0), - helpstring("Notify host about how CLR handles abnormal condition"), - pointer_default(unique), - local -] -interface IHostPolicyManager: IUnknown -{ - HRESULT OnDefaultAction( - [in] EClrOperation operation, - [in] EPolicyAction action); - - HRESULT OnTimeout( - [in] EClrOperation operation, - [in] EPolicyAction action); - - HRESULT OnFailure( - [in] EClrFailure failure, - [in] EPolicyAction action); -} -#endif // FEATURE_INCLUDE_ALL_INTERFACES typedef enum { @@ -1439,250 +592,8 @@ cpp_quote(" StackOverflowType soType;") cpp_quote(" EXCEPTION_POINTERS *pExceptionInfo;") cpp_quote("} StackOverflowInfo;") -#ifdef FEATURE_INCLUDE_ALL_INTERFACES -[ - uuid(607BE24B-D91B-4E28-A242-61871CE56E35), - version(1.0), - helpstring("Allow host to register action on domain unload"), - pointer_default(unique), - local -] -interface IActionOnCLREvent: IUnknown -{ - HRESULT OnEvent( - [in] EClrEvent event, - [in] PVOID data - ); -} - -[ - uuid(1D0E0132-E64F-493D-9260-025C0E32C175), - version(1.0), - helpstring("Allow host to register action on event"), - pointer_default(unique), - local -] -interface ICLROnEventManager: IUnknown -{ - HRESULT RegisterActionOnEvent( - [in] EClrEvent event, - [in] IActionOnCLREvent *pAction - ); - HRESULT UnregisterActionOnEvent( - [in] EClrEvent event, - [in] IActionOnCLREvent *pAction - ); -} - -[ - uuid(5D4EC34E-F248-457B-B603-255FAABA0D21), - version(1.0), - helpstring("Control over threads blocked in GC"), - pointer_default(unique), - local -] -interface IHostGCManager : IUnknown -{ - // Notification that the thread making the call is about to block, perhaps for - // a GC or other suspension. This gives the host an opportunity to re-schedule - // the thread for unmanaged tasks. - HRESULT ThreadIsBlockingForSuspension(); - - // Notification that the runtime is beginning a thread suspension for a GC or - // other suspension. Do not reschedule this thread! - HRESULT SuspensionStarting(); - - // Notification that the runtime is resuming threads after a GC or other - // suspension. Do not reschedule this thread! - HRESULT SuspensionEnding(DWORD Generation); -} - -/////////////////////////////////////////////////////////////////////////////// -// -// ICLRAssemblyReferenceList -// -/////////////////////////////////////////////////////////////////////////////// -[ - object, - version(1.0), - uuid(1b2c9750-2e66-4bda-8b44-0a642c5cd733), - helpstring("Generic Assembly Reference List, created by CLR."), - pointer_default(unique), - local -] -interface ICLRAssemblyReferenceList : IUnknown -{ - HRESULT IsStringAssemblyReferenceInList( - [in] LPCWSTR pwzAssemblyName - ); - - HRESULT IsAssemblyReferenceInList( - [in] IUnknown *pName - ); -}; -/////////////////////////////////////////////////////////////////////////////// -// -// ICLRReferenceAssemblyEnum -// -/////////////////////////////////////////////////////////////////////////////// -[ - object, - version(1.0), - uuid(d509cb5d-cf32-4876-ae61-67770cf91973), - helpstring("Reference Enum of an Assembly."), - pointer_default(unique), - local -] -interface ICLRReferenceAssemblyEnum : IUnknown -{ - HRESULT Get( - [in] DWORD dwIndex, - [out, size_is(*pcchBufferSize), annotation("_Out_writes_all_(*pcchBufferSize)")] - LPWSTR pwzBuffer, - [in, out] DWORD *pcchBufferSize - ); -}; - -/////////////////////////////////////////////////////////////////////////////// -// -// ICLRProbingAssemblyEnum -// -/////////////////////////////////////////////////////////////////////////////// -[ - object, - version(1.0), - uuid(d0c5fb1f-416b-4f97-81f4-7ac7dc24dd5d), - helpstring("The assemblies CLR will probe for given assembly"), - pointer_default(unique), - local -] -interface ICLRProbingAssemblyEnum:IUnknown -{ - HRESULT Get( - [in] DWORD dwIndex, - [out, size_is(*pcchBufferSize), annotation("_Out_writes_all_(*pcchBufferSize)")] - LPWSTR pwzBuffer, - [in, out] DWORD *pcchBufferSize - ); -}; - -typedef enum _CLRAssemblyIdentityFlags -{ - CLR_ASSEMBLY_IDENTITY_FLAGS_DEFAULT = 0 -}ECLRAssemblyIdentityFlags; - -/////////////////////////////////////////////////////////////////////////////// -// -// ICLRAssemblyIdentityManager -// -/////////////////////////////////////////////////////////////////////////////// -[ - object, - version(1.0), - uuid(15f0a9da-3ff6-4393-9da9-fdfd284e6972), - helpstring("CLR Assembly Identity Manager"), - pointer_default(unique), - local -] -interface ICLRAssemblyIdentityManager : IUnknown -{ - HRESULT GetCLRAssemblyReferenceList( - [in] LPCWSTR *ppwzAssemblyReferences, - [in] DWORD dwNumOfReferences, - [out] ICLRAssemblyReferenceList **ppReferenceList - ); - - HRESULT GetBindingIdentityFromFile( - [in] LPCWSTR pwzFilePath, - [in] DWORD dwFlags, - [out, size_is(*pcchBufferSize), annotation("_Out_writes_all_(*pcchBufferSize)")] - LPWSTR pwzBuffer, - [in, out] DWORD *pcchBufferSize - ); - - HRESULT GetBindingIdentityFromStream( - [in] IStream *pStream, - [in] DWORD dwFlags, - [out, size_is(*pcchBufferSize), annotation("_Out_writes_all_(*pcchBufferSize)")] - LPWSTR pwzBuffer, - [in, out] DWORD *pcchBufferSize - ); - - HRESULT GetReferencedAssembliesFromFile( - [in] LPCWSTR pwzFilePath, - [in] DWORD dwFlags, - [in] ICLRAssemblyReferenceList *pExcludeAssembliesList, - [out] ICLRReferenceAssemblyEnum **ppReferenceEnum - ); - - HRESULT GetReferencedAssembliesFromStream( - [in] IStream *pStream, - [in] DWORD dwFlags, - [in] ICLRAssemblyReferenceList *pExcludeAssembliesList, - [out] ICLRReferenceAssemblyEnum **ppReferenceEnum - ); - - HRESULT GetProbingAssembliesFromReference( - [in] DWORD dwMachineType, - [in] DWORD dwFlags, - [in] LPCWSTR pwzReferenceIdentity, - [out] ICLRProbingAssemblyEnum **ppProbingAssemblyEnum - ); - - HRESULT IsStronglyNamed( - [in] LPCWSTR pwzAssemblyIdentity, - [out] BOOL *pbIsStronglyNamed - ); -}; - -typedef enum _hostBiningPolicyModifyFlags -{ - HOST_BINDING_POLICY_MODIFY_DEFAULT = 0, - HOST_BINDING_POLICY_MODIFY_CHAIN = 1, - HOST_BINDING_POLICY_MODIFY_REMOVE = 2, - HOST_BINDING_POLICY_MODIFY_MAX = 3 -}EHostBindingPolicyModifyFlags; - -/////////////////////////////////////////////////////////////////////////////// -// -// ICLRHostBindingPolicyManager -// -/////////////////////////////////////////////////////////////////////////////// -[ - object, - version(1.0), - uuid(4b3545e7-1856-48c9-a8ba-24b21a753c09), - helpstring("CLR Host Binding Policy Manager, managing binding policy for host."), - pointer_default(unique), - local -] -interface ICLRHostBindingPolicyManager : IUnknown -{ - HRESULT ModifyApplicationPolicy( - [in] LPCWSTR pwzSourceAssemblyIdentity, - [in] LPCWSTR pwzTargetAssemblyIdentity, - [in] BYTE *pbApplicationPolicy, - [in] DWORD cbAppPolicySize, - [in] DWORD dwPolicyModifyFlags, - [out, size_is(*pcbNewAppPolicySize), annotation("_Out_writes_all_(*pcbNewAppPolicySize)")] - BYTE *pbNewApplicationPolicy, - [in, out] DWORD *pcbNewAppPolicySize - ); - - HRESULT EvaluatePolicy( - [in] LPCWSTR pwzReferenceIdentity, - [in] BYTE *pbApplicationPolicy, - [in] DWORD cbAppPolicySize, - [out, size_is(*pcchPostPolicyReferenceIdentity), annotation("_Out_writes_all_(*pcchPostPolicyReferenceIdentity)")] - LPWSTR pwzPostPolicyReferenceIdentity, - [in, out] DWORD *pcchPostPolicyReferenceIdentity, - [out] DWORD *pdwPoliciesApplied - ); -}; -#endif // FEATURE_INCLUDE_ALL_INTERFACES - -#if defined(FEATURE_INCLUDE_ALL_INTERFACES) || defined(FEATURE_WINDOWSPHONE) +#if defined(FEATURE_WINDOWSPHONE) /* * This interface is used to get information about the GC system and @@ -1738,7 +649,7 @@ interface ICLRGCManager2 : ICLRGCManager }; -#endif //FEATURE_INCLUDE_ALL_INTERFACES || FEATURE_WINDOWSPHONE +#endif // FEATURE_WINDOWSPHONE /////////////////////////////////////////////////////////////////////////////// // @@ -1787,64 +698,6 @@ typedef enum _HostApplicationPolicy }EHostApplicationPolicy; -#ifdef FEATURE_INCLUDE_ALL_INTERFACES -/////////////////////////////////////////////////////////////////////////////// -// -// IHostAssemblyStore -// -/////////////////////////////////////////////////////////////////////////////// -[ - local, - object, - version(1.0), - uuid(7b102a88-3f7f-496d-8fa2-c35374e01af3), - helpstring("Assembly Store provided by host"), - pointer_default(unique) -] -interface IHostAssemblyStore: IUnknown -{ - HRESULT ProvideAssembly - ( - [in] AssemblyBindInfo *pBindInfo, - [out] UINT64 *pAssemblyId, - [out] UINT64 *pContext, - [out] IStream **ppStmAssemblyImage, - [out] IStream **ppStmPDB); - - HRESULT ProvideModule - ( - [in] ModuleBindInfo *pBindInfo, - [out] DWORD *pdwModuleId, - [out] IStream **ppStmModuleImage, - [out] IStream **ppStmPDB); -}; - -/////////////////////////////////////////////////////////////////////////////// -// -// IHostAssemblyManager -// -/////////////////////////////////////////////////////////////////////////////// -[ - local, - object, - version(1.0), - uuid(613dabd7-62b2-493e-9e65-c1e32a1e0c5e), - helpstring("Assembly Manager provided by host"), - pointer_default(unique) -] -interface IHostAssemblyManager: IUnknown -{ - HRESULT GetNonHostStoreAssemblies - ( - [out] ICLRAssemblyReferenceList **ppReferenceList - ); - - HRESULT GetAssemblyStore - ( - [out] IHostAssemblyStore **ppAssemblyStore - ); -}; -#endif // FEATURE_INCLUDE_ALL_INTERFACES // Implemented in mscorwks.dll, use mscoree!GetRealProcAddress to get // a function pointer of this API. @@ -2032,26 +885,6 @@ typedef enum eAll = 0x1ff } EApiCategories; -#ifdef FEATURE_INCLUDE_ALL_INTERFACES -[ - object, - uuid(89F25F5C-CEEF-43e1-9CFA-A68CE863AAAC), - helpstring("Host Protection Interface"), - pointer_default(unique) -] -interface ICLRHostProtectionManager : IUnknown -{ - // These allow the host to specify resources that could cause - // instability in order to guarantee protection from them. - HRESULT SetProtectedCategories([in] EApiCategories categories); - - // Call once before starting the runtime to sacrifice a little - // assembly-loading-performance for a guarantee that a certain - // rare race condition that can result in a FatalEE error won't - // happen. - HRESULT SetEagerSerializeGrantSets(); -}; -#endif // FEATURE_INCLUDE_ALL_INTERFACES // // Interface for configuring the default AppDomain @@ -2066,24 +899,6 @@ typedef enum } EInitializeNewDomainFlags; -#ifdef FEATURE_INCLUDE_ALL_INTERFACES -[ - object, - uuid(270D00A2-8E15-4d0b-ADEB-37BC3E47DF77), - helpstring("Default AppDomain Configuration Interface"), - pointer_default(unique) -] -interface ICLRDomainManager : IUnknown -{ - HRESULT SetAppDomainManagerType([in] LPCWSTR wszAppDomainManagerAssembly, - [in] LPCWSTR wszAppDomainManagerType, - [in] EInitializeNewDomainFlags dwInitializeDomainFlags); - - HRESULT SetPropertiesForDefaultAppDomain([in] DWORD nProperties, - [in] LPCWSTR *pwszPropertyNames, - [in] LPCWSTR *pwszPropertyValues); -} -#endif // FEATURE_INCLUDE_ALL_INTERFACES //***************************************************************************** // mscoree typelib definition @@ -2166,24 +981,6 @@ library mscoree HRESULT GetTypeNameBuilder([out, retval] ITypeNameBuilder** ppTypeBuilder); }; -#ifdef FEATURE_INCLUDE_ALL_INTERFACES - //***************************************************************************** - // Interface for apartment callbacks. - //***************************************************************************** - [ - object, - oleautomation, - uuid(178E5337-1528-4591-B1C9-1C6E484686D8), - helpstring("Apartment callback interface"), - pointer_default(unique) - ] - interface IApartmentCallback : IUnknown - { - HRESULT _stdcall DoCallback( - [in] SIZE_T pFunc, - [in] SIZE_T pData); - }; -#endif // FEATURE_INCLUDE_ALL_INTERFACES #ifdef _WIN64 #define CCW_PTR __int64 * @@ -2215,24 +1012,6 @@ library mscoree }; #endif // FEATURE_COMINTEROP -#ifdef FEATURE_INCLUDE_ALL_INTERFACES - //***************************************************************************** - // Interface for controlling a managed object - //***************************************************************************** - [ - object, - oleautomation, - uuid(04C6BE1E-1DB1-4058-AB7A-700CCCFBF254), - helpstring("ICatalogServices Interface"), - pointer_default(unique) - ] - interface ICatalogServices : IUnknown - { - HRESULT Autodone(); - - HRESULT NotAutodone(); - }; -#endif // FEATURE_INCLUDE_ALL_INTERFACES #ifdef FEATURE_COMINTEROP //***************************************************************************** @@ -2260,20 +1039,6 @@ library mscoree }; #endif // FEATURE_COMINTEROP -#ifdef FEATURE_INCLUDE_ALL_INTERFACES - [ - uuid(CB2F6723-AB3A-11d2-9C40-00C04FA30A3E), - helpstring("Cor Runtime Hosting Class") - ] - coclass CorRuntimeHost - { - [default] interface ICorRuntimeHost; - interface IGCHost; - interface ICorConfiguration; - interface IValidator; - interface IDebuggerInfo; - }; -#endif // FEATURE_INCLUDE_ALL_INTERFACES [ uuid(90F1A06E-7712-4762-86B5-7A5EBA6BDB02), @@ -2301,64 +1066,6 @@ typedef enum eRestrictedContext=0x01 } EContextType; -#ifdef FEATURE_INCLUDE_ALL_INTERFACES -/////////////////////////////////////////////////////////////////////////////// -// -// IHostSecurityContext -// -/////////////////////////////////////////////////////////////////////////////// -[ - object, - version(1.0), - uuid(7E573CE4-0343-4423-98D7-6318348A1D3C), - helpstring("Security Context provided by host"), - pointer_default(unique), - local -] - -interface IHostSecurityContext : IUnknown -{ - HRESULT Capture([out] IHostSecurityContext** ppClonedContext); -} - -/////////////////////////////////////////////////////////////////////////////// -// -// IHostSecurityManager -// -/////////////////////////////////////////////////////////////////////////////// -[ - object, - version(1.0), - uuid(75ad2468-a349-4d02-a764-76a68aee0c4f), - helpstring("Security Manager provided by host"), - pointer_default(unique), - local -] -interface IHostSecurityManager: IUnknown -{ - // Impersonation APIs. - HRESULT ImpersonateLoggedOnUser( - [in] HANDLE hToken); - - HRESULT RevertToSelf(); - - HRESULT OpenThreadToken( - [in] DWORD dwDesiredAccess, - [in] BOOL bOpenAsSelf, - [out] HANDLE *phThreadToken - ); - - HRESULT SetThreadToken( - [in] HANDLE hToken); - - HRESULT GetSecurityContext([in] EContextType eContextType, - [out] IHostSecurityContext** ppSecurityContext); - // May return S_OK, E_FAIL (in what circumstances?) - HRESULT SetSecurityContext([in] EContextType eContextType, - [in] IHostSecurityContext* pSecurityContext); - -}; -#endif // FEATURE_INCLUDE_ALL_INTERFACES #ifdef FEATURE_APPDOMAIN_RESOURCE_MONITORING /////////////////////////////////////////////////////////////////////////////// diff --git a/src/inc/corhost.h b/src/inc/corhost.h index ada1757514..6383c0b144 100644 --- a/src/inc/corhost.h +++ b/src/inc/corhost.h @@ -162,91 +162,8 @@ enum ESymbolReadingSetBy eSymbolReadingSetBy_COUNT }; -#ifdef FEATURE_INCLUDE_ALL_INTERFACES -// Hash table entry to keep track <connection, name> for SQL fiber support -typedef DPTR(struct ConnectionNameHashEntry) PTR_ConnectionNameHashEntry; -struct ConnectionNameHashEntry -{ - FREEHASHENTRY entry; - CONNID m_dwConnectionId; - PTR_WSTR m_pwzName; - ICLRTask **m_ppCLRTaskArray; - UINT m_CLRTaskCount; -}; - - -class CCLRDebugManager : public ICLRDebugManager -{ -public: - CCLRDebugManager() {LIMITED_METHOD_CONTRACT;}; - - STDMETHODIMP QueryInterface(REFIID riid, void** ppv); - STDMETHODIMP_(ULONG) AddRef(void) - { - LIMITED_METHOD_CONTRACT; - return 1; - } - STDMETHODIMP_(ULONG) Release(void); - - // ICLRTDebugManager's interface - STDMETHODIMP BeginConnection( - CONNID dwConnectionId, - __in_z wchar_t *szConnectionName); - STDMETHODIMP SetConnectionTasks( - DWORD id, - DWORD dwCount, - ICLRTask **ppCLRTask); - STDMETHODIMP EndConnection( - CONNID dwConnectionId); - - // Set ACL on shared section, events, and process - STDMETHODIMP SetDacl(PACL pacl); - - // Returning the current ACL that CLR is using - STDMETHODIMP GetDacl(PACL *pacl); - - STDMETHODIMP IsDebuggerAttached(BOOL *pbAttached); - - // symbol reading policy - include file line info when getting a call stack etc. - STDMETHODIMP SetSymbolReadingPolicy(ESymbolReadingPolicy policy); - -#ifdef DACCESS_COMPILE - // Expose iterators for DAC. Debugger can use this on attach to find existing Connections. - // - // Example usage: - // HASHFIND h; - // ConnectionNameHashEntry * pConnection = FindFirst(&h); - // while(pConnection != NULL) { - // DoSomething(pConnection); - // pConnection = FindNext(&h); - // } - static ConnectionNameHashEntry * FindFirst(HASHFIND * pHashfind); - static ConnectionNameHashEntry * FindNext(HASHFIND * pHashfind); -#endif - - static void ProcessInit(); - static void ProcessCleanup(); - - // Get the current symbol reading policy setting - static ESymbolReadingPolicy GetSymbolReadingPolicy() - { - return m_symbolReadingPolicy; - } - // Set the symbol reading policy if the setter has higher precendence than the current setting - static void SetSymbolReadingPolicy( ESymbolReadingPolicy policy, ESymbolReadingSetBy setBy ); - -private: - static CrstStatic m_lockConnectionNameTable; - SPTR_DECL(ConnectionNameTable, m_pConnectionNameHash); - - static ESymbolReadingPolicy m_symbolReadingPolicy; - static ESymbolReadingSetBy m_symbolReadingSetBy; -}; - -#endif // FEATURE_INCLUDE_ALL_INTERFACES - -#if defined(FEATURE_INCLUDE_ALL_INTERFACES) || defined(FEATURE_WINDOWSPHONE) +#if defined(FEATURE_WINDOWSPHONE) class CCLRErrorReportingManager : #ifdef FEATURE_WINDOWSPHONE public ICLRErrorReportingManager2 @@ -316,7 +233,7 @@ public: }; extern CCLRErrorReportingManager g_CLRErrorReportingManager; -#endif // defined(FEATURE_INCLUDE_ALL_INTERFACES) || defined(FEATURE_WINDOWSPHONE) +#endif // defined(FEATURE_WINDOWSPHONE) #ifdef FEATURE_IPCMAN // @TODO:: a-meicht @@ -478,77 +395,6 @@ public: return NULL; } -#ifdef FEATURE_INCLUDE_ALL_INTERFACES - static IHostMemoryManager *GetHostMemoryManager () - { - LIMITED_METHOD_CONTRACT; - - return NULL; - } - - static IHostMalloc *GetHostMalloc () - { - LIMITED_METHOD_CONTRACT; - - return NULL; - } - - static IHostTaskManager *GetHostTaskManager () - { - LIMITED_METHOD_CONTRACT; - - return NULL; - } - - static IHostThreadpoolManager *GetHostThreadpoolManager () - { - LIMITED_METHOD_CONTRACT; - - return NULL; - } - - static IHostIoCompletionManager *GetHostIoCompletionManager () - { - LIMITED_METHOD_CONTRACT; - - return NULL; - } - - static IHostSyncManager *GetHostSyncManager () - { - LIMITED_METHOD_CONTRACT; - - return NULL; - } - - static IHostAssemblyManager *GetHostAssemblyManager() - { - LIMITED_METHOD_CONTRACT; - - return NULL; - } - - static IHostGCManager *GetHostGCManager() - { - LIMITED_METHOD_CONTRACT; - - return NULL; - } - - static IHostSecurityManager *GetHostSecurityManager() - { - LIMITED_METHOD_CONTRACT; - - return NULL; - } - - static IHostPolicyManager *GetHostPolicyManager () - { - LIMITED_METHOD_CONTRACT; - - return NULL; - } -#endif // FEATURE_INCLUDE_ALL_INTERFACES static int GetHostOverlappedExtensionSize() { @@ -557,14 +403,6 @@ public: return 0; } -#ifdef FEATURE_INCLUDE_ALL_INTERFACES - static ICLRAssemblyReferenceList *GetHostDomainNeutralAsms() - { - LIMITED_METHOD_CONTRACT; - - return NULL; - } -#endif // FEATURE_INCLUDE_ALL_INTERFACES static STARTUP_FLAGS GetStartupFlags(); @@ -630,11 +468,7 @@ private: SVAL_DECL(STARTUP_FLAGS, m_dwStartupFlags); }; -#ifdef FEATURE_INCLUDE_ALL_INTERFACES -class CorHostProtectionManager : public ICLRHostProtectionManager -#else // !FEATURE_INCLUDE_ALL_INTERFACES class CorHostProtectionManager -#endif // FEATURE_INCLUDE_ALL_INTERFACES { private: EApiCategories m_eProtectedCategories; diff --git a/src/inc/dacvars.h b/src/inc/dacvars.h index e86cb8b579..478f90426f 100644 --- a/src/inc/dacvars.h +++ b/src/inc/dacvars.h @@ -92,9 +92,6 @@ DEFINE_DACVAR(ULONG, PTR_ReadyToRunJitManager, ExecutionManager__m_pReadyToRunJi DEFINE_DACVAR_NO_DUMP(ULONG, VMHELPDEF *, dac__hlpFuncTable, ::hlpFuncTable) DEFINE_DACVAR(ULONG, VMHELPDEF *, dac__hlpDynamicFuncTable, ::hlpDynamicFuncTable) -#ifdef FEATURE_INCLUDE_ALL_INTERFACES -DEFINE_DACVAR(ULONG, PTR_ConnectionNameTable, CCLRDebugManager__m_pConnectionNameHash, CCLRDebugManager::m_pConnectionNameHash) -#endif // FEATURE_INCLUDE_ALL_INTERFACES DEFINE_DACVAR(ULONG, PTR_StubManager, StubManager__g_pFirstManager, StubManager::g_pFirstManager) DEFINE_DACVAR(ULONG, PTR_PrecodeStubManager, PrecodeStubManager__g_pManager, PrecodeStubManager::g_pManager) DEFINE_DACVAR(ULONG, PTR_StubLinkStubManager, StubLinkStubManager__g_pManager, StubLinkStubManager::g_pManager) @@ -153,7 +150,7 @@ DEFINE_DACVAR(ULONG, DWORD, CExecutionEngine__TlsIndex, CExecutionEngine::TlsInd DEFINE_DACVAR(ULONG, LONG, GCScan__m_GcStructuresInvalidCnt, GCScan::m_GcStructuresInvalidCnt) -#if defined(FEATURE_INCLUDE_ALL_INTERFACES) || defined(FEATURE_WINDOWSPHONE) +#if defined(FEATURE_WINDOWSPHONE) DEFINE_DACVAR(ULONG, int, CCLRErrorReportingManager__g_ECustomDumpFlavor, CCLRErrorReportingManager::g_ECustomDumpFlavor) #endif diff --git a/src/inc/gchost.idl b/src/inc/gchost.idl index 3aa528f028..6d85f91513 100644 --- a/src/inc/gchost.idl +++ b/src/inc/gchost.idl @@ -10,22 +10,8 @@ * -------------------------------------------------------------------------- */ import "unknwn.idl"; -#ifdef FEATURE_INCLUDE_ALL_INTERFACES -typedef enum -{ - COR_GC_COUNTS = 0x00000001, // Fill out count values. - COR_GC_MEMORYUSAGE = 0x00000002, // Fill out memory usage values. -} COR_GC_STAT_TYPES; - -typedef enum -{ - COR_GC_THREAD_HAS_PROMOTED_BYTES = 0x00000001 // Thread has bytes promoted in the last GC - // if flags set to this value. -} COR_GC_THREAD_STATS_TYPES; - -#endif // FEATURE_INCLUDE_ALL_INTERFACES -#if defined(FEATURE_INCLUDE_ALL_INTERFACES) || defined(FEATURE_WINDOWSPHONE) +#if defined(FEATURE_WINDOWSPHONE) /* * This structure is used to return statics for the GC system. Set the Flags * value to a bitmask of values that should be returned. Only those values which @@ -50,86 +36,12 @@ typedef struct _COR_GC_STATS SIZE_T KBytesPromotedFromGen1; } COR_GC_STATS; -#endif // FEATURE_INCLUDE_ALL_INTERFACES || FEATURE_WINDOWSPHONE - -#ifdef FEATURE_INCLUDE_ALL_INTERFACES -/* - * This structure is used to return per-thread statistics related to GC. - */ -typedef struct _COR_GC_THREAD_STATS -{ - ULONGLONG PerThreadAllocation; // Amount of memory allocated on this - // thread. Cleared to 0 on each Gen 0 collection. - ULONG Flags; // Thread has bytes promoted in the last GC? -} COR_GC_THREAD_STATS; - - -/* - * This interface is used to get information about the GC system and - * control some aspects of the GC. This interface is for expert usage - * only, and can severely impact the performance of an application if - * used improperly!! - */ -[ - object, - uuid(FAC34F6E-0DCD-47b5-8021-531BC5ECCA63), - pointer_default(unique), - local -] -interface IGCHost : IUnknown -{ - - /* - * Sets the segment size and gen 0 maximum size. This value may only be - * specified once and will not change if called later. - */ - HRESULT SetGCStartupLimits([in] DWORD SegmentSize, [in] DWORD MaxGen0Size); - - /* - * Forces a collection to occur for the given generation, regardless of - * current GC statistics. A value of -1 means collect all generations. - */ - HRESULT Collect([in] LONG Generation); - - /* - * Returns a set of current statistics about the state of the GC system. - * These values can then be used by a smart allocation system to help the - * GC run, by say adding more memory or forcing a collection. - */ - HRESULT GetStats([in][out] COR_GC_STATS *pStats); - - /* - * This method returns the per-thread statics gathered by the GC. - */ - HRESULT GetThreadStats([in] DWORD *pFiberCookie, [in][out] COR_GC_THREAD_STATS *pStats); - - /* - * This method allows the caller to set virtual memory limit (MB) of the runtime. This limit - * can be changed dynamically. - */ - HRESULT SetVirtualMemLimit ([in] SIZE_T sztMaxVirtualMemMB); -} - -[ - object, - uuid(A1D70CEC-2DBE-4E2F-9291-FDF81438A1DF), - pointer_default(unique), - local -] -interface IGCHost2 : IGCHost -{ - /* - * Sets the segment size and gen 0 maximum size. This value may only be - * specified once and will not change if called later. - */ - HRESULT SetGCStartupLimitsEx([in] SIZE_T SegmentSize, [in] SIZE_T MaxGen0Size); -} +#endif // FEATURE_WINDOWSPHONE -#else // FEATURE_INCLUDE_ALL_INTERFACES cpp_quote("/*") cpp_quote(" * WARNING - This is a dummy interface that should never be used.") cpp_quote(" * The code is written this way because Midl requires a CoClass, Interface, etc... that generates") -cpp_quote(" * a guid. Removing the IGCHost interface for FEATURE_INCLUDE_ALL_INTERFACES removes the only guid") +cpp_quote(" * a guid. Removing the IGCHost interface removes the only guid") cpp_quote(" * This option was selected because ifdefs are not simple to implement for excluding files in SOURCES") cpp_quote("*/") [ @@ -141,4 +53,3 @@ cpp_quote("*/") interface IDummyDoNotUse : IUnknown { } -#endif // FEATURE_INCLUDE_ALL_INTERFACES diff --git a/src/inc/vptr_list.h b/src/inc/vptr_list.h index 86c12aec35..fe45684a80 100644 --- a/src/inc/vptr_list.h +++ b/src/inc/vptr_list.h @@ -94,10 +94,6 @@ VPTR_CLASS(HelperMethodFrame_PROTECTOBJ) VPTR_CLASS(HijackFrame) #endif VPTR_CLASS(InlinedCallFrame) -#if defined(FEATURE_INCLUDE_ALL_INTERFACES) && defined(_TARGET_X86_) -VPTR_CLASS(LeaveRuntimeFrame) -VPTR_CLASS(ReverseEnterRuntimeFrame) -#endif VPTR_CLASS(SecureDelegateFrame) VPTR_CLASS(SecurityContextFrame) VPTR_CLASS(MulticastFrame) diff --git a/src/md/compiler/regmeta.cpp b/src/md/compiler/regmeta.cpp index b849c6433a..19c6410ef2 100644 --- a/src/md/compiler/regmeta.cpp +++ b/src/md/compiler/regmeta.cpp @@ -59,9 +59,6 @@ RegMeta::RegMeta() : m_fIsTypeDefDirty(false), m_fIsMemberDefDirty(false), m_fStartedEE(false), -#ifdef FEATURE_INCLUDE_ALL_INTERFACES - m_pCorHost(NULL), -#endif // FEATURE_INCLUDE_ALL_INTERFACES m_pAppDomain(NULL), m_OpenFlags(0), m_cRef(0), @@ -167,10 +164,6 @@ RegMeta::~RegMeta() if (m_fStartedEE) { m_pAppDomain->Release(); -#ifdef FEATURE_INCLUDE_ALL_INTERFACES - m_pCorHost->Stop(); - m_pCorHost->Release(); -#endif // FEATURE_INCLUDE_ALL_INTERFACES } if (m_pFilterManager != NULL) diff --git a/src/md/compiler/regmeta.h b/src/md/compiler/regmeta.h index 5a003ec0a9..658f805790 100644 --- a/src/md/compiler/regmeta.h +++ b/src/md/compiler/regmeta.h @@ -2023,9 +2023,6 @@ protected: bool m_fIsTypeDefDirty; // This flag is set when the TypeRef to TypeDef map is not valid bool m_fIsMemberDefDirty; // This flag is set when the MemberRef to MemberDef map is not valid bool m_fStartedEE; // Set when EE runtime has been started up. -#ifdef FEATURE_INCLUDE_ALL_INTERFACES - ICorRuntimeHost *m_pCorHost; // Hosting environment for EE runtime. -#endif // FEATURE_INCLUDE_ALL_INTERFACES IUnknown *m_pAppDomain; // AppDomain in which managed security code will be run. private: diff --git a/src/pal/prebuilt/inc/gchost.h b/src/pal/prebuilt/inc/gchost.h index 6829b0f531..c9e4fffa18 100644 --- a/src/pal/prebuilt/inc/gchost.h +++ b/src/pal/prebuilt/inc/gchost.h @@ -75,7 +75,7 @@ typedef struct _COR_GC_STATS /* * WARNING - This is a dummy interface that should never be used. * The code is written this way because Midl requires a CoClass, Interface, etc... that generates - * a guid. Removing the IGCHost interface for FEATURE_INCLUDE_ALL_INTERFACES removes the only guid + * a guid. Removing the IGCHost interface removes the only guid * This option was selected because ifdefs are not simple to implement for excluding files in SOURCES */ diff --git a/src/utilcode/util.cpp b/src/utilcode/util.cpp index b9ca380212..b0b81db281 100644 --- a/src/utilcode/util.cpp +++ b/src/utilcode/util.cpp @@ -3486,11 +3486,6 @@ BOOL IsClrHostedLegacyComObject(REFCLSID rclsid) // let's simply check for all CLSIDs that are known to be runtime implemented and capped to 2.0 return ( rclsid == CLSID_ComCallUnmarshal || -#ifdef FEATURE_INCLUDE_ALL_INTERFACES - rclsid == CLSID_CorRuntimeHost || - rclsid == CLSID_CLRRuntimeHost || - rclsid == CLSID_CLRProfiling || -#endif rclsid == CLSID_CorMetaDataDispenser || rclsid == CLSID_CorMetaDataDispenserRuntime || rclsid == CLSID_TypeNameFactory); diff --git a/src/vm/amd64/PInvokeStubs.asm b/src/vm/amd64/PInvokeStubs.asm index 43f1a4752f..4801697fee 100644 --- a/src/vm/amd64/PInvokeStubs.asm +++ b/src/vm/amd64/PInvokeStubs.asm @@ -14,150 +14,6 @@ include AsmConstants.inc extern GenericPInvokeCalliStubWorker:proc extern VarargPInvokeStubWorker:proc -ifdef FEATURE_INCLUDE_ALL_INTERFACES -PInvokeStubForHostWorker equ ?PInvokeStubForHostWorker@@YAXKPEAX0@Z -extern PInvokeStubForHostWorker:proc - -PInvokeStubForHost_CALLEE_SCRATCH_SIZE = 20h - -PInvokeStubForHost_STACK_FRAME_SIZE = PInvokeStubForHost_CALLEE_SCRATCH_SIZE - -; 4 FP parameter registers -PInvokeStubForHost_XMM_SAVE_OFFSET = PInvokeStubForHost_STACK_FRAME_SIZE -PInvokeStubForHost_STACK_FRAME_SIZE = PInvokeStubForHost_STACK_FRAME_SIZE + 40h - -; Ensure that the new rsp will be 16-byte aligned. -if ((PInvokeStubForHost_STACK_FRAME_SIZE + 8) MOD 16) ne 0 -PInvokeStubForHost_STACK_FRAME_SIZE = PInvokeStubForHost_STACK_FRAME_SIZE + 8 -endif - -; Return address is immediately above the local variables. -PInvokeStubForHost_RETURN_ADDRESS_OFFSET = PInvokeStubForHost_STACK_FRAME_SIZE -PInvokeStubForHost_PARAM_REGISTERS_OFFSET = PInvokeStubForHost_RETURN_ADDRESS_OFFSET + 8 - -NESTED_ENTRY PInvokeStubForHost, _TEXT - alloc_stack PInvokeStubForHost_STACK_FRAME_SIZE - END_PROLOGUE - - ; spill args - mov [rsp + PInvokeStubForHost_PARAM_REGISTERS_OFFSET + 0h], rcx - mov [rsp + PInvokeStubForHost_PARAM_REGISTERS_OFFSET + 8h], rdx - mov [rsp + PInvokeStubForHost_PARAM_REGISTERS_OFFSET + 10h], r8 - mov [rsp + PInvokeStubForHost_PARAM_REGISTERS_OFFSET + 18h], r9 - movdqa [rsp + PInvokeStubForHost_XMM_SAVE_OFFSET + 0h], xmm0 - movdqa [rsp + PInvokeStubForHost_XMM_SAVE_OFFSET + 10h], xmm1 - movdqa [rsp + PInvokeStubForHost_XMM_SAVE_OFFSET + 20h], xmm2 - movdqa [rsp + PInvokeStubForHost_XMM_SAVE_OFFSET + 30h], xmm3 - - ; PInvokeStubForHostWorker(#stack args, stack frame, this) - mov r8, rcx - mov rcx, r11 - mov rdx, rsp - call PInvokeStubForHostWorker - - ; unspill return value - mov rax, [rsp + PInvokeStubForHost_XMM_SAVE_OFFSET + 0h] - movdqa xmm0, [rsp + PInvokeStubForHost_XMM_SAVE_OFFSET + 10h] - - add rsp, PInvokeStubForHost_STACK_FRAME_SIZE - ret -NESTED_END PInvokeStubForHost, _TEXT - - -PInvokeStubForHostInner_STACK_FRAME_SIZE = 0 - -; integer registers saved in prologue -PInvokeStubForHostInner_NUM_REG_PUSHES = 2 -PInvokeStubForHostInner_STACK_FRAME_SIZE = PInvokeStubForHostInner_STACK_FRAME_SIZE + PInvokeStubForHostInner_NUM_REG_PUSHES*8 - -; Ensure that the new rsp will be 16-byte aligned. -if ((PInvokeStubForHostInner_STACK_FRAME_SIZE + 8) MOD 16) ne 0 -PInvokeStubForHostInner_STACK_FRAME_SIZE = PInvokeStubForHostInner_STACK_FRAME_SIZE + 8 -endif - -; Return address is immediately above the local variables. -PInvokeStubForHostInner_RETURN_ADDRESS_OFFSET = PInvokeStubForHostInner_STACK_FRAME_SIZE -PInvokeStubForHostInner_PARAM_REGISTERS_OFFSET = PInvokeStubForHostInner_RETURN_ADDRESS_OFFSET + 8 - -PInvokeStubForHostInner_FRAME_OFFSET = PInvokeStubForHost_CALLEE_SCRATCH_SIZE - -; RCX - #stack args -; RDX - PInvokeStubForHost's stack frame -; R8 - target address -NESTED_ENTRY PInvokeStubForHostInner, _TEXT - - push_nonvol_reg rbp - push_nonvol_reg r12 - alloc_stack PInvokeStubForHostInner_FRAME_OFFSET + PInvokeStubForHostInner_STACK_FRAME_SIZE - PInvokeStubForHostInner_NUM_REG_PUSHES*8 - set_frame rbp, PInvokeStubForHostInner_FRAME_OFFSET - END_PROLOGUE - - mov r10, r8 - mov r12, rdx - - test rcx, rcx - jnz HandleStackArgs - - ; - ; Allocate space for scratch area if there are no stack args. - ; - sub rsp, PInvokeStubForHost_CALLEE_SCRATCH_SIZE - -DoneStackArgs: - ; unspill args - mov rcx, [r12 + PInvokeStubForHost_PARAM_REGISTERS_OFFSET + 0h] - mov rdx, [r12 + PInvokeStubForHost_PARAM_REGISTERS_OFFSET + 8h] - mov r8, [r12 + PInvokeStubForHost_PARAM_REGISTERS_OFFSET + 10h] - mov r9, [r12 + PInvokeStubForHost_PARAM_REGISTERS_OFFSET + 18h] - movdqa xmm0, [r12 + PInvokeStubForHost_XMM_SAVE_OFFSET + 0h] - movdqa xmm1, [r12 + PInvokeStubForHost_XMM_SAVE_OFFSET + 10h] - movdqa xmm2, [r12 + PInvokeStubForHost_XMM_SAVE_OFFSET + 20h] - movdqa xmm3, [r12 + PInvokeStubForHost_XMM_SAVE_OFFSET + 30h] - - call r10 - - ; spill return value - mov [r12 + PInvokeStubForHost_XMM_SAVE_OFFSET + 0h], rax - movdqa [r12 + PInvokeStubForHost_XMM_SAVE_OFFSET + 10h], xmm0 - - ; epilogue - lea rsp, [rbp + PInvokeStubForHostInner_RETURN_ADDRESS_OFFSET - PInvokeStubForHostInner_NUM_REG_PUSHES*8] - pop r12 - pop rbp - ret - -; INPUTS: -; RDX - number of stack bytes -; R12 - the outer method's frame pointer -; RSP - -; RBP - -; -HandleStackArgs: - ; - ; Allocate space for stack parameters + scratch area. - ; - sub rsp, rcx - and rsp, -16 - sub rsp, PInvokeStubForHost_CALLEE_SCRATCH_SIZE - - ; - ; Copy stack parameters - ; - shr rcx, 3 ; setup count - - mov r8, rdi - mov r9, rsi - - lea rdi, [rsp + PInvokeStubForHost_CALLEE_SCRATCH_SIZE] ; rdi -> above callee scratch area - lea rsi, [r12 + PInvokeStubForHost_PARAM_REGISTERS_OFFSET + PInvokeStubForHost_CALLEE_SCRATCH_SIZE] - rep movsq - - mov rsi, r9 ; restore rsi - mov rdi, r8 ; restore rdi - jmp DoneStackArgs -NESTED_END PInvokeStubForHostInner, _TEXT -endif ; FEATURE_INCLUDE_ALL_INTERFACES - ; ; in: ; PINVOKE_CALLI_TARGET_REGISTER (r10) = unmanaged target diff --git a/src/vm/amd64/UMThunkStub.asm b/src/vm/amd64/UMThunkStub.asm index ad3f17c854..16bc5368c6 100644 --- a/src/vm/amd64/UMThunkStub.asm +++ b/src/vm/amd64/UMThunkStub.asm @@ -29,10 +29,6 @@ extern g_TrapReturningThreads:dword extern UM2MDoADCallBack:proc extern ReverseEnterRuntimeHelper:proc extern ReverseLeaveRuntimeHelper:proc -ifdef FEATURE_INCLUDE_ALL_INTERFACES -extern gfHostConfig:dword -extern NDirect__IsHostHookEnabled:proc -endif extern UMThunkStubRareDisableWorker:proc extern ReversePInvokeBadTransition:proc @@ -204,16 +200,6 @@ HaveThread: InCooperativeMode: -ifdef FEATURE_INCLUDE_ALL_INTERFACES - test [gfHostConfig], ASM_CLRTASKHOSTED ; inlined NDirect::IsHostHookEnabled ; hosted -ifdef _DEBUG - call IsHostHookEnabledHelper - test eax, eax -endif ; _DEBUG - jnz NotifyHost_ReverseEnterRuntime ; hosted -Done_NotifyHost_ReverseEnterRuntime: -endif - mov rax, [r12 + OFFSETOF__Thread__m_pDomain] mov eax, [rax + OFFSETOF__AppDomain__m_dwId] @@ -238,12 +224,6 @@ PostCall: ; mov dword ptr [r12 + OFFSETOF__Thread__m_fPreemptiveGCDisabled], 0 -ifdef FEATURE_INCLUDE_ALL_INTERFACES - cmp byte ptr [rbp + UMThunkStubAMD64_HOST_NOTIFY_FLAG_OFFSET], 0 ; hosted - jnz NotifyHost_ReverseLeaveRuntime ; hosted -Done_NotifyHost_ReverseLeaveRuntime: -endif - ; epilog lea rsp, [rbp - UMThunkStubAMD64_FRAME_OFFSET + UMThunkStubAMD64_FIXED_STACK_ALLOC_SIZE] pop rbp ; stack_args @@ -352,58 +332,6 @@ CopyLoop: jmp ArgumentsSetup -ifdef FEATURE_INCLUDE_ALL_INTERFACES -NotifyHost_ReverseEnterRuntime: - mov [rbp + UMThunkStubAMD64_RARE_PATH_SPILL_OFFSET], METHODDESC_REGISTER - - mov [rbp + UMThunkStubAMD64_ARGUMENTS_STACK_HOME_OFFSET + 0h], rcx - mov [rbp + UMThunkStubAMD64_ARGUMENTS_STACK_HOME_OFFSET + 8h], rdx - mov [rbp + UMThunkStubAMD64_ARGUMENTS_STACK_HOME_OFFSET + 10h], r8 - mov [rbp + UMThunkStubAMD64_ARGUMENTS_STACK_HOME_OFFSET + 18h], r9 - - ; @CONSIDER: mark UMEntryThunks that have FP params and only save/restore xmm regs on those calls - ; initial measurements indidcate that this could be worth about a 5% savings in reverse - ; pinvoke overhead. - movdqa xmmword ptr [rbp + UMThunkStubAMD64_XMM_SAVE_OFFSET + 0h], xmm0 - movdqa xmmword ptr [rbp + UMThunkStubAMD64_XMM_SAVE_OFFSET + 10h], xmm1 - movdqa xmmword ptr [rbp + UMThunkStubAMD64_XMM_SAVE_OFFSET + 20h], xmm2 - movdqa xmmword ptr [rbp + UMThunkStubAMD64_XMM_SAVE_OFFSET + 30h], xmm3 - - mov rcx, r12 - call ReverseEnterRuntimeHelper - mov byte ptr [rbp + UMThunkStubAMD64_HOST_NOTIFY_FLAG_OFFSET], 1 - - mov rcx, [rbp + UMThunkStubAMD64_ARGUMENTS_STACK_HOME_OFFSET + 0h] - mov rdx, [rbp + UMThunkStubAMD64_ARGUMENTS_STACK_HOME_OFFSET + 8h] - mov r8, [rbp + UMThunkStubAMD64_ARGUMENTS_STACK_HOME_OFFSET + 10h] - mov r9, [rbp + UMThunkStubAMD64_ARGUMENTS_STACK_HOME_OFFSET + 18h] - - ; @CONSIDER: mark UMEntryThunks that have FP params and only save/restore xmm regs on those calls - movdqa xmm0, xmmword ptr [rbp + UMThunkStubAMD64_XMM_SAVE_OFFSET + 0h] - movdqa xmm1, xmmword ptr [rbp + UMThunkStubAMD64_XMM_SAVE_OFFSET + 10h] - movdqa xmm2, xmmword ptr [rbp + UMThunkStubAMD64_XMM_SAVE_OFFSET + 20h] - movdqa xmm3, xmmword ptr [rbp + UMThunkStubAMD64_XMM_SAVE_OFFSET + 30h] - - mov METHODDESC_REGISTER, [rbp + UMThunkStubAMD64_RARE_PATH_SPILL_OFFSET] - - jmp Done_NotifyHost_ReverseEnterRuntime - -NotifyHost_ReverseLeaveRuntime: - - ; save rax, xmm0 - mov [rbp + UMThunkStubAMD64_ARGUMENTS_STACK_HOME_OFFSET + 0h], rax - movdqa xmmword ptr [rbp + UMThunkStubAMD64_XMM_SAVE_OFFSET + 0h], xmm0 - - mov rcx, r12 - call ReverseLeaveRuntimeHelper - mov byte ptr [rbp + UMThunkStubAMD64_HOST_NOTIFY_FLAG_OFFSET], 0 - - ; restore rax, xmm0 - mov rax, [rbp + UMThunkStubAMD64_ARGUMENTS_STACK_HOME_OFFSET + 0h] - movdqa xmm0, xmmword ptr [rbp + UMThunkStubAMD64_XMM_SAVE_OFFSET + 0h] - - jmp Done_NotifyHost_ReverseLeaveRuntime -endif WrongAppDomain: ; @@ -536,48 +464,6 @@ CopyStackArgs: NESTED_END UM2MThunk_WrapperHelper, _TEXT -ifdef _DEBUG -ifdef FEATURE_INCLUDE_ALL_INTERFACES - -NESTED_ENTRY IsHostHookEnabledHelper, _TEXT - - push_nonvol_reg rcx - push_nonvol_reg rdx - push_nonvol_reg r8 - push_nonvol_reg r9 - push_nonvol_reg r10 - -IsHostHookEnabledHelper_FIXED_STACK_ALLOC_SIZE = 20h + 40h - - alloc_stack IsHostHookEnabledHelper_FIXED_STACK_ALLOC_SIZE - - END_PROLOGUE - - movdqa xmmword ptr [rsp + 20h + 0h], xmm0 - movdqa xmmword ptr [rsp + 20h + 10h], xmm1 - movdqa xmmword ptr [rsp + 20h + 20h], xmm2 - movdqa xmmword ptr [rsp + 20h + 30h], xmm3 - - call NDirect__IsHostHookEnabled - - movdqa xmm0, xmmword ptr [rsp + 20h + 0h] - movdqa xmm1, xmmword ptr [rsp + 20h + 10h] - movdqa xmm2, xmmword ptr [rsp + 20h + 20h] - movdqa xmm3, xmmword ptr [rsp + 20h + 30h] - - ; epilog - add rsp, IsHostHookEnabledHelper_FIXED_STACK_ALLOC_SIZE - pop r10 - pop r9 - pop r8 - pop rdx - pop rcx - ret -NESTED_END IsHostHookEnabledHelper, _TEXT - -endif ; FEATURE_INCLUDE_ALL_INTERFACES -endif ; _DEBUG - ifdef FEATURE_MIXEDMODE NESTED_ENTRY IJWNOADThunk__MakeCall, _TEXT ; METHODDESC_REGISTER = IJWNOADThunk* diff --git a/src/vm/amd64/asmconstants.h b/src/vm/amd64/asmconstants.h index ad90dd17ad..c78d5b51e4 100644 --- a/src/vm/amd64/asmconstants.h +++ b/src/vm/amd64/asmconstants.h @@ -47,10 +47,6 @@ ASMCONSTANTS_C_ASSERT(ASM_ELEMENT_TYPE_R4 == ELEMENT_TYPE_R4); #define ASM_ELEMENT_TYPE_R8 0xD ASMCONSTANTS_C_ASSERT(ASM_ELEMENT_TYPE_R8 == ELEMENT_TYPE_R8); -#ifdef FEATURE_INCLUDE_ALL_INTERFACES -#define ASM_CLRTASKHOSTED 0x2 -ASMCONSTANTS_C_ASSERT(ASM_CLRTASKHOSTED == CLRTASKHOSTED); -#endif #define METHODDESC_REGNUM 10 #define METHODDESC_REGISTER r10 diff --git a/src/vm/ceeload.cpp b/src/vm/ceeload.cpp index 00fa966640..9739952fab 100644 --- a/src/vm/ceeload.cpp +++ b/src/vm/ceeload.cpp @@ -4289,21 +4289,6 @@ BOOL Module::IsSymbolReadingEnabled() } #endif // DEBUGGING_SUPPORTED -#ifdef FEATURE_INCLUDE_ALL_INTERFACES - // See if there is an explicit policy configuration overriding our default. - // This can be set by the SymbolReadingPolicy config switch or by a host via - // ICLRDebugManager.AllowFileLineInfo. - ESymbolReadingPolicy policy = CCLRDebugManager::GetSymbolReadingPolicy(); - if( policy == eSymbolReadingAlways ) - { - return TRUE; - } - else if( policy == eSymbolReadingNever ) - { - return FALSE; - } - _ASSERTE( policy == eSymbolReadingFullTrustOnly ); -#endif // FEATURE_INCLUDE_ALL_INTERFACES // Default policy - only read symbols corresponding to full-trust assemblies. // Note that there is no strong (cryptographic) connection between a symbol file and its assembly. diff --git a/src/vm/ceemain.cpp b/src/vm/ceemain.cpp index 850bee3f08..365daf5e34 100644 --- a/src/vm/ceemain.cpp +++ b/src/vm/ceemain.cpp @@ -382,15 +382,6 @@ HRESULT EnsureEEStarted(COINITIEE flags) REGUTIL::InitOptionalConfigCache(); #endif -#ifdef FEATURE_INCLUDE_ALL_INTERFACES - IHostTaskManager *pHostTaskManager = CorHost2::GetHostTaskManager(); - if (pHostTaskManager) - { - BEGIN_SO_TOLERANT_CODE_CALLING_HOST(GetThread()); - pHostTaskManager->BeginThreadAffinity(); - END_SO_TOLERANT_CODE_CALLING_HOST; - } -#endif // FEATURE_INCLUDE_ALL_INTERFACES BOOL bStarted=FALSE; @@ -421,14 +412,6 @@ HRESULT EnsureEEStarted(COINITIEE flags) } } -#ifdef FEATURE_INCLUDE_ALL_INTERFACES - if (pHostTaskManager) - { - BEGIN_SO_TOLERANT_CODE_CALLING_HOST(GetThread()); - pHostTaskManager->EndThreadAffinity(); - END_SO_TOLERANT_CODE_CALLING_HOST; - } -#endif // FEATURE_INCLUDE_ALL_INTERFACES #ifdef FEATURE_TESTHOOKS if(bStarted) TESTHOOKCALL(RuntimeStarted(RTS_INITIALIZED)); @@ -910,10 +893,6 @@ void EEStartupHelper(COINITIEE fFlags) CRWLock::ProcessInit(); #endif // FEATURE_RWLOCK -#ifdef FEATURE_INCLUDE_ALL_INTERFACES - // Initialize debugger manager - CCLRDebugManager::ProcessInit(); -#endif // FEATURE_INCLUDE_ALL_INTERFACES #ifdef FEATURE_IPCMAN // Initialize CCLRSecurityAttributeManager diff --git a/src/vm/comdelegate.cpp b/src/vm/comdelegate.cpp index 2bb792aeab..272316f5cc 100644 --- a/src/vm/comdelegate.cpp +++ b/src/vm/comdelegate.cpp @@ -1592,16 +1592,6 @@ OBJECTREF COMDelegate::ConvertToDelegate(LPVOID pCallback, MethodTable* pMT) } #endif // MDA_SUPPORTED -#ifdef FEATURE_INCLUDE_ALL_INTERFACES - if (NDirect::IsHostHookEnabled() && CallNeedsHostHook((size_t)pCallback)) - { - pInterceptStub = GenerateStubForHost( - pMD, - pStubMD, - pCallback, - pInterceptStub); - } -#endif // FEATURE_INCLUDE_ALL_INTERFACES } diff --git a/src/vm/comsynchronizable.cpp b/src/vm/comsynchronizable.cpp index 3a395235e6..2c26a547cd 100644 --- a/src/vm/comsynchronizable.cpp +++ b/src/vm/comsynchronizable.cpp @@ -110,15 +110,9 @@ static inline BOOL ThreadNotStarted(Thread *t) static inline BOOL ThreadIsRunning(Thread *t) { WRAPPER_NO_CONTRACT; -#ifdef FEATURE_INCLUDE_ALL_INTERFACES - return (t && - (t->m_State & (Thread::TS_ReportDead|Thread::TS_Dead)) == 0 && - (CLRTaskHosted()? t->GetHostTask()!=NULL:t->HasValidThreadHandle())); -#else // !FEATURE_INCLUDE_ALL_INTERFACES return (t && (t->m_State & (Thread::TS_ReportDead|Thread::TS_Dead)) == 0 && (t->HasValidThreadHandle())); -#endif // FEATURE_INCLUDE_ALL_INTERFACES } static inline BOOL ThreadIsDead(Thread *t) @@ -1491,14 +1485,6 @@ FCIMPL1(FC_BOOL_RET, ThreadNative::SetThreadUILocale, StringObject* localeNameUN ThrowHR(HRESULT_FROM_WIN32(GetLastError())); } -#ifdef FEATURE_INCLUDE_ALL_INTERFACES - IHostTaskManager *manager = CorHost2::GetHostTaskManager(); - if (manager) { - BEGIN_SO_TOLERANT_CODE_CALLING_HOST(GetThread()); - result = (manager->SetUILocale(lcid) == S_OK); - END_SO_TOLERANT_CODE_CALLING_HOST; - } -#endif // FEATURE_INCLUDE_ALL_INTERFACES HELPER_METHOD_FRAME_END(); diff --git a/src/vm/corhost.cpp b/src/vm/corhost.cpp index 64f4e2b4cb..1777151a1c 100644 --- a/src/vm/corhost.cpp +++ b/src/vm/corhost.cpp @@ -69,7 +69,7 @@ SVAL_IMPL_INIT(DWORD, CExecutionEngine, TlsIndex, TLS_OUT_OF_INDEXES); #endif -#if defined(FEATURE_INCLUDE_ALL_INTERFACES) || defined(FEATURE_WINDOWSPHONE) +#if defined(FEATURE_WINDOWSPHONE) SVAL_IMPL_INIT(ECustomDumpFlavor, CCLRErrorReportingManager, g_ECustomDumpFlavor, DUMP_FLAVOR_Default); #endif @@ -91,13 +91,10 @@ extern BYTE g_rbTestKeyBuffer[]; ULONG CorRuntimeHostBase::m_Version = 0; -#ifdef FEATURE_INCLUDE_ALL_INTERFACES -static CCLRDebugManager s_CLRDebugManager; -#endif // FEATURE_INCLUDE_ALL_INTERFACES -#if defined(FEATURE_INCLUDE_ALL_INTERFACES) || defined(FEATURE_WINDOWSPHONE) +#if defined(FEATURE_WINDOWSPHONE) CCLRErrorReportingManager g_CLRErrorReportingManager; -#endif // defined(FEATURE_INCLUDE_ALL_INTERFACES) || defined(FEATURE_WINDOWSPHONE) +#endif // defined(FEATURE_WINDOWSPHONE) #ifdef FEATURE_IPCMAN static CCLRSecurityAttributeManager s_CLRSecurityAttributeManager; @@ -107,170 +104,9 @@ static CCLRSecurityAttributeManager s_CLRSecurityAttributeManager; typedef DPTR(CONNID) PTR_CONNID; -#ifdef FEATURE_INCLUDE_ALL_INTERFACES -// Hash table to keep track <connection, name> for SQL fiber support -class ConnectionNameTable : CHashTableAndData<CNewDataNoThrow> -{ - friend class CCLRDebugManager; -public: - - // Key to match is connection ID. - // Returns true if the given HASHENTRY has the same key as the requested key. - BOOL Cmp(SIZE_T requestedKey, const HASHENTRY * pEntry) - { - SUPPORTS_DAC; - LIMITED_METHOD_CONTRACT; - STATIC_CONTRACT_SO_TOLERANT; - - CONNID keyRequested = (CONNID)requestedKey; - CONNID keySearch = dac_cast<PTR_ConnectionNameHashEntry>(pEntry)->m_dwConnectionId; - return keyRequested != keySearch; - } - - // Hash function - ULONG Hash(CONNID dwConnectionId) - { - SUPPORTS_DAC; - LIMITED_METHOD_CONTRACT; - - return (ULONG)(dwConnectionId); - } - -#ifndef DACCESS_COMPILE - // constructor - ConnectionNameTable( - ULONG iBuckets) : // # of chains we are hashing into. - CHashTableAndData<CNewDataNoThrow>(iBuckets) - {LIMITED_METHOD_CONTRACT;} - - // destructor - ~ConnectionNameTable() - { - CONTRACTL - { - if (GetThread()) {GC_TRIGGERS;} else {DISABLED(GC_NOTRIGGER);} - NOTHROW; - } - CONTRACTL_END; - HASHFIND hashFind; - ConnectionNameHashEntry *pNameEntry; - - pNameEntry = (ConnectionNameHashEntry *)FindFirstEntry(&hashFind); - while (pNameEntry != NULL) - { - if (pNameEntry->m_pwzName) - { - delete pNameEntry->m_pwzName; - pNameEntry->m_pwzName = NULL; - } - - if (pNameEntry->m_CLRTaskCount != 0) - { - _ASSERTE(pNameEntry->m_ppCLRTaskArray != NULL); - for (UINT i = 0; i < pNameEntry->m_CLRTaskCount; i++) - { - pNameEntry->m_ppCLRTaskArray[i]->Release(); - } - delete [] pNameEntry->m_ppCLRTaskArray; - pNameEntry->m_ppCLRTaskArray = NULL; - pNameEntry->m_CLRTaskCount = 0; - } - pNameEntry = (ConnectionNameHashEntry *)FindNextEntry(&hashFind); - } - } - - // Add a new connection into hash table. - // This function does not throw but return NULL when memory allocation fails. - ConnectionNameHashEntry *AddConnection( - CONNID dwConnectionId, - __in_z WCHAR *pwzName) // We should review this in the future. This API is - // public and callable by a host. This SAL annotation - // is the best we can do now. - { - CONTRACTL - { - GC_NOTRIGGER; - NOTHROW; - } - CONTRACTL_END; - - ULONG iHash = Hash(dwConnectionId); - - size_t len = wcslen(pwzName) + 1; - WCHAR *pConnName = new (nothrow) WCHAR[len]; - if (pConnName == NULL) - return NULL; - - ConnectionNameHashEntry *pRecord = (ConnectionNameHashEntry *)Add(iHash); - if (pRecord) - { - pRecord->m_dwConnectionId = dwConnectionId; - pRecord->m_pwzName = pConnName; - wcsncpy_s(pRecord->m_pwzName, len, pwzName, len); - pRecord->m_CLRTaskCount = 0; - pRecord->m_ppCLRTaskArray = NULL; - } - else - { - if (pConnName) - delete [] pConnName; - } - - return pRecord; - } - - // Delete a hash entry given a connection id - void DeleteConnection(CONNID dwConnectionId) - { - CONTRACTL - { - GC_NOTRIGGER; - NOTHROW; - } - CONTRACTL_END; - - ULONG iHash; - iHash = Hash(dwConnectionId); - ConnectionNameHashEntry * pRecord = - reinterpret_cast<ConnectionNameHashEntry *>(Find(iHash, (SIZE_T)dwConnectionId)); - if (pRecord == NULL) - { - return; - } - - _ASSERTE(pRecord->m_CLRTaskCount == 0 && pRecord->m_ppCLRTaskArray == NULL); - if (pRecord->m_pwzName) - { - delete pRecord->m_pwzName; - pRecord->m_pwzName = NULL; - } - Delete(iHash, (HASHENTRY *)pRecord); - } - - // return NULL if the given connection id cannot be found. - ConnectionNameHashEntry *FindConnection(CONNID dwConnectionId) - { - CONTRACTL - { - GC_NOTRIGGER; - NOTHROW; - } - CONTRACTL_END; - - ULONG iHash; - iHash = Hash(dwConnectionId); - return reinterpret_cast<ConnectionNameHashEntry *>(Find(iHash, (SIZE_T)dwConnectionId)); - } -#endif // !DAC -}; -#endif //FEATURE_INCLUDE_ALL_INTERFACES // Keep track connection id and name -#ifdef FEATURE_INCLUDE_ALL_INTERFACES -SPTR_IMPL(ConnectionNameTable, CCLRDebugManager, m_pConnectionNameHash); -CrstStatic CCLRDebugManager::m_lockConnectionNameTable; -#endif // FEATURE_INCLUDE_ALL_INTERFACES #ifndef DACCESS_COMPILE @@ -1529,10 +1365,6 @@ ULONG CorHost2::Release() ULONG cRef = InterlockedDecrement(&m_cRef); if (!cRef) { -#ifdef FEATURE_INCLUDE_ALL_INTERFACES - // CorHost2 is allocated before host memory interface is set up. - if (GetHostMemoryManager() == NULL) -#endif // FEATURE_INCLUDE_ALL_INTERFACES delete this; } @@ -1725,19 +1557,11 @@ extern void ValidateHostInterface(); // fusion's global copy of host assembly manager stuff BOOL g_bFusionHosted = FALSE; -#ifdef FEATURE_INCLUDE_ALL_INTERFACES -ICLRAssemblyReferenceList *g_pHostAsmList = NULL; -IHostAssemblyStore *g_pHostAssemblyStore = NULL; -#endif // FEATURE_INCLUDE_ALL_INTERFACES /*static*/ BOOL CorHost2::IsLoadFromBlocked() // LoadFrom, LoadFile and Load(byte[]) are blocked in certain hosting scenarios { LIMITED_METHOD_CONTRACT; -#ifdef FEATURE_INCLUDE_ALL_INTERFACES - return (g_bFusionHosted && (g_pHostAsmList != NULL)); -#else // !FEATURE_INCLUDE_ALL_INTERFACES return FALSE; // as g_pHostAsmList is not defined for CoreCLR; hence above expression will be FALSE. -#endif // FEATURE_INCLUDE_ALL_INTERFACES } static Volatile<BOOL> fOneOnly = 0; @@ -2495,476 +2319,19 @@ EInitializeNewDomainFlags CorHost2::GetAppDomainManagerInitializeNewDomainFlags( return eInitializeNewDomainFlags_None; } -#ifdef FEATURE_INCLUDE_ALL_INTERFACES -// We do not implement the Release since our host does not control the lifetime on this object -ULONG CCLRDebugManager::Release() -{ - LIMITED_METHOD_CONTRACT; - return (1); -} - -HRESULT CCLRDebugManager::QueryInterface(REFIID riid, void **ppUnk) -{ - if (!ppUnk) - return E_POINTER; - - CONTRACTL - { - NOTHROW; - GC_NOTRIGGER; - SO_TOLERANT; - } - CONTRACTL_END; - - HRESULT hr = S_OK; - - if (ppUnk == NULL) - { - return E_POINTER; - } - - *ppUnk = 0; - - // Deliberately do NOT hand out ICorConfiguration. They must explicitly call - // GetConfiguration to obtain that interface. - if (riid == IID_IUnknown) - { - *ppUnk = (IUnknown *) this; - } - else if (riid == IID_ICLRDebugManager) - { - *ppUnk = (ICLRDebugManager *) this; - } - else - { - hr = E_NOINTERFACE; - } - - return hr; - -} - -/* -* -* Called once to when process start up to initialize the lock for connection name hash table -* -*/ -void CCLRDebugManager::ProcessInit() -{ - CONTRACTL - { - THROWS; - GC_NOTRIGGER; - } - CONTRACTL_END; - - m_lockConnectionNameTable.Init(CrstConnectionNameTable, (CrstFlags) (CRST_UNSAFE_ANYMODE | CRST_DEBUGGER_THREAD)); -} - -/* -* Called once to when process shut down to destroy the lock for connection name hash table -* -*/ -void CCLRDebugManager::ProcessCleanup() -{ - CONTRACTL - { - GC_NOTRIGGER; - NOTHROW; - } - CONTRACTL_END; - - m_lockConnectionNameTable.Destroy(); -} -#endif // FEATURE_INCLUDE_ALL_INTERFACES #endif // !DAC #ifdef DACCESS_COMPILE -#ifdef FEATURE_INCLUDE_ALL_INTERFACES - -//--------------------------------------------------------------------------------------- -// Begin an iterating over connections for Debugger -// -// Arguments: -// pHashfind - out: initializes cookie to pass to to future calls to code:CCLRDebugManager.FindNext -// -// Returns: -// NULL if iteration is done. Else a ConnectionNameHashEntry representing the connection. -// -ConnectionNameHashEntry * CCLRDebugManager::FindFirst(HASHFIND * pHashfind) -{ - SUPPORTS_DAC; - if (m_pConnectionNameHash == NULL) - { - return NULL; - } - - ConnectionNameHashEntry * pConnection = dac_cast<PTR_ConnectionNameHashEntry>(m_pConnectionNameHash->FindFirstEntry(pHashfind)); - return pConnection; - } - -//--------------------------------------------------------------------------------------- -// Begin an iterating over connections for Debugger -// -// Arguments: -// pHashfind - in/out: iterator cookie to pass to future calls to code:CCLRDebugManager.FindNext -// -// Returns: -// NULL if iteration is done. Else a ConnectionNameHashEntry representing the connection. -// -ConnectionNameHashEntry * CCLRDebugManager::FindNext(HASHFIND * pHashfind) - { - SUPPORTS_DAC; - ConnectionNameHashEntry * pConnection = dac_cast<PTR_ConnectionNameHashEntry>(m_pConnectionNameHash->FindNextEntry(pHashfind)); - return pConnection; -} - -#endif // FEATURE_INCLUDE_ALL_INTERFACES #endif //DACCESS_COMPILE #ifndef DACCESS_COMPILE -#ifdef FEATURE_INCLUDE_ALL_INTERFACES -HRESULT CCLRDebugManager::IsDebuggerAttached(BOOL *pbAttached) -{ - CONTRACTL - { - NOTHROW; - GC_NOTRIGGER; - ENTRY_POINT; - } - CONTRACTL_END; - if (pbAttached == NULL) - return E_INVALIDARG; - - BEGIN_ENTRYPOINT_NOTHROW; - -#ifdef DEBUGGING_SUPPORTED - *pbAttached = (CORDebuggerAttached() != 0); -#else - *pbAttached = FALSE; -#endif - - END_ENTRYPOINT_NOTHROW; - - - return S_OK; -} - -// By default, we permit symbols to be read for full-trust assemblies only -ESymbolReadingSetBy CCLRDebugManager::m_symbolReadingSetBy = eSymbolReadingSetByDefault; -ESymbolReadingPolicy CCLRDebugManager::m_symbolReadingPolicy = eSymbolReadingFullTrustOnly; - -HRESULT CCLRDebugManager::SetSymbolReadingPolicy(ESymbolReadingPolicy policy) -{ - LIMITED_METHOD_CONTRACT; - STATIC_CONTRACT_ENTRY_POINT; - - if( policy > eSymbolReadingFullTrustOnly ) - { - return E_INVALIDARG; - } - - SetSymbolReadingPolicy( policy, eSymbolReadingSetByHost ); - - return S_OK; -} - -void CCLRDebugManager::SetSymbolReadingPolicy( ESymbolReadingPolicy policy, ESymbolReadingSetBy setBy ) -{ - LIMITED_METHOD_CONTRACT; - _ASSERTE( policy <= eSymbolReadingFullTrustOnly ); // don't have _COUNT because it's not in convention for mscoree.idl enums - _ASSERTE( setBy < eSymbolReadingSetBy_COUNT ); - - // if the setter meets or exceeds the precendence of the existing setting then override the setting - if( setBy >= m_symbolReadingSetBy ) - { - m_symbolReadingSetBy = setBy; - m_symbolReadingPolicy = policy; - } -} - - -/* -* Call by host to set the name of a connection and begin a connection. -* -*/ -HRESULT CCLRDebugManager::BeginConnection( - CONNID dwConnectionId, - __in_z wchar_t *wzConnectionName) // We should review this in the future. This API is - // public and callable by a host. This SAL annotation - // is the best we can do now. -{ - CONTRACTL - { - GC_TRIGGERS; // I am having problem in putting either GC_TRIGGERS or GC_NOTRIGGER. It is not happy either way when debugger - // call back event needs to enable preemptive GC. - ENTRY_POINT; - NOTHROW; - } - CONTRACTL_END; - - HRESULT hr = S_OK; - BEGIN_ENTRYPOINT_NOTHROW; - - ConnectionNameHashEntry *pEntry = NULL; - - // check input parameter - if (dwConnectionId == INVALID_CONNECTION_ID || wzConnectionName == NULL || wzConnectionName[0] == W('\0')) - IfFailGo(E_INVALIDARG); - - if (wcslen(wzConnectionName) >= MAX_CONNECTION_NAME) - IfFailGo(E_INVALIDARG); - - { - CrstHolder ch(&m_lockConnectionNameTable); - - if (m_pConnectionNameHash == NULL) - { - m_pConnectionNameHash = new (nothrow) ConnectionNameTable(50); - IfNullGo(m_pConnectionNameHash); - IfFailGo(m_pConnectionNameHash->NewInit(50, sizeof(ConnectionNameHashEntry), USHRT_MAX)); - } - - // error: Should not have an existing connection id already - if (m_pConnectionNameHash->FindConnection(dwConnectionId)) - IfFailGo(E_INVALIDARG); - - // Our implementation of hashtable cannot throw out of memory exception - pEntry = m_pConnectionNameHash->AddConnection(dwConnectionId, wzConnectionName); - IfNullGo(pEntry); - } - - // send notification to debugger - if (CORDebuggerAttached()) - { - g_pDebugInterface->CreateConnection(dwConnectionId, wzConnectionName); - } - -ErrExit: - END_ENTRYPOINT_NOTHROW; - - return hr; -} - -/* -* Call by host to end a connection -*/ -HRESULT CCLRDebugManager::EndConnection(CONNID dwConnectionId) -{ - CONTRACTL - { - GC_TRIGGERS; - NOTHROW; - ENTRY_POINT; - } - CONTRACTL_END; - - HRESULT hr = S_OK; - UINT CLRTaskCount = 0; - ICLRTask **ppCLRTaskArray = NULL; - - BEGIN_ENTRYPOINT_NOTHROW; - - if (dwConnectionId == INVALID_CONNECTION_ID) - IfFailGo(E_INVALIDARG); - - // No connection exist at all - if (m_pConnectionNameHash == NULL) - IfFailGo(E_FAIL); - - { - CrstHolder ch(&m_lockConnectionNameTable); - ConnectionNameHashEntry *pEntry = NULL; - - if ((pEntry = m_pConnectionNameHash->FindConnection(dwConnectionId)) == NULL) - IfFailGo(E_INVALIDARG); - - // Note that the Release on CLRTask chould take a ThreadStoreLock. So we need to finish our - // business with ConnectionNameHash before hand and release our name hash lock - // - CLRTaskCount = pEntry->m_CLRTaskCount; - ppCLRTaskArray = pEntry->m_ppCLRTaskArray; - pEntry->m_ppCLRTaskArray = NULL; - pEntry->m_CLRTaskCount = 0; - m_pConnectionNameHash->DeleteConnection(dwConnectionId); - } - - if (CLRTaskCount != 0) - { - _ASSERTE(ppCLRTaskArray != NULL); - for (UINT i = 0; i < CLRTaskCount; i++) - { - ((Thread *)ppCLRTaskArray[i])->SetConnectionId(INVALID_CONNECTION_ID); - ppCLRTaskArray[i]->Release(); - } - delete [] ppCLRTaskArray; - } - - // send notification to debugger - if (CORDebuggerAttached()) - g_pDebugInterface->DestroyConnection(dwConnectionId); - -ErrExit: - END_ENTRYPOINT_NOTHROW; - - return hr; -} - -/* -* Call by host to set a set of tasks as a connection. -* -*/ -HRESULT CCLRDebugManager::SetConnectionTasks( - DWORD id, - DWORD dwCount, - ICLRTask **ppCLRTask) -{ - CONTRACTL - { - GC_TRIGGERS; - NOTHROW; - ENTRY_POINT; - } - CONTRACTL_END; - - HRESULT hr = S_OK; - ICLRTask **ppCLRTaskArrayNew = NULL; - UINT CLRTaskCountPrevious = 0; - ICLRTask **ppCLRTaskArrayPrevious = NULL; - - BEGIN_ENTRYPOINT_NOTHROW; - - DWORD index; - Thread *pThread; - ConnectionNameHashEntry *pEntry = NULL; - - if (id == INVALID_CONNECTION_ID || dwCount == 0 || ppCLRTask == NULL) - IfFailGo(E_INVALIDARG); - - { - CrstHolder ch(&m_lockConnectionNameTable); - - // check the BeginConnectin has been called. - if (m_pConnectionNameHash == NULL) - // No connection exist - IfFailGo(E_INVALIDARG); - - // Host forget to call BeginConnection before calling SetConnectionTask! - if ((pEntry = m_pConnectionNameHash->FindConnection(id)) == NULL) - IfFailGo(E_INVALIDARG); - - for (index = 0; index < dwCount; index++) - { - // Check on input parameter - pThread = (Thread *) ppCLRTask[index]; - if (pThread == NULL) - { - // _ASSERTE(!"Host passed in NULL ICLRTask pointer"); - IfFailGo(E_INVALIDARG); - } - - // Check for Finalizer thread - if (GCHeapUtilities::IsGCHeapInitialized() && (pThread == FinalizerThread::GetFinalizerThread())) - { - // _ASSERTE(!"Host should not try to schedule user code on our Finalizer Thread"); - IfFailGo(E_INVALIDARG); - - } - } - - ppCLRTaskArrayNew = new (nothrow) ICLRTask*[dwCount]; - IfNullGo(ppCLRTaskArrayNew); - - CLRTaskCountPrevious = pEntry->m_CLRTaskCount; - ppCLRTaskArrayPrevious = pEntry->m_ppCLRTaskArray; - pEntry->m_ppCLRTaskArray = NULL; - pEntry->m_CLRTaskCount = 0; - - if (CLRTaskCountPrevious != 0) - { - // Clear the old connection set - _ASSERTE(ppCLRTaskArrayPrevious != NULL); - for (UINT i = 0; i < CLRTaskCountPrevious; i++) - ((Thread *)ppCLRTaskArrayPrevious[i])->SetConnectionId(INVALID_CONNECTION_ID); - } - - // now remember the new set - pEntry->m_ppCLRTaskArray = ppCLRTaskArrayNew; - - for (index = 0; index < dwCount; index++) - { - pThread = (Thread *) ppCLRTask[index]; - pThread->SetConnectionId( id ); - pEntry->m_ppCLRTaskArray[index] = ppCLRTask[index]; - } - pEntry->m_CLRTaskCount = dwCount; - - // AddRef and Release on Thread object can call ThreadStoreLock. So we will release our - // lock first of all. - } - - // Does the addref on the new set - for (index = 0; index < dwCount; index++) - ppCLRTaskArrayNew[index]->AddRef(); - - // Does the release on the old set - if (CLRTaskCountPrevious != 0) - { - _ASSERTE(ppCLRTaskArrayPrevious != NULL); - for (UINT i = 0; i < CLRTaskCountPrevious; i++) - ppCLRTaskArrayPrevious[i]->Release(); - delete ppCLRTaskArrayPrevious; - } - - // send notification to debugger - if (CORDebuggerAttached()) - { - g_pDebugInterface->ChangeConnection(id); - } - -ErrExit: - END_ENTRYPOINT_NOTHROW; - return hr; -} - -HRESULT CCLRDebugManager::SetDacl(PACL pacl) -{ - LIMITED_METHOD_CONTRACT; - STATIC_CONTRACT_ENTRY_POINT; - HRESULT hr; - - BEGIN_ENTRYPOINT_NOTHROW; - - hr = E_NOTIMPL; - - END_ENTRYPOINT_NOTHROW; - return hr; -} // SetDACL - - -HRESULT CCLRDebugManager::GetDacl(PACL *pacl) -{ - LIMITED_METHOD_CONTRACT; - STATIC_CONTRACT_ENTRY_POINT; - HRESULT hr; - - BEGIN_ENTRYPOINT_NOTHROW; - - hr = E_NOTIMPL; - - END_ENTRYPOINT_NOTHROW; - return hr; -} // SetDACL - -#endif // FEATURE_INCLUDE_ALL_INTERFACES - -#if defined(FEATURE_INCLUDE_ALL_INTERFACES) || defined(FEATURE_WINDOWSPHONE) +#if defined(FEATURE_WINDOWSPHONE) HRESULT CCLRErrorReportingManager::QueryInterface(REFIID riid, void** ppUnk) { @@ -3344,7 +2711,7 @@ CCLRErrorReportingManager::~CCLRErrorReportingManager() #endif } -#endif // defined(FEATURE_INCLUDE_ALL_INTERFACES) || defined(FEATURE_WINDOWSPHONE) +#endif // defined(FEATURE_WINDOWSPHONE) #ifdef FEATURE_IPCMAN @@ -3683,21 +3050,6 @@ void GetProcessMemoryLoad(LPMEMORYSTATUSEX pMSEX) BOOL fRet = GlobalMemoryStatusEx(pMSEX); _ASSERTE (fRet); -#ifdef FEATURE_INCLUDE_ALL_INTERFACES - // CoreCLR cannot be memory hosted - if (CLRMemoryHosted()) - { - BEGIN_SO_TOLERANT_CODE_CALLING_HOST(GetThread()); - DWORD memoryLoad; - SIZE_T availableBytes; - HRESULT hr = CorHost2::GetHostMemoryManager()->GetMemoryLoad(&memoryLoad, &availableBytes); - if (hr == S_OK) { - pMSEX->dwMemoryLoad = memoryLoad; - pMSEX->ullAvailPhys = availableBytes; - } - END_SO_TOLERANT_CODE_CALLING_HOST; - } -#endif // FEATURE_INCLUDE_ALL_INTERFACES // If the machine has more RAM than virtual address limit, let us cap it. // Our GC can never use more than virtual address limit. diff --git a/src/vm/crst.cpp b/src/vm/crst.cpp index a1a9a9f71f..9613798f93 100644 --- a/src/vm/crst.cpp +++ b/src/vm/crst.cpp @@ -55,34 +55,10 @@ VOID CrstBase::InitWorker(INDEBUG_COMMA(CrstType crstType) CrstFlags flags) _ASSERTE((flags & CRST_INITIALIZED) == 0); -#ifdef FEATURE_INCLUDE_ALL_INTERFACES - IHostSyncManager *pSyncManager = CorHost2::GetHostSyncManager(); - if (pSyncManager) { - ResetOSCritSec (); - } - else -#endif // FEATURE_INCLUDE_ALL_INTERFACES { SetOSCritSec (); } -#ifdef FEATURE_INCLUDE_ALL_INTERFACES - if (!IsOSCritSec()) - { - IHostCrst *pHostCrst; - PREFIX_ASSUME(pSyncManager != NULL); - HRESULT hr; - BEGIN_SO_TOLERANT_CODE_CALLING_HOST(GetThread()); - hr = pSyncManager->CreateCrst(&pHostCrst); - END_SO_TOLERANT_CODE_CALLING_HOST; - if (hr != S_OK) { - _ASSERTE(hr == E_OUTOFMEMORY); - ThrowOutOfMemory(); - } - m_pHostCrst = pHostCrst; - } - else -#endif // FEATURE_INCLUDE_ALL_INTERFACES { UnsafeInitializeCriticalSection(&m_criticalsection); } @@ -118,15 +94,6 @@ void CrstBase::Destroy() // deadlock detection is finished. GCPreemp __gcHolder((m_dwFlags & CRST_HOST_BREAKABLE) == CRST_HOST_BREAKABLE); -#ifdef FEATURE_INCLUDE_ALL_INTERFACES - if (!IsOSCritSec()) - { - BEGIN_SO_TOLERANT_CODE_CALLING_HOST(GetThread()); - m_pHostCrst->Release(); - END_SO_TOLERANT_CODE_CALLING_HOST; - } - else -#endif // FEATURE_INCLUDE_ALL_INTERFACES { UnsafeDeleteCriticalSection(&m_criticalsection); } @@ -361,44 +328,6 @@ void CrstBase::Enter(INDEBUG(NoLevelCheckFlag noLevelCheckFlag/* = CRST_LEVEL_CH } } -#ifdef FEATURE_INCLUDE_ALL_INTERFACES - if (!IsOSCritSec()) - { - DWORD option; - if (m_dwFlags & CRST_HOST_BREAKABLE) - { - option = 0; - } - else - { - option = WAIT_NOTINDEADLOCK; - } - HRESULT hr; - BEGIN_SO_TOLERANT_CODE_CALLING_HOST(pThread); - - // Try entering the critical section once, if we fail we contend - // and fire the contention start ETW event - hr = m_pHostCrst->TryEnter(option, &fIsCriticalSectionEnteredAfterFailingOnce); - - if (! fIsCriticalSectionEnteredAfterFailingOnce) - { - fIsCriticalSectionEnteredAfterFailingOnce = TRUE; - - hr = m_pHostCrst->Enter(option); - } - END_SO_TOLERANT_CODE_CALLING_HOST; - - PREFIX_ASSUME (hr == S_OK || ((m_dwFlags & CRST_HOST_BREAKABLE) && hr == HOST_E_DEADLOCK)); - - if (hr == HOST_E_DEADLOCK) - { - RaiseDeadLockException(); - } - - INCTHREADLOCKCOUNTTHREAD(pThread); - } - else -#endif // FEATURE_INCLUDE_ALL_INTERFACES { if (CLRTaskHosted()) { @@ -407,9 +336,6 @@ void CrstBase::Enter(INDEBUG(NoLevelCheckFlag noLevelCheckFlag/* = CRST_LEVEL_CH UnsafeEnterCriticalSection(&m_criticalsection); -#ifdef FEATURE_INCLUDE_ALL_INTERFACES - INCTHREADLOCKCOUNTTHREAD(pThread); -#endif } @@ -440,27 +366,13 @@ void CrstBase::Leave() PreLeave (); #endif //_DEBUG -#if defined(FEATURE_INCLUDE_ALL_INTERFACES) || defined(_DEBUG) +#if defined(_DEBUG) Thread * pThread = GetThread(); #endif -#ifdef FEATURE_INCLUDE_ALL_INTERFACES - if (!IsOSCritSec()) { - HRESULT hr; - BEGIN_SO_TOLERANT_CODE_CALLING_HOST(pThread); - hr = m_pHostCrst->Leave(); - END_SO_TOLERANT_CODE_CALLING_HOST; - _ASSERTE (hr == S_OK); - DECTHREADLOCKCOUNT (); - } - else -#endif // FEATURE_INCLUDE_ALL_INTERFACES { UnsafeLeaveCriticalSection(&m_criticalsection); -#ifdef FEATURE_INCLUDE_ALL_INTERFACES - DECTHREADLOCKCOUNTTHREAD(pThread); -#endif if (CLRTaskHosted()) { Thread::EndThreadAffinity(); diff --git a/src/vm/crst.h b/src/vm/crst.h index c68f40679c..a353c6ea44 100644 --- a/src/vm/crst.h +++ b/src/vm/crst.h @@ -297,9 +297,6 @@ protected: union { CRITICAL_SECTION m_criticalsection; -#ifdef FEATURE_INCLUDE_ALL_INTERFACES - IHostCrst *m_pHostCrst; -#endif // FEATURE_INCLUDE_ALL_INTERFACES }; typedef enum diff --git a/src/vm/dllimport.cpp b/src/vm/dllimport.cpp index 9f06e11799..444189387d 100644 --- a/src/vm/dllimport.cpp +++ b/src/vm/dllimport.cpp @@ -2266,29 +2266,9 @@ void NDirectStubLinker::DoNDirect(ILCodeStream *pcsEmit, DWORD dwStubFlags, Meth EmitLoadStubContext(pcsEmit, dwStubFlags); } -#ifdef FEATURE_INCLUDE_ALL_INTERFACES - if (NDirect::IsHostHookEnabled()) - { - // we need to call to the host hook, real target is passed as the last argument - Stub *pHostStub = NDirect::GenerateStubForHost( - GetStubSigModule(), - (CorUnmanagedCallingConvention)(GetStubTargetCallingConv() & IMAGE_CEE_CS_CALLCONV_MASK), - pStubMD->AsDynamicMethodDesc()->GetNativeStackArgSize()); - - pcsEmit->EmitLDC((DWORD_PTR)pHostStub->GetEntryPoint()); - } -#endif // FEATURE_INCLUDE_ALL_INTERFACES #else // _TARGET_X86_ -#ifdef FEATURE_INCLUDE_ALL_INTERFACES - if (NDirect::IsHostHookEnabled()) - { - // the stub for host will get the original target from the secret arg - pcsEmit->EmitLDC((DWORD_PTR)GetEEFuncEntryPoint(PInvokeStubForHost)); - } - else -#endif // FEATURE_INCLUDE_ALL_INTERFACES { // the secret arg has been shifted to left and ORed with 1 (see code:GenericPInvokeCalliHelper) EmitLoadStubContext(pcsEmit, dwStubFlags); @@ -5920,12 +5900,6 @@ VOID NDirectMethodDesc::SetNDirectTarget(LPVOID pTarget) } #endif // MDA_SUPPORTED -#ifdef FEATURE_INCLUDE_ALL_INTERFACES - if (fHook) - { - pInterceptStub = GenerateStubForHost(pTarget, pInterceptStub); - } -#endif // FEATURE_INCLUDE_ALL_INTERFACES #endif // _TARGET_X86_ @@ -5949,9 +5923,6 @@ VOID NDirectMethodDesc::SetNDirectTarget(LPVOID pTarget) } #else _ASSERTE(pInterceptStub == NULL); // we don't intercept for anything else than host on !_TARGET_X86_ -#ifdef FEATURE_INCLUDE_ALL_INTERFACES - pWriteableData->m_pNDirectTarget = (LPVOID)GetEEFuncEntryPoint(PInvokeStubForHost); -#endif // FEATURE_INCLUDE_ALL_INTERFACES #endif } else @@ -5961,40 +5932,6 @@ VOID NDirectMethodDesc::SetNDirectTarget(LPVOID pTarget) } -#ifdef FEATURE_INCLUDE_ALL_INTERFACES -BOOL NDirect::IsHostHookEnabled() -{ - WRAPPER_NO_CONTRACT; - // - // WARNING: The non-debug portion of this logic is inlined into UMThunkStubAMD64! - // - return CLRTaskHosted() INDEBUG(|| g_pConfig->ShouldGenerateStubForHost()); -} - -EXTERN_C BOOL CallNeedsHostHook(size_t target) -{ - BOOL fHook = FALSE; - IHostTaskManager *pManager = CorHost2::GetHostTaskManager(); - if (pManager) - { - HRESULT hr; - BEGIN_SO_TOLERANT_CODE_CALLING_HOST(GetThread()); - hr = pManager->CallNeedsHostHook(target,&fHook); - END_SO_TOLERANT_CODE_CALLING_HOST; - _ASSERTE (hr == S_OK); - } -#ifdef _DEBUG - else - { - if (g_pConfig->ShouldGenerateStubForHost()) - { - fHook = TRUE; - } - } -#endif - return fHook; -} -#endif // FEATURE_INCLUDE_ALL_INTERFACES #if defined(_TARGET_X86_) && defined(MDA_SUPPORTED) EXTERN_C VOID __stdcall PInvokeStackImbalanceWorker(StackImbalanceCookie *pSICookie, DWORD dwPostESP) diff --git a/src/vm/dllimport.h b/src/vm/dllimport.h index b08b845625..0caea6bcfd 100644 --- a/src/vm/dllimport.h +++ b/src/vm/dllimport.h @@ -645,7 +645,6 @@ HRESULT FindPredefinedILStubMethod(MethodDesc *pTargetMD, DWORD dwStubFlags, Met EXTERN_C BOOL CallNeedsHostHook(size_t target); -#ifndef FEATURE_INCLUDE_ALL_INTERFACES // // Inlinable implementation allows compiler to strip all code related to host hook // @@ -660,7 +659,6 @@ inline BOOL CallNeedsHostHook(size_t target) LIMITED_METHOD_CONTRACT; return FALSE; } -#endif // // Limit length of string field in IL stub ETW events so that the whole diff --git a/src/vm/dllimportcallback.cpp b/src/vm/dllimportcallback.cpp index 12613cb96b..92604eccd7 100644 --- a/src/vm/dllimportcallback.cpp +++ b/src/vm/dllimportcallback.cpp @@ -378,53 +378,6 @@ VOID UMEntryThunk::CompileUMThunkWorker(UMThunkStubInfo *pInfo, // would deadlock). pcpusl->EmitLabel(pDoADCallBackStartLabel); -#ifdef FEATURE_INCLUDE_ALL_INTERFACES - if (NDirect::IsHostHookEnabled()) - { - // We call ReverseEnterRuntimeHelper before we link a frame. - // So we know that when exception unwinds through our ReverseEnterRuntimeFrame, - // we need call ReverseLeaveRuntime. - - // save registers - pcpusl->X86EmitPushReg(kEAXentryThunk); - pcpusl->X86EmitPushReg(kECXthread); - - // ecx still has Thread - // ReverseEnterRuntimeHelper is a fast call - pcpusl->X86EmitCall(pcpusl->NewExternalCodeLabel((LPVOID)ReverseEnterRuntimeHelper), 0); - - // restore registers - pcpusl->X86EmitPopReg(kECXthread); - pcpusl->X86EmitPopReg(kEAXentryThunk); - - // push reg; leave room for m_next - pcpusl->X86EmitPushReg(kDummyPushReg); - - // push IMM32 ; push Frame vptr - pcpusl->X86EmitPushImm32((UINT32)(size_t)ReverseEnterRuntimeFrame::GetMethodFrameVPtr()); - - // mov edx, esp ;; set EDX -> new frame - pcpusl->X86EmitMovRegSP(kEDX); - - // push IMM32 ; push gsCookie - pcpusl->X86EmitPushImmPtr((LPVOID)GetProcessGSCookie()); - - // save UMEntryThunk - pcpusl->X86EmitPushReg(kEAXentryThunk); - - // mov eax,[ecx + Thread.GetFrame()] ;; get previous frame - pcpusl->X86EmitIndexRegLoad(kEAXentryThunk, kECXthread, Thread::GetOffsetOfCurrentFrame()); - - // mov [edx + Frame.m_next], eax - pcpusl->X86EmitIndexRegStore(kEDX, Frame::GetOffsetOfNextLink(), kEAX); - - // mov [ecx + Thread.GetFrame()], edx - pcpusl->X86EmitIndexRegStore(kECXthread, Thread::GetOffsetOfCurrentFrame(), kEDX); - - // restore EAX - pcpusl->X86EmitPopReg(kEAXentryThunk); - } -#endif #ifdef MDA_SUPPORTED if ((pInfo->m_wFlags & umtmlSkipStub) && !(pInfo->m_wFlags & umtmlIsStatic) && @@ -624,39 +577,6 @@ VOID UMEntryThunk::CompileUMThunkWorker(UMThunkStubInfo *pInfo, // restore the thread pointer pcpusl->X86EmitPopReg(kECXthread); -#ifdef FEATURE_INCLUDE_ALL_INTERFACES - if (NDirect::IsHostHookEnabled()) - { -#ifdef _DEBUG - // lea edx, [esp + sizeof(GSCookie)] ; edx <- current Frame - pcpusl->X86EmitEspOffset(0x8d, kEDX, sizeof(GSCookie)); - pcpusl->EmitCheckGSCookie(kEDX, ReverseEnterRuntimeFrame::GetOffsetOfGSCookie()); -#endif - - // Remove our frame - // Get the previous frame into EDX - // mov edx, [esp + GSCookie + Frame.m_next] - static const BYTE initArg1[] = { 0x8b, 0x54, 0x24, 0x08 }; // mov edx, [esp+8] - _ASSERTE(ReverseEnterRuntimeFrame::GetNegSpaceSize() + Frame::GetOffsetOfNextLink() == 0x8); - pcpusl->EmitBytes(initArg1, sizeof(initArg1)); - - // mov [ecx + Thread.GetFrame()], edx - pcpusl->X86EmitIndexRegStore(kECXthread, Thread::GetOffsetOfCurrentFrame(), kEDX); - - // pop off stack - // add esp, 8 - pcpusl->X86EmitAddEsp(sizeof(GSCookie) + sizeof(ReverseEnterRuntimeFrame)); - - // Save pThread - pcpusl->X86EmitPushReg(kECXthread); - - // ReverseEnterRuntimeHelper is a fast call - pcpusl->X86EmitCall(pcpusl->NewExternalCodeLabel((LPVOID)ReverseLeaveRuntimeHelper), 0); - - // Restore pThread - pcpusl->X86EmitPopReg(kECXthread); - } -#endif // Check whether we got here via the switch AD case. We can tell this by looking at whether the // caller's arguments immediately precede our EBP frame (they will for the non-switch case but diff --git a/src/vm/eeconfig.cpp b/src/vm/eeconfig.cpp index f7301531b4..869a392b1c 100644 --- a/src/vm/eeconfig.cpp +++ b/src/vm/eeconfig.cpp @@ -1300,17 +1300,6 @@ HRESULT EEConfig::sync() MethodTable::AllowParentMethodDataCopy(); } -#ifdef FEATURE_INCLUDE_ALL_INTERFACES - // Get the symbol reading policy setting which is maintained by the hosting API (since it can be overridden there) - const DWORD notSetToken = 0xFFFFFFFF; - DWORD iSymbolReadingConfig = GetConfigDWORDFavoringConfigFile_DontUse_(CLRConfig::EXTERNAL_SymbolReadingPolicy, notSetToken ); - if( iSymbolReadingConfig != notSetToken && - iSymbolReadingConfig <= eSymbolReadingFullTrustOnly ) - { - ESymbolReadingPolicy policy = ESymbolReadingPolicy(iSymbolReadingConfig); - CCLRDebugManager::SetSymbolReadingPolicy( policy, eSymbolReadingSetByConfig ); - } -#endif // FEATURE_INCLUDE_ALL_INTERFACES #if defined(_DEBUG) && defined(_TARGET_AMD64_) m_cGenerateLongJumpDispatchStubRatio = GetConfigDWORD_DontUse_(CLRConfig::INTERNAL_GenerateLongJumpDispatchStubRatio, diff --git a/src/vm/eepolicy.cpp b/src/vm/eepolicy.cpp index b35e9e9864..702dcf123e 100644 --- a/src/vm/eepolicy.cpp +++ b/src/vm/eepolicy.cpp @@ -410,22 +410,6 @@ EPolicyAction EEPolicy::GetActionOnFailure(EClrFailure failure) } EPolicyAction finalAction = GetActionOnFailureNoHostNotification(failure); -#ifdef FEATURE_INCLUDE_ALL_INTERFACES - IHostPolicyManager *pHostPolicyManager = CorHost2::GetHostPolicyManager(); - if (pHostPolicyManager) - { -#ifdef _DEBUG - Thread* pThread = GetThread(); - if (pThread) - { - pThread->AddFiberInfo(Thread::ThreadTrackInfo_Escalation); - } -#endif - BEGIN_SO_TOLERANT_CODE_CALLING_HOST(GetThread()); - pHostPolicyManager->OnFailure(failure, finalAction); - END_SO_TOLERANT_CODE_CALLING_HOST; - } -#endif // FEATURE_INCLUDE_ALL_INTERFACES return finalAction; } @@ -441,22 +425,6 @@ void EEPolicy::NotifyHostOnTimeout(EClrOperation operation, EPolicyAction action } CONTRACTL_END; -#ifdef FEATURE_INCLUDE_ALL_INTERFACES - IHostPolicyManager *pHostPolicyManager = CorHost2::GetHostPolicyManager(); - if (pHostPolicyManager) - { -#ifdef _DEBUG - Thread* pThread = GetThread(); - if (pThread) - { - pThread->AddFiberInfo(Thread::ThreadTrackInfo_Escalation); - } -#endif - BEGIN_SO_TOLERANT_CODE_CALLING_HOST(GetThread()); - pHostPolicyManager->OnTimeout(operation, action); - END_SO_TOLERANT_CODE_CALLING_HOST; - } -#endif // FEATURE_INCLUDE_ALL_INTERFACES } @@ -471,22 +439,6 @@ void EEPolicy::NotifyHostOnDefaultAction(EClrOperation operation, EPolicyAction } CONTRACTL_END; -#ifdef FEATURE_INCLUDE_ALL_INTERFACES - IHostPolicyManager *pHostPolicyManager = CorHost2::GetHostPolicyManager(); - if (pHostPolicyManager) - { -#ifdef _DEBUG - Thread* pThread = GetThread(); - if (pThread) - { - pThread->AddFiberInfo(Thread::ThreadTrackInfo_Escalation); - } -#endif - BEGIN_SO_TOLERANT_CODE_CALLING_HOST(GetThread()); - pHostPolicyManager->OnDefaultAction(operation, action); - END_SO_TOLERANT_CODE_CALLING_HOST; - } -#endif // FEATURE_INCLUDE_ALL_INTERFACES } void SafeExitProcess(UINT exitCode, BOOL fAbort = FALSE, ShutdownCompleteAction sca = SCA_ExitProcessWhenShutdownComplete) diff --git a/src/vm/frames.cpp b/src/vm/frames.cpp index ae3cfdbc75..f93ae0a823 100644 --- a/src/vm/frames.cpp +++ b/src/vm/frames.cpp @@ -2064,88 +2064,6 @@ VOID InlinedCallFrame::Init() m_pCallerReturnAddress = NULL; } -#ifdef FEATURE_INCLUDE_ALL_INTERFACES -#if defined(_WIN64) && !defined(FEATURE_PAL) - -EXTERN_C void PInvokeStubForHostInner(DWORD dwStackSize, LPVOID pStackFrame, LPVOID pTarget); - -// C++ piece of one static stub for host on 64-bit. This is called by PInvokeStubForHost (PInvokeStubs.asm). -void __stdcall PInvokeStubForHostWorker(DWORD dwStackSize, LPVOID pStackFrame, LPVOID pThis) -{ - CONTRACTL - { - THROWS; - GC_TRIGGERS; - ENTRY_POINT; - } - CONTRACTL_END; - - InlinedCallFrame *pFrame = (InlinedCallFrame *)GetThread()->GetFrame(); - _ASSERTE(InlinedCallFrame::FrameHasActiveCall(pFrame)); - - LPVOID pTarget = NULL; - MethodDesc *pMD = pFrame->GetFunction(); - - if (pMD == NULL) - { - // This is a CALLI and m_Datum is a mangled target - pTarget = (LPVOID)((UINT_PTR)pFrame->m_Datum >> 1); - } - else if (pMD->IsNDirect()) - { - pTarget = ((NDirectMethodDesc *)pMD)->ndirect.m_pNativeNDirectTarget; - if (pMD->IsQCall()) - { -#ifdef FEATURE_STACK_PROBE - // We need just the stack probe for QCalls - RetailStackProbe(ADJUST_PROBE(DEFAULT_ENTRY_PROBE_AMOUNT)); -#endif - PInvokeStubForHostInner(dwStackSize, pStackFrame, pTarget); - return; - } - } -#ifdef FEATURE_COMINTEROP - else if (pMD->IsComPlusCall() || pMD->IsEEImpl()) - { - LPVOID *lpVtbl = *(LPVOID **)pThis; - ComPlusCallInfo *pComPlusCallInfo = ComPlusCallInfo::FromMethodDesc(pMD); - pTarget = lpVtbl[pComPlusCallInfo->m_cachedComSlot]; - } -#endif // FEATURE_COMINTEROP - else - { - UNREACHABLE_MSG("Unexpected MethodDesc kind encountered in PInvokeStubForHostWorker"); - } - - // We ask the host on every call. This is different from x86 but we keep this - // behavior for maximum compatibility with previous releases. - if (CallNeedsHostHook((size_t)pTarget)) - { - // call LeaveRuntime - class LeaveRuntimeHolderThrowComplus - { - public: - LeaveRuntimeHolderThrowComplus(size_t target) - { - Thread::LeaveRuntimeThrowComplus(target); - } - ~LeaveRuntimeHolderThrowComplus() - { - Thread::EnterRuntime(); - } - } holder((size_t)pTarget); - - PInvokeStubForHostInner(dwStackSize, pStackFrame, pTarget); - // ~LeaveRuntimeHolderThrowComplus calls EnterRuntime here - } - else - { - // The host doesn't want to be notified - just call the target - PInvokeStubForHostInner(dwStackSize, pStackFrame, pTarget); - } -} -#endif // _WIN64 && !FEATURE_PAL -#endif // FEATURE_INCLUDE_ALL_INTERFACES void UnmanagedToManagedFrame::ExceptionUnwind() diff --git a/src/vm/frames.h b/src/vm/frames.h index 2c9ddb4ab0..2217879ef0 100644 --- a/src/vm/frames.h +++ b/src/vm/frames.h @@ -140,13 +140,6 @@ // +-FuncEvalFrame - frame for debugger function evaluation #endif // DEBUGGING_SUPPORTED // | -#if defined(FEATURE_INCLUDE_ALL_INTERFACES) && defined(_TARGET_X86_) -// | -// +-ReverseEnterRuntimeFrame -// | -// +-LeaveRuntimeFrame -// | -#endif // | // +-ExceptionFilterFrame - this frame wraps call to exception filter // | @@ -271,10 +264,6 @@ FRAME_TYPE_NAME(DebuggerU2MCatchHandlerFrame) #ifdef _TARGET_X86_ FRAME_TYPE_NAME(UMThkCallFrame) #endif -#if defined(FEATURE_INCLUDE_ALL_INTERFACES) && defined(_TARGET_X86_) -FRAME_TYPE_NAME(ReverseEnterRuntimeFrame) -FRAME_TYPE_NAME(LeaveRuntimeFrame) -#endif FRAME_TYPE_NAME(InlinedCallFrame) FRAME_TYPE_NAME(ContextTransitionFrame) FRAME_TYPE_NAME(TailCallFrame) @@ -2957,65 +2946,6 @@ struct ComToManagedExRecord }; #endif // _TARGET_X86_ -#if defined(FEATURE_INCLUDE_ALL_INTERFACES) && defined(_TARGET_X86_) -//----------------------------------------------------------------------------- -// ReverseEnterRuntimeFrame -//----------------------------------------------------------------------------- - -class ReverseEnterRuntimeFrame : public Frame -{ - VPTR_VTABLE_CLASS(ReverseEnterRuntimeFrame, Frame) - -public: - //------------------------------------------------------------------------ - // Performs cleanup on an exception unwind - //------------------------------------------------------------------------ -#ifndef DACCESS_COMPILE - virtual void ExceptionUnwind() - { - WRAPPER_NO_CONTRACT; - GetThread()->ReverseLeaveRuntime(); - } -#endif - - //--------------------------------------------------------------- - // Expose key offsets and values for stub generation. - //--------------------------------------------------------------- - - static UINT32 GetNegSpaceSize() - { - LIMITED_METHOD_CONTRACT; - return sizeof(GSCookie); - } - - // Keep as last entry in class - DEFINE_VTABLE_GETTER_AND_CTOR_AND_DTOR(ReverseEnterRuntimeFrame) -}; - -//----------------------------------------------------------------------------- -// LeaveRuntimeFrame -//----------------------------------------------------------------------------- - -class LeaveRuntimeFrame : public Frame -{ - VPTR_VTABLE_CLASS(LeaveRuntimeFrame, Frame) - -public: - //------------------------------------------------------------------------ - // Performs cleanup on an exception unwind - //------------------------------------------------------------------------ -#ifndef DACCESS_COMPILE - virtual void ExceptionUnwind() - { - WRAPPER_NO_CONTRACT; - Thread::EnterRuntime(); - } -#endif - - // Keep as last entry in class - DEFINE_VTABLE_GETTER_AND_CTOR_AND_DTOR(LeaveRuntimeFrame) -}; -#endif //------------------------------------------------------------------------ // This frame is pushed by any JIT'ted method that contains one or more diff --git a/src/vm/hosting.cpp b/src/vm/hosting.cpp index 7a3f636add..66f59ec183 100644 --- a/src/vm/hosting.cpp +++ b/src/vm/hosting.cpp @@ -220,44 +220,6 @@ LPVOID EEVirtualAlloc(LPVOID lpAddress, SIZE_T dwSize, DWORD flAllocationType, D _ASSERTE (lpAddress || (dwSize % g_SystemInfo.dwAllocationGranularity) == 0); #endif -#ifdef FEATURE_INCLUDE_ALL_INTERFACES - IHostMemoryManager *pMM = CorHost2::GetHostMemoryManager(); - if (pMM) { - LPVOID pMem; - EMemoryCriticalLevel eLevel = eTaskCritical; - if (!g_fEEStarted) - { - eLevel = eProcessCritical; - } - else - { - Thread *pThread = GetThread(); - if (pThread && pThread->HasLockInCurrentDomain()) - { - if (GetAppDomain()->IsDefaultDomain()) - { - eLevel = eProcessCritical; - } - else - { - eLevel = eAppDomainCritical; - } - } - } - HRESULT hr = S_OK; - BEGIN_SO_TOLERANT_CODE_CALLING_HOST(GetThread()); - hr = pMM->VirtualAlloc (lpAddress, dwSize, flAllocationType, flProtect, eLevel, &pMem); - END_SO_TOLERANT_CODE_CALLING_HOST; - - if(hr != S_OK) - { - STRESS_LOG_OOM_STACK(dwSize); - } - - return (hr == S_OK) ? pMem : NULL; - } - else -#endif // FEATURE_INCLUDE_ALL_INTERFACES { LPVOID p = NULL; @@ -321,19 +283,6 @@ BOOL EEVirtualFree(LPVOID lpAddress, SIZE_T dwSize, DWORD dwFreeType) { BOOL retVal = FALSE; -#ifdef FEATURE_INCLUDE_ALL_INTERFACES - IHostMemoryManager *pMM = CorHost2::GetHostMemoryManager(); - if (pMM) { -#ifdef _DEBUG - GlobalAllocStore::ValidateFree(lpAddress); -#endif - - BEGIN_SO_TOLERANT_CODE_CALLING_HOST(GetThread()); - retVal = pMM->VirtualFree (lpAddress, dwSize, dwFreeType) == S_OK; - END_SO_TOLERANT_CODE_CALLING_HOST; - } - else -#endif // FEATURE_INCLUDE_ALL_INTERFACES { #ifdef _DEBUG GlobalAllocStore::RemoveAlloc (lpAddress); @@ -357,20 +306,6 @@ SIZE_T EEVirtualQuery(LPCVOID lpAddress, PMEMORY_BASIC_INFORMATION lpBuffer, SIZ } CONTRACTL_END; -#ifdef FEATURE_INCLUDE_ALL_INTERFACES - IHostMemoryManager *pMM = CorHost2::GetHostMemoryManager(); - if (pMM) { - SIZE_T result; - HRESULT hr = S_OK; - BEGIN_SO_TOLERANT_CODE_CALLING_HOST(GetThread()); - hr = pMM->VirtualQuery((void*)lpAddress, lpBuffer, dwLength, &result); - END_SO_TOLERANT_CODE_CALLING_HOST; - if (FAILED(hr)) - return 0; - return result; - } - else -#endif // FEATURE_INCLUDE_ALL_INTERFACES { return ::VirtualQuery(lpAddress, lpBuffer, dwLength); } @@ -388,17 +323,6 @@ BOOL EEVirtualProtect(LPVOID lpAddress, SIZE_T dwSize, DWORD flNewProtect, PDWOR } CONTRACTL_END; -#ifdef FEATURE_INCLUDE_ALL_INTERFACES - IHostMemoryManager *pMM = CorHost2::GetHostMemoryManager(); - if (pMM) { - BOOL result = FALSE; - BEGIN_SO_TOLERANT_CODE_CALLING_HOST(GetThread()); - result = pMM->VirtualProtect(lpAddress, dwSize, flNewProtect, lpflOldProtect) == S_OK; - END_SO_TOLERANT_CODE_CALLING_HOST; - return result; - } - else -#endif // FEATURE_INCLUDE_ALL_INTERFACES { return ::VirtualProtect(lpAddress, dwSize, flNewProtect, lpflOldProtect); } @@ -413,13 +337,6 @@ HANDLE EEGetProcessHeap() STATIC_CONTRACT_GC_NOTRIGGER; STATIC_CONTRACT_SO_TOLERANT; -#ifdef FEATURE_INCLUDE_ALL_INTERFACES - IHostMemoryManager *pMM = CorHost2::GetHostMemoryManager(); - if (pMM) { - return (HANDLE)1; // pretending we return an handle is ok because handles are ignored by the hosting api - } - else -#endif // FEATURE_INCLUDE_ALL_INTERFACES { return GetProcessHeap(); } @@ -439,14 +356,6 @@ HANDLE EEHeapCreate(DWORD flOptions, SIZE_T dwInitialSize, SIZE_T dwMaximumSize) #ifndef FEATURE_PAL -#ifdef FEATURE_INCLUDE_ALL_INTERFACES - IHostMalloc *pHM = CorHost2::GetHostMalloc(); - if (pHM) - { - return NULL; - } - else -#endif // FEATURE_INCLUDE_ALL_INTERFACES { return ::HeapCreate(flOptions, dwInitialSize, dwMaximumSize); } @@ -469,14 +378,6 @@ BOOL EEHeapDestroy(HANDLE hHeap) #ifndef FEATURE_PAL -#ifdef FEATURE_INCLUDE_ALL_INTERFACES - IHostMalloc *pHM = CorHost2::GetHostMalloc(); - if (pHM) - { - return TRUE; - } - else -#endif // FEATURE_INCLUDE_ALL_INTERFACES { return ::HeapDestroy(hHeap); } @@ -494,54 +395,6 @@ BOOL EEHeapDestroy(HANDLE hHeap) #endif #endif -#ifdef FEATURE_INCLUDE_ALL_INTERFACES -LPVOID EEHeapAllocHosted(IHostMalloc * pHM, SIZE_T dwBytes) -{ - STATIC_CONTRACT_NOTHROW; - STATIC_CONTRACT_SO_INTOLERANT; - - Thread * pThread = GetThreadNULLOk(); - EMemoryCriticalLevel eLevel = eTaskCritical; - if (!g_fEEStarted) - { - eLevel = eProcessCritical; - } - else - { - if (pThread && pThread->HasLockInCurrentDomain()) - { - if (GetAppDomain()->IsDefaultDomain()) - { - eLevel = eProcessCritical; - } - else - { - eLevel = eAppDomainCritical; - } - } - } - LPVOID pMem = NULL; - HRESULT hr = S_OK; - { - CantAllocHolder caHolder; - BEGIN_SO_TOLERANT_CODE_CALLING_HOST(pThread); - hr = pHM->Alloc(dwBytes, eLevel, &pMem); - END_SO_TOLERANT_CODE_CALLING_HOST; - } - - if(hr != S_OK - //under OOM, we might not be able to get Execution Engine and can't access stress log - && GetExecutionEngine () - // If we have not created StressLog ring buffer, we should not try to use it. - // StressLog is going to do a memory allocation. We may enter an endless loop. - && ClrFlsGetValue(TlsIdx_StressLog) != NULL ) - { - STRESS_LOG_OOM_STACK(dwBytes); - } - - return (hr == S_OK) ? pMem : NULL; -} -#endif // FEATURE_INCLUDE_ALL_INTERFACES #undef HeapAlloc LPVOID EEHeapAlloc(HANDLE hHeap, DWORD dwFlags, SIZE_T dwBytes) @@ -555,16 +408,6 @@ LPVOID EEHeapAlloc(HANDLE hHeap, DWORD dwFlags, SIZE_T dwBytes) #endif -#ifdef FEATURE_INCLUDE_ALL_INTERFACES - IHostMalloc *pHM = CorHost2::GetHostMalloc(); - - // TODO: implement hosted executable heap - if (pHM && hHeap != g_ExecutableHeapHandle) - { - return EEHeapAllocHosted(pHM, dwBytes); - } - else -#endif // FEATURE_INCLUDE_ALL_INTERFACES { LPVOID p = NULL; @@ -628,24 +471,6 @@ BOOL EEHeapFree(HANDLE hHeap, DWORD dwFlags, LPVOID lpMem) BOOL retVal = FALSE; -#ifdef FEATURE_INCLUDE_ALL_INTERFACES - IHostMalloc *pHM = CorHost2::GetHostMalloc(); - - // TODO: implement hosted executable heap - if (pHM && hHeap != g_ExecutableHeapHandle) - { - if (lpMem == NULL) { - retVal = TRUE; - } -#ifdef _DEBUG - GlobalAllocStore::ValidateFree(lpMem); -#endif - BEGIN_SO_TOLERANT_CODE_CALLING_HOST(GetThread()); - retVal = pHM->Free(lpMem) == S_OK; - END_SO_TOLERANT_CODE_CALLING_HOST; - } - else -#endif // FEATURE_INCLUDE_ALL_INTERFACES { #ifdef _DEBUG GlobalAllocStore::RemoveAlloc (lpMem); @@ -701,14 +526,6 @@ BOOL EEHeapValidate(HANDLE hHeap, DWORD dwFlags, LPCVOID lpMem) { #ifndef FEATURE_PAL -#ifdef FEATURE_INCLUDE_ALL_INTERFACES - IHostMalloc *pHM = CorHost2::GetHostMalloc(); - if (pHM) - { - return TRUE; - } - else -#endif // FEATURE_INCLUDE_ALL_INTERFACES { return ::HeapValidate(hHeap, dwFlags, lpMem); } @@ -778,42 +595,6 @@ DWORD EESleepEx(DWORD dwMilliseconds, BOOL bAlertable) DWORD res; -#ifdef FEATURE_INCLUDE_ALL_INTERFACES - IHostTaskManager *provider = CorHost2::GetHostTaskManager(); - if ((provider != NULL)){ - DWORD option = 0; - if (bAlertable) - { - option = WAIT_ALERTABLE; - } - - - HRESULT hr; - - BEGIN_SO_TOLERANT_CODE_CALLING_HOST(GetThread()); - hr = provider->Sleep(dwMilliseconds, option); - END_SO_TOLERANT_CODE_CALLING_HOST; - - if (hr == S_OK) { - res = WAIT_OBJECT_0; - } - else if (hr == HOST_E_INTERRUPTED) { - _ASSERTE(bAlertable); - Thread *pThread = GetThread(); - if (pThread) - { - pThread->UserInterruptAPC(APC_Code); - } - res = WAIT_IO_COMPLETION; - } - else - { - _ASSERTE (!"Unknown return from host Sleep\n"); - res = WAIT_OBJECT_0; - } - } - else -#endif // FEATURE_INCLUDE_ALL_INTERFACES { res = ::SleepEx(dwMilliseconds, bAlertable); } @@ -905,22 +686,6 @@ BOOL __DangerousSwitchToThread (DWORD dwSleepMSec, DWORD dwSwitchCount, BOOL goT ClrSleepEx(1, FALSE); } -#ifdef FEATURE_INCLUDE_ALL_INTERFACES - IHostTaskManager *provider = CorHost2::GetHostTaskManager(); - if ((provider != NULL) && (goThroughOS == FALSE)) - { - DWORD option = 0; - - HRESULT hr; - - BEGIN_SO_TOLERANT_CODE_CALLING_HOST(GetThread()); - hr = provider->SwitchToTask(option); - END_SO_TOLERANT_CODE_CALLING_HOST; - - return hr == S_OK; - } - else -#endif // FEATURE_INCLUDE_ALL_INTERFACES { return SwitchToThread(); } diff --git a/src/vm/i386/cgenx86.cpp b/src/vm/i386/cgenx86.cpp index 105b05823e..030f211496 100644 --- a/src/vm/i386/cgenx86.cpp +++ b/src/vm/i386/cgenx86.cpp @@ -1067,522 +1067,6 @@ Stub *GenerateInitPInvokeFrameHelper() RETURN psl->Link(SystemDomain::GetGlobalLoaderAllocator()->GetExecutableHeap()); } -#ifdef FEATURE_INCLUDE_ALL_INTERFACES - -static void STDCALL LeaveRuntimeHelperWithFrame (Thread *pThread, size_t target, Frame *pFrame) -{ - CONTRACTL - { - THROWS; - GC_TRIGGERS; - MODE_PREEMPTIVE; - ENTRY_POINT; - } - CONTRACTL_END; - - Thread::LeaveRuntimeThrowComplus(target); - GCX_COOP_THREAD_EXISTS(pThread); - pFrame->Push(pThread); - -} - -static void STDCALL EnterRuntimeHelperWithFrame (Thread *pThread, Frame *pFrame) -{ - // make sure we restore the original Win32 last error before leaving this function - we are - // called right after returning from the P/Invoke target and the error has not been saved yet - BEGIN_PRESERVE_LAST_ERROR; - - CONTRACTL - { - THROWS; - GC_TRIGGERS; - MODE_PREEMPTIVE; - ENTRY_POINT; - } - CONTRACTL_END; - - { - HRESULT hr = Thread::EnterRuntimeNoThrow(); - GCX_COOP_THREAD_EXISTS(pThread); - if (FAILED(hr)) - { - INSTALL_UNWIND_AND_CONTINUE_HANDLER; - ThrowHR (hr); - UNINSTALL_UNWIND_AND_CONTINUE_HANDLER; - } - - pFrame->Pop(pThread); - } - - END_PRESERVE_LAST_ERROR; -} - -// "ip" is the return address -// This function disassembles the code at the return address to determine -// how many arguments to pop off. -// Returns the number of DWORDs that should be popped off on return. - -static int STDCALL GetStackSizeForVarArgCall(BYTE* ip) -{ - CONTRACTL - { - NOTHROW; - GC_NOTRIGGER; - SO_TOLERANT; - } - CONTRACTL_END; - - int retValue = 0; - //BEGIN_ENTRYPOINT_VOIDRET; - - // The instruction immediately following the call may be a move into esp used for - // P/Invoke stack resilience. For caller-pop calls it's always mov esp, [ebp-n]. - if (ip[0] == 0x8b) - { - if (ip[1] == 0x65) - { - // mov esp, [ebp+disp8] - ip += 3; - } - else if (ip[1] == 0xa5) - { - // mov esp, [ebp+disp32] - ip += 6; - } - } - - if (ip[0] == 0x81 && ip[1] == 0xc4) - { - // add esp, imm32 - retValue = (*(int*)&ip[2])/4; - } - else if (ip[0] == 0x83 && ip[1] == 0xc4) - { - // add esp, imm8 - retValue = ip[2]/4; - } - else if (ip[0] == 0x59) - { - // pop ecx - retValue = 1; - } - else - { - retValue = 0; - } - //END_ENTRYPOINT_VOIDRET; - return retValue; -} - -void LeaveRuntimeStackProbeOnly() -{ - CONTRACTL { - THROWS; - GC_TRIGGERS; - ENTRY_POINT; - } - CONTRACTL_END; - -#ifdef FEATURE_STACK_PROBE - RetailStackProbe(ADJUST_PROBE(DEFAULT_ENTRY_PROBE_AMOUNT)); -#endif -} - -//----------------------------------------------------------------------------- -// Hosting stub for calls from CLR code to unmanaged code -// -// We push a LeaveRuntimeFrame, and then re-push all the arguments. -// Note that we have to support all the different native calling conventions -// viz. stdcall, thiscall, cdecl, varargs - -#if 0 - -This is a diagramatic description of what the stub does: - - (lower addresses) - - | | - +----------------+ <--- ESP - | | - | copied | - | arguments | - | | - | | - +----------------+ - | EDX | - | ECX | - +----------------+ -| | | GSCookie | -| | +----------------+ <--- ESI -| | | vptr | -| | +----------------+ -| | | m_Next | -| | +----------------+ -| | | EDI | Scratch register -| | | ESI | For LeaveRuntimeFrame* -| | | EBX | For Thread* -| | +----------------+ <--- EBP -| | | EBP | -+----------------+ <---ESP +----------------+ -| ret addr | | ret addr | -+----------------+ +----------------+ -| | | | -| arguments | | arguments | -| | | | -| | | | -+----------------+ +----------------+ -| | | | -| caller's frame | | caller's frame | -| | | | - - (higher addresses) - - Stack on entry Stack before the call - to this stub. to unmanaged code. - -#endif - -//----------------------------------------------------------------------------- -// This the layout of the frame of the stub - -struct StubForHostStackFrame -{ - LPVOID m_outgingArgs[1]; - ArgumentRegisters m_argumentRegisters; - GSCookie m_gsCookie; - LeaveRuntimeFrame m_LeaveRuntimeFrame; - CalleeSavedRegisters m_calleeSavedRegisters; - LPVOID m_retAddr; - LPVOID m_incomingArgs[1]; - -public: - - // Where does the FP/EBP point to? - static INT32 GetFPpositionOffset() - { - LIMITED_METHOD_CONTRACT; - return offsetof(StubForHostStackFrame, m_calleeSavedRegisters) + - offsetof(CalleeSavedRegisters, Ebp); - } - - static INT32 GetFPrelOffsOfArgumentRegisters() - { - LIMITED_METHOD_CONTRACT; - return offsetof(StubForHostStackFrame, m_argumentRegisters) - GetFPpositionOffset(); - } - - static INT32 GetFPrelOffsOfCalleeSavedRegisters() - { - LIMITED_METHOD_CONTRACT; - return offsetof(StubForHostStackFrame, m_calleeSavedRegisters) - GetFPpositionOffset(); - } - - static INT32 GetFPrelOffsOfRetAddr() - { - LIMITED_METHOD_CONTRACT; - return offsetof(StubForHostStackFrame, m_retAddr) - GetFPpositionOffset(); - } - - static INT32 GetFPrelOffsOfIncomingArgs() - { - LIMITED_METHOD_CONTRACT; - return offsetof(StubForHostStackFrame, m_incomingArgs) - GetFPpositionOffset(); - } -}; - -static Stub *GenerateStubForHostWorker(LoaderHeap *pHeap, - LPVOID pNativeTarget, // NULL to fetch from the last pushed argument (COM) - Stub *pInnerStub, // stub to call instead of pNativeTarget, or NULL - LONG dwComSlot, // only valid if pNativeTarget is NULL - WORD wStackArgumentSize, // -1 for varargs - WORD wStackPopSize) // 0 for cdecl -{ - STANDARD_VM_CONTRACT; - - // We need to call LeaveRuntime before the target, and EnterRuntime after the target - CPUSTUBLINKER sl; - - sl.X86EmitPushEBPframe(); - - // save EBX, ESI, EDI - sl.X86EmitPushReg(kEBX); - sl.X86EmitPushReg(kESI); - sl.X86EmitPushReg(kEDI); - - // Frame - sl.X86EmitPushReg(kDummyPushReg); // m_Next - sl.X86EmitPushImm32((UINT)(size_t)LeaveRuntimeFrame::GetMethodFrameVPtr()); - - // mov esi, esp; esi is Frame - sl.X86EmitMovRegSP(kESI); - - sl.X86EmitPushImmPtr((LPVOID)GetProcessGSCookie()); - - // Save outgoing arguments on the stack - sl.X86EmitPushReg(kECX); - sl.X86EmitPushReg(kEDX); - - INT32 offs = 0; - if (wStackArgumentSize == (WORD)-1) - { - // Re-push the return address as an argument to GetStackSizeForVarArgCall() - // This will return the number of stack arguments (in DWORDs) - sl.X86EmitIndexPush(kEBP, StubForHostStackFrame::GetFPrelOffsOfRetAddr()); - sl.X86EmitCall(sl.NewExternalCodeLabel((LPVOID)GetStackSizeForVarArgCall), 4); - - // We generate the following code sequence to re-push all the arguments - // - // Note that we cannot use "sub ESP, EAX" as ESP might jump past the - // stack guard-page. - // - // cmp EAX, 0 - // LoopTop: - // jz LoopDone - // push dword ptr[EBP + EAX*4 + 4] - // sub EAX, 1 - // jmp LoopTop - // LoopDone: - // ... - - sl.X86EmitCmpRegImm32(kEAX, 0); - CodeLabel * pLoopTop = sl.EmitNewCodeLabel(); - CodeLabel * pLoopDone = sl.NewCodeLabel(); - sl.X86EmitCondJump(pLoopDone, X86CondCode::kJZ); - sl.X86EmitBaseIndexPush(kEBP, kEAX, 4, StubForHostStackFrame::GetFPrelOffsOfIncomingArgs() - sizeof(LPVOID)); - sl.X86EmitSubReg(kEAX, 1); - sl.X86EmitNearJump(pLoopTop); - sl.EmitLabel(pLoopDone); - } - else - { - offs = StubForHostStackFrame::GetFPrelOffsOfIncomingArgs() + wStackArgumentSize; - - int numStackSlots = wStackArgumentSize / sizeof(LPVOID); - for (int i = 0; i < numStackSlots; i++) { - offs -= sizeof(LPVOID); - sl.X86EmitIndexPush(kEBP, offs); - } - } - - //------------------------------------------------------------------------- - - // EBX has Thread* - // X86TLSFetch_TRASHABLE_REGS will get trashed - sl.X86EmitCurrentThreadFetch(kEBX, 0); - - if (pNativeTarget != NULL) - { - // push Frame - sl.X86EmitPushReg(kESI); - - // push target - if (pNativeTarget == (LPVOID)-1) - { - // target comes right above arguments - sl.X86EmitIndexPush(kEBP, StubForHostStackFrame::GetFPrelOffsOfIncomingArgs() + wStackArgumentSize); - } - else - { - // target is fixed - sl.X86EmitPushImm32((UINT)(size_t)pNativeTarget); - } - } - else - { - // mov eax, [first_arg] - // mov eax, [eax] - // push [eax + slot_offset] - sl.X86EmitIndexRegLoad(kEAX, kEBP, offs); - sl.X86EmitIndexRegLoad(kEAX, kEAX, 0); - sl.X86EmitIndexPush(kEAX, sizeof(LPVOID) * dwComSlot); - - // push Frame - sl.X86EmitPushReg(kESI); - // push [esp + 4] - sl.X86EmitEspOffset(0xff, (X86Reg)6, 4); - } - - // push Thread - sl.X86EmitPushReg(kEBX); - sl.X86EmitCall(sl.NewExternalCodeLabel((LPVOID)LeaveRuntimeHelperWithFrame), 0xc); - - //------------------------------------------------------------------------- - // call NDirect - // See diagram above to see what the stack looks like at this point - - // Restore outgoing arguments - unsigned offsToArgRegs = StubForHostStackFrame::GetFPrelOffsOfArgumentRegisters(); - sl.X86EmitIndexRegLoad(kECX, kEBP, offsToArgRegs + offsetof(ArgumentRegisters, ECX)); - sl.X86EmitIndexRegLoad(kEDX, kEBP, offsToArgRegs + offsetof(ArgumentRegisters, EDX)); - - if (pNativeTarget != NULL || pInnerStub != NULL) - { - if (pNativeTarget == (LPVOID)-1) - { - // mov eax, target - sl.X86EmitIndexRegLoad(kEAX, kEBP, StubForHostStackFrame::GetFPrelOffsOfIncomingArgs() + wStackArgumentSize); - // call eax - sl.Emit16(X86_INSTR_CALL_EAX); - } - else - { - if (pNativeTarget == NULL) - { - // pop target and discard it (we go to the inner stub) - _ASSERTE(pInnerStub != NULL); - sl.X86EmitPopReg(kEAX); - } - - LPVOID pTarget = (pInnerStub != NULL ? (LPVOID)pInnerStub->GetEntryPoint() : pNativeTarget); - sl.X86EmitCall(sl.NewExternalCodeLabel(pTarget), wStackPopSize / 4); - } - } - else - { - // pop target - sl.X86EmitPopReg(kEAX); - // call eax - sl.Emit16(X86_INSTR_CALL_EAX); - } - - //------------------------------------------------------------------------- - // Save return value registers and call EnterRuntimeHelperWithFrame - // - - sl.X86EmitPushReg(kEAX); - sl.X86EmitPushReg(kEDX); - - // push Frame - sl.X86EmitPushReg(kESI); - // push Thread - sl.X86EmitPushReg(kEBX); - // call EnterRuntime - sl.X86EmitCall(sl.NewExternalCodeLabel((LPVOID)EnterRuntimeHelperWithFrame), 8); - - sl.X86EmitPopReg(kEDX); - sl.X86EmitPopReg(kEAX); - - //------------------------------------------------------------------------- - // Tear down the frame - // - - sl.EmitCheckGSCookie(kESI, LeaveRuntimeFrame::GetOffsetOfGSCookie()); - - // lea esp, [ebp - offsToCalleeSavedRegs] - unsigned offsToCalleeSavedRegs = StubForHostStackFrame::GetFPrelOffsOfCalleeSavedRegisters(); - sl.X86EmitIndexLea((X86Reg)kESP_Unsafe, kEBP, offsToCalleeSavedRegs); - - sl.X86EmitPopReg(kEDI); - sl.X86EmitPopReg(kESI); - sl.X86EmitPopReg(kEBX); - - sl.X86EmitPopReg(kEBP); - - // ret [wStackPopSize] - sl.X86EmitReturn(wStackPopSize); - - if (pInnerStub != NULL) - { - // this stub calls another stub - return sl.LinkInterceptor(pHeap, pInnerStub, pNativeTarget); - } - else - { - return sl.Link(pHeap); - } -} - - -//----------------------------------------------------------------------------- -Stub *NDirectMethodDesc::GenerateStubForHost(LPVOID pNativeTarget, Stub *pInnerStub) -{ - STANDARD_VM_CONTRACT; - - // We need to call LeaveRuntime before the target, and EnterRuntime after the target - - if (IsQCall()) - { - // We need just the stack probe for QCalls - CPUSTUBLINKER sl; - sl.X86EmitCall(sl.NewExternalCodeLabel((LPVOID)LeaveRuntimeStackProbeOnly), 0); - - sl.X86EmitNearJump(sl.NewExternalCodeLabel((LPVOID)pNativeTarget)); - - return sl.Link(GetLoaderAllocator()->GetStubHeap()); - } - - WORD wArgSize = (IsVarArgs() ? (WORD)-1 : GetStackArgumentSize()); - WORD wPopSize = ((IsStdCall() || IsThisCall()) ? GetStackArgumentSize() : 0); - - return GenerateStubForHostWorker(GetDomain()->GetLoaderAllocator()->GetStubHeap(), - pNativeTarget, - pInnerStub, - 0, - wArgSize, - wPopSize); -} - - -#ifdef FEATURE_COMINTEROP - -//----------------------------------------------------------------------------- -Stub *ComPlusCallInfo::GenerateStubForHost(LoaderHeap *pHeap, Stub *pInnerStub) -{ - STANDARD_VM_CONTRACT; - - WORD wArgSize = GetStackArgumentSize(); - - return GenerateStubForHostWorker(pHeap, - NULL, - pInnerStub, - m_cachedComSlot, - wArgSize, - wArgSize); // always stdcall -} - -#endif // FEATURE_COMINTEROP - -//----------------------------------------------------------------------------- -// static -Stub *COMDelegate::GenerateStubForHost(MethodDesc *pInvokeMD, MethodDesc *pStubMD, LPVOID pNativeTarget, Stub *pInnerStub) -{ - STANDARD_VM_CONTRACT; - - // get unmanaged calling convention from pInvokeMD's metadata - PInvokeStaticSigInfo sigInfo(pInvokeMD); - CorPinvokeMap callConv = sigInfo.GetCallConv(); - - WORD wArgSize = pStubMD->AsDynamicMethodDesc()->GetNativeStackArgSize(); - WORD wPopSize = (callConv == pmCallConvCdecl ? 0 : wArgSize); - - return GenerateStubForHostWorker(NULL, // we want to free this stub when the delegate dies - pNativeTarget, - pInnerStub, - 0, - wArgSize, - wPopSize); -} - -//----------------------------------------------------------------------------- -// static -Stub *NDirect::GenerateStubForHost(Module *pModule, CorUnmanagedCallingConvention callConv, WORD wArgSize) -{ - STANDARD_VM_CONTRACT; - - // This one is for unmanaged CALLI where the target is passed as last argument - // (first pushed to stack) - - WORD wPopSize = (callConv == IMAGE_CEE_CS_CALLCONV_C ? 0 : (wArgSize + STACK_ELEM_SIZE)); - - return GenerateStubForHostWorker(pModule->GetDomain()->GetLoaderAllocator()->GetStubHeap(), - (LPVOID)-1, - NULL, - 0, - wArgSize, - wPopSize); -} - -#endif // FEATURE_INCLUDE_ALL_INTERFACES #ifdef MDA_SUPPORTED diff --git a/src/vm/nativeoverlapped.cpp b/src/vm/nativeoverlapped.cpp index 1f622275c6..6b2d808680 100644 --- a/src/vm/nativeoverlapped.cpp +++ b/src/vm/nativeoverlapped.cpp @@ -156,21 +156,6 @@ FCIMPL1(void*, AllocateNativeOverlapped, OverlappedDataObject* overlappedUNSAFE) handle = GetAppDomain()->CreateTypedHandle(overlapped, HNDTYPE_ASYNCPINNED); -#ifdef FEATURE_INCLUDE_ALL_INTERFACES - // CoreCLR does not have IO completion hosted - if (CLRIoCompletionHosted()) - { - _ASSERTE(CorHost2::GetHostIoCompletionManager()); - HRESULT hr; - BEGIN_SO_TOLERANT_CODE_CALLING_HOST(GetThread()); - hr = CorHost2::GetHostIoCompletionManager()->InitializeHostOverlapped(&overlapped->Internal); - END_SO_TOLERANT_CODE_CALLING_HOST; - if (FAILED(hr)) - { - COMPlusThrowHR(hr); - } - } -#endif // FEATURE_INCLUDE_ALL_INTERFACES handle.SuppressRelease(); overlapped->m_pinSelf = handle; diff --git a/src/vm/peimage.h b/src/vm/peimage.h index 4acd544155..2c8f834036 100644 --- a/src/vm/peimage.h +++ b/src/vm/peimage.h @@ -60,9 +60,6 @@ typedef DPTR(class PEImage) PTR_PEImage; class PEImage { friend class PEModule; -#ifdef FEATURE_INCLUDE_ALL_INTERFACES - friend class CCLRDebugManager; -#endif // FEATURE_INCLUDE_ALL_INTERFACES public: // ------------------------------------------------------------ // Public constants diff --git a/src/vm/peimagelayout.h b/src/vm/peimagelayout.h index d3949edc7a..79df992822 100644 --- a/src/vm/peimagelayout.h +++ b/src/vm/peimagelayout.h @@ -33,9 +33,6 @@ class PEImageLayout : public PEDecoder { VPTR_BASE_CONCRETE_VTABLE_CLASS(PEImageLayout) friend class PEModule; -#ifdef FEATURE_INCLUDE_ALL_INTERFACES - friend class CCLRDebugManager; -#endif // FEATURE_INCLUDE_ALL_INTERFACES public: // ------------------------------------------------------------ // Public constants diff --git a/src/vm/spinlock.cpp b/src/vm/spinlock.cpp index de5894ee87..eedb95ff79 100644 --- a/src/vm/spinlock.cpp +++ b/src/vm/spinlock.cpp @@ -37,9 +37,6 @@ SpinLock::SpinLock() STATIC_CONTRACT_NOTHROW; STATIC_CONTRACT_GC_NOTRIGGER; -#ifdef FEATURE_INCLUDE_ALL_INTERFACES - m_hostLock = NULL; -#endif // FEATURE_INCLUDE_ALL_INTERFACES m_Initialized = UnInitialized; } @@ -53,12 +50,6 @@ SpinLock::~SpinLock() } CONTRACTL_END; -#ifdef FEATURE_INCLUDE_ALL_INTERFACES - if (CLRSyncHosted() && m_hostLock) { - m_hostLock->Release(); - m_hostLock = NULL; - } -#endif // FEATURE_INCLUDE_ALL_INTERFACES } void SpinLock::Init(LOCK_TYPE type, bool RequireCoopGC) @@ -115,26 +106,6 @@ void SpinLock::Init(LOCK_TYPE type, bool RequireCoopGC) } } -#ifdef FEATURE_INCLUDE_ALL_INTERFACES - IHostSyncManager *pManager = CorHost2::GetHostSyncManager(); - _ASSERTE((pManager == NULL && m_lock == 0) || - (pManager && m_hostLock == NULL)); - - if (pManager) - { - HRESULT hr; - BEGIN_SO_TOLERANT_CODE_CALLING_HOST(GetThread()); - hr = pManager->CreateCrst(&m_hostLock); - END_SO_TOLERANT_CODE_CALLING_HOST; - if (hr != S_OK) { - _ASSERTE (hr == E_OUTOFMEMORY); - _ASSERTE (m_Initialized == BeingInitialized); - m_Initialized = UnInitialized; - ThrowOutOfMemory(); - } - } - else -#endif // FEATURE_INCLUDE_ALL_INTERFACES { m_lock = 0; } @@ -196,19 +167,6 @@ void SpinLock::GetLock(Thread* pThread) dbg_PreEnterLock(); #endif -#ifdef FEATURE_INCLUDE_ALL_INTERFACES - if (CLRSyncHosted()) - { - DWORD option = WAIT_NOTINDEADLOCK; - HRESULT hr; - BEGIN_SO_TOLERANT_CODE_CALLING_HOST(pThread); - hr = m_hostLock->Enter(option); - END_SO_TOLERANT_CODE_CALLING_HOST; - _ASSERTE(hr == S_OK); - EE_LOCK_TAKEN(this); - } - else -#endif // FEATURE_INCLUDE_ALL_INTERFACES { // Not CLR Sync hosted, so we use interlocked operations on // m_lock to acquire the lock. This will automatically cause @@ -241,25 +199,6 @@ BOOL SpinLock::GetLockNoWait() } CONTRACTL_END; -#ifdef FEATURE_INCLUDE_ALL_INTERFACES - if (CLRSyncHosted()) - { - BOOL result; - HRESULT hr; - BEGIN_SO_TOLERANT_CODE_CALLING_HOST(GetThread()); - hr = m_hostLock->TryEnter(WAIT_NOTINDEADLOCK, &result); - END_SO_TOLERANT_CODE_CALLING_HOST; - _ASSERTE(hr == S_OK); - - if (result) - { - EE_LOCK_TAKEN(this); - } - - return result; - } - else -#endif // FEATURE_INCLUDE_ALL_INTERFACES { if (VolatileLoad(&m_lock) == 0 && FastInterlockExchange (&m_lock, 1) == 0) { @@ -292,17 +231,6 @@ void SpinLock::FreeLock(Thread* pThread) dbg_LeaveLock(); #endif -#ifdef FEATURE_INCLUDE_ALL_INTERFACES - if (CLRSyncHosted()) - { - HRESULT hr; - BEGIN_SO_TOLERANT_CODE_CALLING_HOST(pThread); - hr = m_hostLock->Leave(); - END_SO_TOLERANT_CODE_CALLING_HOST; - _ASSERTE (hr == S_OK); - } - else -#endif // FEATURE_INCLUDE_ALL_INTERFACES { VolatileStore(&m_lock, (LONG)0); } diff --git a/src/vm/spinlock.h b/src/vm/spinlock.h index 23a9c47760..f576f6cc15 100644 --- a/src/vm/spinlock.h +++ b/src/vm/spinlock.h @@ -153,9 +153,6 @@ private: union { // m_lock has to be the fist data member in the class LONG m_lock; // LONG used in interlocked exchange -#ifdef FEATURE_INCLUDE_ALL_INTERFACES - IHostCrst *m_hostLock; -#endif // FEATURE_INCLUDE_ALL_INTERFACES }; enum SpinLockState @@ -210,24 +207,14 @@ public: static void AcquireLock(SpinLock *s, Thread * pThread); static void ReleaseLock(SpinLock *s, Thread * pThread); -#ifdef FEATURE_INCLUDE_ALL_INTERFACES -#define SPINLOCK_THREAD_PARAM_ONLY_IN_SOME_BUILDS m_pThread -#else #define SPINLOCK_THREAD_PARAM_ONLY_IN_SOME_BUILDS NULL -#endif class Holder { SpinLock * m_pSpinLock; -#ifdef FEATURE_INCLUDE_ALL_INTERFACES - Thread * m_pThread; -#endif public: Holder(SpinLock * s) : m_pSpinLock(s) -#ifdef FEATURE_INCLUDE_ALL_INTERFACES - , m_pThread(GetThread()) -#endif { SCAN_SCOPE_BEGIN; STATIC_CONTRACT_GC_NOTRIGGER; diff --git a/src/vm/stubhelpers.cpp b/src/vm/stubhelpers.cpp index 20f76cdc5e..773cdefd42 100644 --- a/src/vm/stubhelpers.cpp +++ b/src/vm/stubhelpers.cpp @@ -1187,13 +1187,6 @@ FCIMPL2(void*, StubHelpers::GetDelegateTarget, DelegateObject *pThisUNSAFE, UINT // see IL code gen in NDirectStubLinker::DoNDirect for details. *ppStubArg = target; -#ifdef FEATURE_INCLUDE_ALL_INTERFACES - if (NDirect::IsHostHookEnabled()) - { - // There's one static stub on !_TARGET_X86_. - pEntryPoint = GetEEFuncEntryPoint(PInvokeStubForHost); - } -#endif // FEATURE_INCLUDE_ALL_INTERFACES #elif defined(_TARGET_ARM_) // @ARMTODO: Nothing to do for ARM yet since we don't support the hosted path. #endif // _WIN64, _TARGET_ARM_ diff --git a/src/vm/synch.cpp b/src/vm/synch.cpp index 216dd31587..33ae636f2f 100644 --- a/src/vm/synch.cpp +++ b/src/vm/synch.cpp @@ -28,28 +28,6 @@ void CLREventBase::CreateAutoEvent (BOOL bInitialState // If TRUE, initial stat SetAutoEvent(); -#ifdef FEATURE_INCLUDE_ALL_INTERFACES - IHostSyncManager *pManager = CorHost2::GetHostSyncManager(); - if (pManager != NULL) { - IHostAutoEvent *pEvent; - HRESULT hr; - BEGIN_SO_TOLERANT_CODE_CALLING_HOST(GetThread()); - hr = pManager->CreateAutoEvent(&pEvent); - END_SO_TOLERANT_CODE_CALLING_HOST; - if (hr != S_OK) { - _ASSERTE (hr == E_OUTOFMEMORY); - ThrowOutOfMemory(); - } - if (bInitialState) - { - BEGIN_SO_TOLERANT_CODE_CALLING_HOST(GetThread()); - pEvent->Set(); - END_SO_TOLERANT_CODE_CALLING_HOST; - } - m_handle = (HANDLE)pEvent; - } - else -#endif // FEATURE_INCLUDE_ALL_INTERFACES { HANDLE h = UnsafeCreateEvent(NULL,FALSE,bInitialState,NULL); if (h == NULL) { @@ -102,22 +80,6 @@ void CLREventBase::CreateManualEvent (BOOL bInitialState // If TRUE, initial st } CONTRACTL_END; -#ifdef FEATURE_INCLUDE_ALL_INTERFACES - IHostSyncManager *pManager = CorHost2::GetHostSyncManager(); - if (pManager != NULL){ - IHostManualEvent *pEvent; - HRESULT hr; - BEGIN_SO_TOLERANT_CODE_CALLING_HOST(GetThread()); - hr = pManager->CreateManualEvent(bInitialState, &pEvent); - END_SO_TOLERANT_CODE_CALLING_HOST; - if (hr != S_OK) { - _ASSERTE (hr == E_OUTOFMEMORY); - ThrowOutOfMemory(); - } - m_handle = (HANDLE)pEvent; - } - else -#endif // FEATURE_INCLUDE_ALL_INTERFACES { HANDLE h = UnsafeCreateEvent(NULL,TRUE,bInitialState,NULL); if (h == NULL) { @@ -170,28 +132,6 @@ void CLREventBase::CreateMonitorEvent(SIZE_T Cookie) // thread-safe SetAutoEvent FastInterlockOr(&m_dwFlags, CLREVENT_FLAGS_AUTO_EVENT); -#ifdef FEATURE_INCLUDE_ALL_INTERFACES - IHostSyncManager *pManager = CorHost2::GetHostSyncManager(); - if (pManager != NULL){ - IHostAutoEvent *pEvent; - HRESULT hr; - BEGIN_SO_TOLERANT_CODE_CALLING_HOST(GetThread()); - hr = pManager->CreateMonitorEvent(Cookie,&pEvent); - END_SO_TOLERANT_CODE_CALLING_HOST; - if (hr != S_OK) { - _ASSERTE (hr == E_OUTOFMEMORY); - ThrowOutOfMemory(); - } - if (FastInterlockCompareExchangePointer(&m_handle, - reinterpret_cast<HANDLE>(pEvent), - INVALID_HANDLE_VALUE) != INVALID_HANDLE_VALUE) - { - // We lost the race - pEvent->Release(); - } - } - else -#endif // FEATURE_INCLUDE_ALL_INTERFACES { HANDLE h = UnsafeCreateEvent(NULL,FALSE,FALSE,NULL); if (h == NULL) { @@ -290,30 +230,6 @@ void CLREventBase::CreateRWLockWriterEvent (BOOL bInitialState, // If TRUE, ini SetAutoEvent(); -#ifdef FEATURE_INCLUDE_ALL_INTERFACES - IHostSyncManager *pManager = CorHost2::GetHostSyncManager(); - if (pManager != NULL){ - // Need to have a fixed cookie. Use a weak handle for this purpose. - IHostAutoEvent *pEvent; - HRESULT hr; - SIZE_T cookie = (SIZE_T)pRWLock->GetObjectHandle(); - BEGIN_SO_TOLERANT_CODE_CALLING_HOST(GetThread()); - hr = pManager->CreateRWLockWriterEvent(cookie, &pEvent); - END_SO_TOLERANT_CODE_CALLING_HOST; - if (hr != S_OK) { - _ASSERTE (hr == E_OUTOFMEMORY); - ThrowOutOfMemory(); - } - if (bInitialState) - { - BEGIN_SO_TOLERANT_CODE_CALLING_HOST(GetThread()); - pEvent->Set(); - END_SO_TOLERANT_CODE_CALLING_HOST; - } - m_handle = (HANDLE)pEvent; - } - else -#endif // FEATURE_INCLUDE_ALL_INTERFACES { HANDLE h = UnsafeCreateEvent(NULL,FALSE,bInitialState,NULL); if (h == NULL) { @@ -480,22 +396,6 @@ void CLREventBase::CloseEvent() _ASSERTE(Thread::Debug_AllowCallout()); if (m_handle != INVALID_HANDLE_VALUE) { -#ifdef FEATURE_INCLUDE_ALL_INTERFACES - if (!IsOSEvent() && CLRSyncHosted()) - { - BEGIN_SO_TOLERANT_CODE_CALLING_HOST(GetThread()); - - if (IsAutoEvent()) { - ((IHostAutoEvent*)m_handle)->Release(); - } - else { - ((IHostManualEvent*)m_handle)->Release(); - } - - END_SO_TOLERANT_CODE_CALLING_HOST; - } - else -#endif // FEATURE_INCLUDE_ALL_INTERFACES { CloseHandle(m_handle); } @@ -519,26 +419,6 @@ BOOL CLREventBase::Set() _ASSERTE(Thread::Debug_AllowCallout()); -#ifdef FEATURE_INCLUDE_ALL_INTERFACES - if (!IsOSEvent() && CLRSyncHosted()) - { - if (IsAutoEvent()) { - HRESULT hr; - BEGIN_SO_TOLERANT_CODE_CALLING_HOST(GetThread()); - hr = ((IHostAutoEvent*)m_handle)->Set(); - END_SO_TOLERANT_CODE_CALLING_HOST; - return hr == S_OK; - } - else { - HRESULT hr; - BEGIN_SO_TOLERANT_CODE_CALLING_HOST(GetThread()); - hr = ((IHostManualEvent*)m_handle)->Set(); - END_SO_TOLERANT_CODE_CALLING_HOST; - return hr == S_OK; - } - } - else -#endif // FEATURE_INCLUDE_ALL_INTERFACES { return UnsafeSetEvent(m_handle); } @@ -563,163 +443,11 @@ BOOL CLREventBase::Reset() _ASSERTE (!IsAutoEvent() || !"Can not call Reset on AutoEvent"); -#ifdef FEATURE_INCLUDE_ALL_INTERFACES - if (!IsOSEvent() && CLRSyncHosted()) - { - HRESULT hr; - BEGIN_SO_TOLERANT_CODE_CALLING_HOST(GetThread()); - hr = ((IHostManualEvent*)m_handle)->Reset(); - END_SO_TOLERANT_CODE_CALLING_HOST; - return hr == S_OK; - } - else -#endif // FEATURE_INCLUDE_ALL_INTERFACES { return UnsafeResetEvent(m_handle); } } -#ifdef FEATURE_INCLUDE_ALL_INTERFACES -static DWORD HostAutoEventWait (void *args, DWORD timeout, DWORD option) -{ - BOOL alertable = (option & WAIT_ALERTABLE); - CONTRACTL - { - if (alertable) - { - THROWS; - } - else - { - NOTHROW; - } - if (GetThread()) - { - if (alertable) - GC_TRIGGERS; - else - GC_NOTRIGGER; - } - else - { - DISABLED(GC_TRIGGERS); - } - SO_TOLERANT; - PRECONDITION(CheckPointer(args)); - } - CONTRACTL_END; - -#ifdef FEATURE_INCLUDE_ALL_INTERFACES - HRESULT hr; - BEGIN_SO_TOLERANT_CODE_CALLING_HOST(GetThread()); - hr = ((IHostAutoEvent*)args)->Wait(timeout,option); - END_SO_TOLERANT_CODE_CALLING_HOST; -#ifdef _DEBUG - if (FAILED(hr) && timeout == INFINITE) { - _ASSERTE (option & WAIT_ALERTABLE); - } -#endif - if (hr == S_OK) { - return WAIT_OBJECT_0; - } - else if (hr == HOST_E_DEADLOCK) { - RaiseDeadLockException(); - } - else if (hr == HOST_E_INTERRUPTED) { - _ASSERTE (option & WAIT_ALERTABLE); - Thread *pThread = GetThread(); - if (pThread) - { - Thread::UserInterruptAPC(APC_Code); - } - return WAIT_IO_COMPLETION; - } - else if (hr == HOST_E_TIMEOUT) { - return WAIT_TIMEOUT; - } - else if (hr == HOST_E_ABANDONED) { - return WAIT_ABANDONED; - } - else if (hr == E_FAIL) { - _ASSERTE (!"Unknown host wait failure"); - } - else -#endif // FEATURE_INCLUDE_ALL_INTERFACES - { - _ASSERTE (!"Unknown host wait return"); - } - return 0; -} - -static DWORD HostManualEventWait (void *args, DWORD timeout, DWORD option) -{ - CONTRACTL - { - if (option & WAIT_ALERTABLE) - { - THROWS; - } - else - { - NOTHROW; - } - GC_NOTRIGGER; - SO_TOLERANT; - PRECONDITION(CheckPointer(args)); - } - CONTRACTL_END; - -#ifdef FEATURE_INCLUDE_ALL_INTERFACES - HRESULT hr; - BEGIN_SO_TOLERANT_CODE_CALLING_HOST(GetThread()); - hr = ((IHostManualEvent*)args)->Wait(timeout,option); - END_SO_TOLERANT_CODE_CALLING_HOST; - - if (hr == COR_E_STACKOVERFLOW) - { - Thread *pThread = GetThread(); - if (pThread && pThread->HasThreadStateNC(Thread::TSNC_WaitUntilGCFinished)) - { - return hr; - } - } -#ifdef _DEBUG - if (FAILED(hr) && timeout == INFINITE) { - _ASSERTE (option & WAIT_ALERTABLE); - } -#endif - if (hr == S_OK) { - return WAIT_OBJECT_0; - } - else if (hr == HOST_E_DEADLOCK) { - RaiseDeadLockException(); - } - else if (hr == HOST_E_INTERRUPTED) { - _ASSERTE (option & WAIT_ALERTABLE); - Thread *pThread = GetThread(); - if (pThread) - { - Thread::UserInterruptAPC(APC_Code); - } - return WAIT_IO_COMPLETION; - } - else if (hr == HOST_E_TIMEOUT) { - return WAIT_TIMEOUT; - } - else if (hr == HOST_E_ABANDONED) { - return WAIT_ABANDONED; - } - else if (hr == E_FAIL) { - _ASSERTE (!"Unknown host wait failure"); - } - else -#endif // FEATURE_INCLUDE_ALL_INTERFACES - { - _ASSERTE (!"Unknown host wait return"); - } - return 0; -} -#endif // FEATURE_INCLUDE_ALL_INTERFACES static DWORD CLREventWaitHelper2(HANDLE handle, DWORD dwMilliseconds, BOOL alertable) { @@ -813,35 +541,6 @@ DWORD CLREventBase::WaitEx(DWORD dwMilliseconds, WaitMode mode, PendingSync *syn #endif _ASSERTE((pThread != NULL) || !g_fEEStarted || dbgOnly_IsSpecialEEThread()); -#ifdef FEATURE_INCLUDE_ALL_INTERFACES - if (!IsOSEvent() && CLRSyncHosted()) - { - if ((pThread != NULL) && alertable) { - DWORD dwRet = WAIT_FAILED; - BEGIN_SO_INTOLERANT_CODE_NOTHROW (pThread, return WAIT_FAILED;); - dwRet = pThread->DoAppropriateWait(IsAutoEvent()?HostAutoEventWait:HostManualEventWait, - m_handle,dwMilliseconds, - mode, - syncState); - END_SO_INTOLERANT_CODE; - return dwRet; - } - else { - _ASSERTE (syncState == NULL); - DWORD option = 0; - if (alertable) { - option |= WAIT_ALERTABLE; - } - if (IsAutoEvent()) { - return HostAutoEventWait((IHostAutoEvent*)m_handle,dwMilliseconds, option); - } - else { - return HostManualEventWait((IHostManualEvent*)m_handle,dwMilliseconds, option); - } - } - } - else -#endif // FEATURE_INCLUDE_ALL_INTERFACES { if (pThread && alertable) { DWORD dwRet = WAIT_FAILED; @@ -870,25 +569,6 @@ void CLRSemaphore::Create (DWORD dwInitial, DWORD dwMax) } CONTRACTL_END; -#ifdef FEATURE_INCLUDE_ALL_INTERFACES - IHostSyncManager *pManager = CorHost2::GetHostSyncManager(); - if (pManager != NULL) { - IHostSemaphore *pSemaphore; - #undef CreateSemaphore - HRESULT hr; - BEGIN_SO_TOLERANT_CODE_CALLING_HOST(GetThread()); - hr = pManager->CreateSemaphore(dwInitial,dwMax,&pSemaphore); - END_SO_TOLERANT_CODE_CALLING_HOST; - #define CreateSemaphore(lpSemaphoreAttributes, lInitialCount, lMaximumCount, lpName) \ - Dont_Use_CreateSemaphore(lpSemaphoreAttributes, lInitialCount, lMaximumCount, lpName) - if (hr != S_OK) { - _ASSERTE(hr == E_OUTOFMEMORY); - ThrowOutOfMemory(); - } - m_handle = (HANDLE)pSemaphore; - } - else -#endif // FEATURE_INCLUDE_ALL_INTERFACES { HANDLE h = UnsafeCreateSemaphore(NULL,dwInitial,dwMax,NULL); if (h == NULL) { @@ -907,11 +587,6 @@ void CLRSemaphore::Close() if (!CLRSyncHosted()) { CloseHandle(m_handle); } -#ifdef FEATURE_INCLUDE_ALL_INTERFACES - else { - ((IHostSemaphore*)m_handle)->Release(); - } -#endif // FEATURE_INCLUDE_ALL_INTERFACES m_handle = INVALID_HANDLE_VALUE; } } @@ -927,75 +602,11 @@ BOOL CLRSemaphore::Release(LONG lReleaseCount, LONG *lpPreviousCount) } CONTRACTL_END; -#ifdef FEATURE_INCLUDE_ALL_INTERFACES - if (CLRSyncHosted()) - { - #undef ReleaseSemaphore - HRESULT hr; - BEGIN_SO_TOLERANT_CODE_CALLING_HOST(GetThread()); - hr = ((IHostSemaphore*)m_handle)->ReleaseSemaphore(lReleaseCount,lpPreviousCount); - END_SO_TOLERANT_CODE_CALLING_HOST; - #define ReleaseSemaphore(hSemaphore, lReleaseCount, lpPreviousCount) \ - Dont_Use_ReleaseSemaphore(hSemaphore, lReleaseCount, lpPreviousCount) - return hr == S_OK; - } - else -#endif // FEATURE_INCLUDE_ALL_INTERFACES { return ::UnsafeReleaseSemaphore(m_handle, lReleaseCount, lpPreviousCount); } } -#ifdef FEATURE_INCLUDE_ALL_INTERFACES -static DWORD HostSemaphoreWait (void *args, DWORD timeout, DWORD option) -{ - CONTRACTL - { - if ((option & WAIT_ALERTABLE)) - { - THROWS; // Thread::DoAppropriateWait can throw - } - else - { - NOTHROW; - } - GC_NOTRIGGER; - SO_TOLERANT; - PRECONDITION(CheckPointer(args)); - } - CONTRACTL_END; - -#ifdef FEATURE_INCLUDE_ALL_INTERFACES - HRESULT hr; - BEGIN_SO_TOLERANT_CODE_CALLING_HOST(GetThread()); - hr = ((IHostSemaphore*)args)->Wait(timeout,option); - END_SO_TOLERANT_CODE_CALLING_HOST; - if (hr == S_OK) { - return WAIT_OBJECT_0; - } - else if (hr == HOST_E_INTERRUPTED) { - _ASSERTE (option & WAIT_ALERTABLE); - Thread *pThread = GetThread(); - if (pThread) - { - Thread::UserInterruptAPC(APC_Code); - } - return WAIT_IO_COMPLETION; - } - else if (hr == HOST_E_TIMEOUT) { - return WAIT_TIMEOUT; - } - else if (hr == E_FAIL) { - _ASSERTE (!"Unknown host wait failure"); - } - else -#endif // FEATURE_INCLUDE_ALL_INTERFACES - { - _ASSERTE (!"Unknown host wait return"); - } - return 0; -} -#endif // FEATURE_INCLUDE_ALL_INTERFACES DWORD CLRSemaphore::Wait(DWORD dwMilliseconds, BOOL alertable) { @@ -1029,25 +640,6 @@ DWORD CLRSemaphore::Wait(DWORD dwMilliseconds, BOOL alertable) Thread *pThread = GetThread(); _ASSERTE (pThread || !g_fEEStarted || dbgOnly_IsSpecialEEThread()); -#ifdef FEATURE_INCLUDE_ALL_INTERFACES - if (CLRSyncHosted()) - { - if (pThread && alertable) { - return pThread->DoAppropriateWait(HostSemaphoreWait, - m_handle,dwMilliseconds, - alertable?WaitMode_Alertable:WaitMode_None, - NULL); - } - else { - DWORD option = 0; - if (alertable) { - option |= WAIT_ALERTABLE; - } - return HostSemaphoreWait((IHostSemaphore*)m_handle,dwMilliseconds,option); - } - } - else -#endif // !FEATURE_INCLUDE_ALL_INTERFACES { // TODO wwl: if alertable is FALSE, do we support a host to break a deadlock? // Currently we can not call through DoAppropriateWait because of CannotThrowComplusException. diff --git a/src/vm/threads.cpp b/src/vm/threads.cpp index 81bf023568..c4a4b3a070 100644 --- a/src/vm/threads.cpp +++ b/src/vm/threads.cpp @@ -387,18 +387,6 @@ BOOL Thread::Alert () CONTRACTL_END; BOOL fRetVal = FALSE; -#ifdef FEATURE_INCLUDE_ALL_INTERFACES - HostComHolder<IHostTask> pHostTask(GetHostTaskWithAddRef()); - if (pHostTask && !HasThreadStateNC(TSNC_OSAlertableWait)) { - HRESULT hr; - - BEGIN_SO_TOLERANT_CODE_CALLING_HOST(GetThread()); - hr = pHostTask->Alert(); - END_SO_TOLERANT_CODE_CALLING_HOST; - fRetVal = SUCCEEDED(hr); - } - else -#endif // FEATURE_INCLUDE_ALL_INTERFACES { HANDLE handle = GetThreadHandle(); if (handle != INVALID_HANDLE_VALUE && handle != SWITCHOUT_HANDLE_VALUE) @@ -412,9 +400,6 @@ BOOL Thread::Alert () struct HostJoinOnThreadArgs { -#ifdef FEATURE_INCLUDE_ALL_INTERFACES - IHostTask *pHostTask; -#endif // FEATURE_INCLUDE_ALL_INTERFACES WaitMode mode; }; @@ -426,44 +411,6 @@ DWORD HostJoinOnThread (void *args, DWORD timeout, DWORD option) } CONTRACTL_END; -#ifdef FEATURE_INCLUDE_ALL_INTERFACES - HostJoinOnThreadArgs *joinArgs = (HostJoinOnThreadArgs*) args; - IHostTask *pHostTask = joinArgs->pHostTask; - if ((joinArgs->mode & WaitMode_InDeadlock) == 0) - { - option |= WAIT_NOTINDEADLOCK; - } - - HRESULT hr; - BEGIN_SO_TOLERANT_CODE_CALLING_HOST(GetThread()); - hr = pHostTask->Join(timeout, option); - END_SO_TOLERANT_CODE_CALLING_HOST; - if (hr == S_OK) { - return WAIT_OBJECT_0; - } - else if (hr == HOST_E_TIMEOUT) { - return WAIT_TIMEOUT; - } - else if (hr == HOST_E_INTERRUPTED) { - _ASSERTE (option & WAIT_ALERTABLE); - Thread *pThread = GetThread(); - if (pThread) - { - Thread::UserInterruptAPC(APC_Code); - } - return WAIT_IO_COMPLETION; - } - else if (hr == HOST_E_ABANDONED) - { - // The task died. - return WAIT_OBJECT_0; - } - else if (hr == HOST_E_DEADLOCK) - { - _ASSERTE ((option & WAIT_NOTINDEADLOCK) == 0); - RaiseDeadLockException(); - } -#endif // FEATURE_INCLUDE_ALL_INTERFACES _ASSERTE (!"Unknown host join status\n"); return E_FAIL; } @@ -487,19 +434,6 @@ DWORD Thread::JoinEx(DWORD timeout, WaitMode mode) Thread *pCurThread = GetThread(); _ASSERTE(pCurThread || dbgOnly_IsSpecialEEThread()); -#ifdef FEATURE_INCLUDE_ALL_INTERFACES - HostComHolder<IHostTask> pHostTask (GetHostTaskWithAddRef()); - if (pHostTask != NULL) { - HostJoinOnThreadArgs args = {pHostTask, mode}; - if (pCurThread) { - return GetThread()->DoAppropriateWait(HostJoinOnThread, &args, timeout, mode); - } - else { - return HostJoinOnThread (&args,timeout,alertable?WAIT_ALERTABLE:0); - } - } - else -#endif // FEATURE_INCLUDE_ALL_INTERFACES { // We're not hosted, so WaitMode_InDeadlock is irrelevant. Clear it, so that this wait can be // forwarded to a SynchronizationContext if needed. @@ -532,15 +466,6 @@ BOOL Thread::SetThreadPriority( CONTRACTL_END; BOOL fRet; -#ifdef FEATURE_INCLUDE_ALL_INTERFACES - HostComHolder<IHostTask> pHostTask (GetHostTaskWithAddRef()); - if (pHostTask != NULL) { - BEGIN_SO_TOLERANT_CODE_CALLING_HOST(GetThread()); - fRet = (pHostTask->SetPriority(nPriority) == S_OK); - END_SO_TOLERANT_CODE_CALLING_HOST; - } - else -#endif // FEATURE_INCLUDE_ALL_INTERFACES { if (GetThreadHandle() == INVALID_HANDLE_VALUE) { // When the thread starts running, we will set the thread priority. @@ -572,19 +497,6 @@ int Thread::GetThreadPriority() CONTRACTL_END; int nRetVal = -1; -#ifdef FEATURE_INCLUDE_ALL_INTERFACES - HostComHolder<IHostTask> pHostTask(GetHostTaskWithAddRef()); - if (pHostTask != NULL) { - int nPriority; - HRESULT hr; - BEGIN_SO_TOLERANT_CODE_CALLING_HOST(GetThread()); - hr = pHostTask->GetPriority(&nPriority); - END_SO_TOLERANT_CODE_CALLING_HOST; - - nRetVal = (hr == S_OK)?nPriority:THREAD_PRIORITY_ERROR_RETURN; - } - else -#endif // FEATURE_INCLUDE_ALL_INTERFACES if (GetThreadHandle() == INVALID_HANDLE_VALUE) { nRetVal = FALSE; } @@ -671,22 +583,6 @@ DWORD Thread::StartThread() _ASSERTE (m_Creater.IsCurrentThread()); m_Creater.Clear(); #endif -#ifdef FEATURE_INCLUDE_ALL_INTERFACES - HostComHolder<IHostTask> pHostTask(GetHostTaskWithAddRef()); - if (pHostTask) - { - HRESULT hr; - BEGIN_SO_TOLERANT_CODE_CALLING_HOST(GetThread()); - hr = pHostTask->Start(); - END_SO_TOLERANT_CODE_CALLING_HOST; - if (hr == S_OK) { - dwRetVal = 1; - } - else - dwRetVal = (DWORD) -1; - } - else -#endif // FEATURE_INCLUDE_ALL_INTERFACES { _ASSERTE (GetThreadHandle() != INVALID_HANDLE_VALUE && GetThreadHandle() != SWITCHOUT_HANDLE_VALUE); @@ -829,31 +725,6 @@ Thread* SetupThread(BOOL fInternal) // Verify that for fiber mode, we do not have a thread that matches the current StackBase. if (CLRTaskHosted()) { -#ifdef FEATURE_INCLUDE_ALL_INTERFACES - IHostTaskManager *provider = CorHost2::GetHostTaskManager(); - - IHostTask *pHostTask = NULL; - - // Starting with SQL11 GetCurrentTask() may actually create a task if one does not - // exist yet. To avoid an unbalanced BeginThreadAffinity/EndThreadAffinity assert - // we must not call it inside a scope protected by ThreadStoreLockHolder (which calls - // BeginThreadAffinity/EndThreadAffinity in its constructor/destructor). Post SQL11, - // SQL may create the task in BeginThreadAffinity() but until then we have to be - // able to run on CHK bits w/o tripping the ASSERT. - BEGIN_SO_TOLERANT_CODE_CALLING_HOST(GetThread()); - provider->GetCurrentTask(&pHostTask); - END_SO_TOLERANT_CODE_CALLING_HOST; - - if (pHostTask) - { - ThreadStoreLockHolder TSLockHolder; - SafeComHolder<IHostTask> pHostTaskHolder(pHostTask); - while ((pThread = ThreadStore::s_pThreadStore->GetAllThreadList(pThread, 0, 0)) != NULL) - { - _ASSERTE ((pThread->m_State&Thread::TS_Unstarted) || pThread->GetHostTask() != pHostTask); - } - } -#endif // FEATURE_INCLUDE_ALL_INTERFACES } #endif @@ -874,32 +745,11 @@ Thread* SetupThread(BOOL fInternal) if (ThreadStore::s_pThreadStore->m_PendingThreadCount != 0) { DWORD ourOSThreadId = ::GetCurrentThreadId(); -#ifdef FEATURE_INCLUDE_ALL_INTERFACES - IHostTask *curHostTask = NULL; - IHostTaskManager *hostTaskManager = CorHost2::GetHostTaskManager(); - if (hostTaskManager) { - BEGIN_SO_TOLERANT_CODE_CALLING_HOST(GetThread()); - hostTaskManager->GetCurrentTask(&curHostTask); - END_SO_TOLERANT_CODE_CALLING_HOST; - } - - SafeComHolder<IHostTask> pHostTaskHolder(curHostTask); -#endif // FEATURE_INCLUDE_ALL_INTERFACES { ThreadStoreLockHolder TSLockHolder; _ASSERTE(pThread == NULL); while ((pThread = ThreadStore::s_pThreadStore->GetAllThreadList(pThread, Thread::TS_Unstarted | Thread::TS_FailStarted, Thread::TS_Unstarted)) != NULL) { -#ifdef FEATURE_INCLUDE_ALL_INTERFACES - if (curHostTask) - { - if (curHostTask == pThread->GetHostTask()) - { - break; - } - } - else -#endif // FEATURE_INCLUDE_ALL_INTERFACES if (pThread->GetOSThreadId() == ourOSThreadId) { break; @@ -1163,13 +1013,7 @@ void DestroyThread(Thread *th) #endif // _TARGET_X86_ #endif // WIN64EXCEPTIONS -#ifdef FEATURE_INCLUDE_ALL_INTERFACES - // If CLR is hosted, don't call OnThreadTerminate here. Instead the host will call - // ExitTask which calls DetachThread. - if (th->GetHostTask() == NULL) -#else // !FEATURE_INCLUDE_ALL_INTERFACES if (g_fEEShutDown == 0) -#endif // FEATURE_INCLUDE_ALL_INTERFACES { th->SetThreadState(Thread::TS_ReportDead); th->OnThreadTerminate(FALSE); @@ -2063,9 +1907,6 @@ Thread::Thread() m_stressThreadCount = -1; #endif -#ifdef FEATURE_INCLUDE_ALL_INTERFACES - m_pHostTask = NULL; -#endif // FEATURE_INCLUDE_ALL_INTERFACES m_pFiberData = NULL; m_TaskId = INVALID_TASK_ID; @@ -2228,21 +2069,6 @@ BOOL Thread::InitThread(BOOL fInternal) } CONTRACTL_END; -#ifdef FEATURE_INCLUDE_ALL_INTERFACES - IHostTaskManager *provider = CorHost2::GetHostTaskManager(); - if (provider) { - if (m_pHostTask == NULL) - { - BEGIN_SO_TOLERANT_CODE_CALLING_HOST(GetThread()); - provider->GetCurrentTask(&m_pHostTask); - END_SO_TOLERANT_CODE_CALLING_HOST; - } - // workaround wwl: finalizer thread is not created by SQL - if (m_pHostTask == NULL && !fInternal) { - ThrowHR(HOST_E_INVALIDOPERATION); - } - } -#endif // FEATURE_INCLUDE_ALL_INTERFACES HANDLE hDup = INVALID_HANDLE_VALUE; BOOL ret = TRUE; @@ -2519,15 +2345,6 @@ BOOL Thread::HasStarted(BOOL bRequiresTSL) SetupThreadForHost(); -#ifdef FEATURE_INCLUDE_ALL_INTERFACES - if (m_pHostTask) - { - // If we have notify host of ICLRTask, host will call code:ExitTask to release - // its reference to ICLRTask. Also host may call SwitchOut and SwitchIn. - // ExitTask needs Thread in TLS. - fKeepTLS = TRUE; - } -#endif // FEATURE_INCLUDE_ALL_INTERFACES ThreadStore::TransferStartedThread(this, bRequiresTSL); @@ -3017,45 +2834,7 @@ BOOL Thread::CreateNewHostTask(SIZE_T stackSize, LPTHREAD_START_ROUTINE start, v return FALSE; } -#ifdef FEATURE_INCLUDE_ALL_INTERFACES - IHostTask *pHostTask = NULL; - - if (CorHost2::GetHostTaskManager()) { - //If you change this value to pass a SIZE_T stackSize you must - // remove this _ASSERTE(stackSize <= 0xFFFFFFFF); from - // CreateNewThread - // - HRESULT hr; - BEGIN_SO_TOLERANT_CODE_CALLING_HOST(GetThread()); - hr = CorHost2::GetHostTaskManager()->CreateTask((DWORD)stackSize, start, args, &pHostTask); - END_SO_TOLERANT_CODE_CALLING_HOST; - if (hr != S_OK) - return FALSE; - } - - _ASSERTE(!m_fPreemptiveGCDisabled); // leave in preemptive until HasStarted. - - // Before we do the resume, we need to take note of the new ThreadId. This - // is necessary because -- before the thread starts executing at KickofThread -- - // it may perform some DllMain DLL_THREAD_ATTACH notifications. These could - // call into managed code. During the consequent SetupThread, we need to - // perform the Thread::HasStarted call instead of going through the normal - // 'new thread' pathway. - _ASSERTE(m_pHostTask == NULL); - _ASSERTE(pHostTask != NULL); - - m_pHostTask = pHostTask; - - FastInterlockIncrement(&ThreadStore::s_pThreadStore->m_PendingThreadCount); - -#ifdef _DEBUG - m_Creater.SetToCurrentThread(); -#endif - - return TRUE; -#else // !FEATURE_INCLUDE_ALL_INTERFACES return FALSE; -#endif // FEATURE_INCLUDE_ALL_INTERFACES } // @@ -3185,11 +2964,6 @@ int Thread::DecExternalCount(BOOL holdingLock) ::CloseHandle(h); SetThreadHandle(INVALID_HANDLE_VALUE); } -#ifdef FEATURE_INCLUDE_ALL_INTERFACES - if (m_pHostTask) { - ReleaseHostTask(); - } -#endif // FEATURE_INCLUDE_ALL_INTERFACES // Switch back to cooperative mode to manipulate the thread. if (pCurThread) { @@ -3423,11 +3197,6 @@ Thread::~Thread() _ASSERTE(m_pTLBTable == NULL); _ASSERTE(m_TLBTableSize == 0); -#ifdef FEATURE_INCLUDE_ALL_INTERFACES - if (m_pHostTask) { - ReleaseHostTask(); - } -#endif // FEATURE_INCLUDE_ALL_INTERFACES #ifdef FEATURE_PREJIT if (m_pIBCInfo) { @@ -3808,14 +3577,6 @@ void Thread::OnThreadTerminate(BOOL holdingLock) LOG((LF_SYNC, INFO3, "OnThreadTerminate obtain lock\n")); ThreadSuspend::LockThreadStore(ThreadSuspend::SUSPEND_OTHER); -#ifdef FEATURE_INCLUDE_ALL_INTERFACES - if (ThisThreadID == CurrentThreadID && pCurrentThread) - { - // Before we call UnlockThreadStore, we remove out Thread from TLS - // Therefore we will not dec the lock count on thread. - DECTHREADLOCKCOUNTTHREAD(pCurrentThread); - } -#endif } if (GCHeapUtilities::IsGCHeapInitialized() && ThisThreadID != CurrentThreadID) @@ -6195,13 +5956,6 @@ void ThreadStore::AddThread(Thread *newThread, BOOL bRequiresTSL) BOOL ThreadStore::CanAcquireLock() { WRAPPER_NO_CONTRACT; -#ifdef FEATURE_INCLUDE_ALL_INTERFACES - if (!s_pThreadStore->m_Crst.IsOSCritSec()) - { - return true; - } - else -#endif { return (s_pThreadStore->m_Crst.m_criticalsection.LockCount == -1 || (size_t)s_pThreadStore->m_Crst.m_criticalsection.OwningThread == (size_t)GetCurrentThreadId()); } @@ -7272,26 +7026,6 @@ HRESULT Thread::CLRSetThreadStackGuarantee(SetThreadStackGuaranteeScope fScope) LOG((LF_EH, LL_INFO10000, "STACKOVERFLOW: setting thread stack guarantee to 0x%x\n", uGuardSize)); -#ifdef FEATURE_INCLUDE_ALL_INTERFACES - if (CorHost2::GetHostTaskManager()) - { - HRESULT hr; - ULONG uCurrentGuarantee = 0; - BEGIN_SO_TOLERANT_CODE_CALLING_HOST(GetThread()); - - // First, we'll see what the current guard size is. - hr = CorHost2::GetHostTaskManager()->GetStackGuarantee(&uCurrentGuarantee); - - // Call SetStackGuarantee only if the guard isn't big enough for us. - if (FAILED(hr) || uCurrentGuarantee < uGuardSize) - hr = CorHost2::GetHostTaskManager()->SetStackGuarantee(uGuardSize); - - END_SO_TOLERANT_CODE_CALLING_HOST; - - if (hr != E_NOTIMPL) - return hr; - } -#endif // FEATURE_INCLUDE_ALL_INTERFACES if (!::SetThreadStackGuarantee(&uGuardSize)) { return HRESULT_FROM_GetLastErrorNA(); @@ -10872,30 +10606,6 @@ BOOL ThreadStore::HoldingThreadStore(Thread *pThread) } } -#ifdef FEATURE_INCLUDE_ALL_INTERFACES -void Thread::SetupFiberData() -{ - CONTRACTL { - NOTHROW; - GC_NOTRIGGER; - } - CONTRACTL_END; - - _ASSERTE (this == GetThread()); - _ASSERTE (m_pFiberData == NULL); - - m_pFiberData = ClrTeb::GetFiberDataPtr(); - if (m_pFiberData != NULL && (g_CORDebuggerControlFlags & DBCF_FIBERMODE) == 0) - { - // We are in fiber mode - g_CORDebuggerControlFlags |= DBCF_FIBERMODE; - if (g_pDebugInterface) - { - g_pDebugInterface->SetFiberMode(true); - } - } -} -#endif // FEATURE_INCLUDE_ALL_INTERFACES #ifdef _DEBUG @@ -11026,14 +10736,6 @@ HRESULT Thread::SwitchIn(HANDLE threadHandle) #ifdef _DEBUG if (CLRTaskHosted()) { -#ifdef FEATURE_INCLUDE_ALL_INTERFACES - IHostTask *pTask = NULL; - _ASSERTE (CorHost2::GetHostTaskManager()->GetCurrentTask(&pTask) == S_OK && - (pTask == GetHostTask() || GetHostTask() == NULL)); - - if (pTask) - pTask->Release(); -#endif // FEATURE_INCLUDE_ALL_INTERFACES } #endif @@ -11058,40 +10760,6 @@ HRESULT Thread::SwitchIn(HANDLE threadHandle) _ASSERTE (!PreemptiveGCDisabled()); #endif -#ifdef FEATURE_INCLUDE_ALL_INTERFACES - if (CLRTaskHosted() && GetHostTask() == NULL) - { - // Reset has been called on this task. - - if (! SetStackLimits(fAll)) - { - return E_FAIL; - } - - // We commit the thread's entire stack when it enters the runtime to allow us to be reliable in low memory - // situtations. See the comments in front of Thread::CommitThreadStack() for mor information. - if (!Thread::CommitThreadStack(this)) - { - return E_OUTOFMEMORY; - } - - HRESULT hr = CorHost2::GetHostTaskManager()->GetCurrentTask(&m_pHostTask); - _ASSERTE (hr == S_OK && m_pHostTask); - -#ifdef _DEBUG - AddFiberInfo(ThreadTrackInfo_Lifetime); -#endif - - m_pFiberData = ClrTeb::GetFiberDataPtr(); - - m_OSThreadId = ::GetCurrentThreadId(); - -#ifdef ENABLE_CONTRACTS - m_pClrDebugState = ::GetClrDebugState(); -#endif - ResetThreadState(TS_TaskReset); - } -#endif // FEATURE_INCLUDE_ALL_INTERFACES // We have to be switched in on the same fiber _ASSERTE (GetCachedStackBase() == GetStackUpperBound()); @@ -11263,25 +10931,6 @@ void Thread::InternalSwitchOut() (CExecutionEngine::CheckThreadStateNoCreate(0) == NULL)); } -#ifdef FEATURE_INCLUDE_ALL_INTERFACES -HRESULT Thread::GetMemStats (COR_GC_THREAD_STATS *pStats) -{ - CONTRACTL { - NOTHROW; - GC_NOTRIGGER; - SO_TOLERANT; - } - CONTRACTL_END; - - // Get the allocation context which contains this counter in it. - gc_alloc_context *p = &m_alloc_context; - pStats->PerThreadAllocation = p->alloc_bytes + p->alloc_bytes_loh; - if (GetHasPromotedBytes()) - pStats->Flags = COR_GC_THREAD_HAS_PROMOTED_BYTES; - - return S_OK; -} -#endif //FEATURE_INCLUDE_ALL_INTERFACES LONG Thread::GetTotalThreadPoolCompletionCount() @@ -11480,11 +11129,6 @@ HRESULT Thread::Reset(BOOL fFull) #ifdef _DEBUG if (CLRTaskHosted()) { -#ifdef FEATURE_INCLUDE_ALL_INTERFACES - // Reset is a heavy operation. We will call into SQL for lock and memory operations. - // The host better keeps IHostTask alive. - _ASSERTE (GetCurrentHostTask() == GetHostTask()); -#endif // FEATURE_INCLUDE_ALL_INTERFACES } _ASSERTE (GetThread() == this); @@ -11540,15 +11184,6 @@ HRESULT Thread::Reset(BOOL fFull) } { -#ifdef FEATURE_INCLUDE_ALL_INTERFACES - // We need to scope this assert because of - // the jumps to ErrExit from above. - GCX_ASSERT_PREEMP(); - - _ASSERTE (m_pHostTask); - - ReleaseHostTask(); -#endif // FEATURE_INCLUDE_ALL_INTERFACES #ifdef WIN64EXCEPTIONS ExceptionTracker::PopTrackers((void*)-1); @@ -11695,235 +11330,6 @@ HRESULT Thread::NeedsPriorityScheduling(BOOL *pbNeedsPriorityScheduling) return S_OK; } -#ifdef FEATURE_INCLUDE_ALL_INTERFACES -HRESULT Thread::YieldTask() -{ -#undef Sleep - CONTRACTL { - NOTHROW; - if (GetThread()) {GC_TRIGGERS;} else {DISABLED(GC_NOTRIGGER);} - SO_TOLERANT; - } - CONTRACTL_END; - - //can't do heap allocation in this method - CantAllocHolder caHolder; - _ASSERTE(CLRTaskHosted()); - - // The host must guarantee that we have enough stack before they call this API. - // We unfortunately do not have a good mechanism to indicate/enforce this and it's too - // late in Whidbey to add one now. We should definitely consider adding such a - // mechanism in Orcas however. For now we will work around this by marking the - // method as SO_TOLERANT and disabling SO tolerance violations for any code it calls. - CONTRACT_VIOLATION(SOToleranceViolation); - - // - // YieldTask should not be called from a managed thread, as it can lead to deadlocks. - // However, some tests do this, and it would be hard to change that. Let's at least ensure - // that they are not shooting themselves in the foot. - // - Thread* pCurThread = GetThread(); - if (this == pCurThread) - { - // We will suspend the target thread. If YieldTask is called on the current thread, - // we will suspend the current thread forever. - return HOST_E_INVALIDOPERATION; - } - - FAULT_FORBID(); - - // This function has been called by the host, and the host needs not - // be reentrant. Therefore, no code running below this function can - // cause calls back into the host. - ForbidCallsIntoHostOnThisThreadHolder forbidCallsIntoHostOnThisThread(TRUE /*dummy*/); - while (!forbidCallsIntoHostOnThisThread.Acquired()) - { - // We can not call __SwitchToThread since we can not go back to host. - ::Sleep(10); - forbidCallsIntoHostOnThisThread.Acquire(); - } - - // So that the thread can yield when it tries to switch to coop gc. - CounterHolder trtHolder(&g_TrapReturningThreads); - - // One worker on a thread only. - while (TRUE) - { - LONG curValue = m_State; - if ((curValue & TS_YieldRequested) != 0) - { - // The host has previously called YieldTask for this thread, - // and the thread has not cleared the flag yet. - return S_FALSE; - } - else if ((curValue & TS_Unstarted) != 0) - { - // The task is still unstarted, so we can consider the host - // to be in control of this thread, which means we have - // succeeded in getting the host in control. - return S_OK; - } - - CONSISTENCY_CHECK(sizeof(m_State) == sizeof(LONG)); - if (FastInterlockCompareExchange((LONG*)&m_State, curValue | TS_YieldRequested, curValue) == curValue) - { - break; - } - } - -#ifdef PROFILING_SUPPORTED - { - BEGIN_PIN_PROFILER(CORProfilerTrackSuspends()); - g_profControlBlock.pProfInterface->RuntimeThreadSuspended((ThreadID)this); - END_PIN_PROFILER(); - } -#endif // PROFILING_SUPPORTED - - while (m_State & TS_YieldRequested) - { - BOOL fDone = FALSE; - - if (m_State & (TS_Dead | TS_Detached)) - { - // The thread is dead, in other words, yielded forever. - // Don't bother clearing TS_YieldRequested, as nobody - // is going to look at it any more. - break; - } - - CounterHolder handleHolder(&m_dwThreadHandleBeingUsed); - HANDLE hThread = GetThreadHandle(); - if (hThread == INVALID_HANDLE_VALUE) - { - // The thread is dead, in other words, yielded forever. - // Don't bother clearing TS_YieldRequested, as nobody - // is going to look at it any more. - break; - } - else if (hThread == SWITCHOUT_HANDLE_VALUE) - { - // The thread is currently switched out. - // This means that the host has control of the thread, - // so we can stop our attempts to yield it. Note that - // TS_YieldRequested is cleared in InternalSwitchOut. (If we - // were to clear it here, we could race against another - // thread that is running YieldTask.) - break; - } - - DWORD dwSuspendCount = ::SuspendThread(hThread); - if ((int)dwSuspendCount >= 0) - { - if (!EnsureThreadIsSuspended(hThread, this)) - { - goto Retry; - } - - if (hThread == GetThreadHandle()) - { - if (m_dwForbidSuspendThread != 0) - { - goto Retry; - } - } - else - { - // A thread was switch out but in again. - // We suspended the wrong thread; resume it and give - // up our attempts to yield. Note that TS_YieldRequested - // is cleared in InternalSwitchOut. - ::ResumeThread(hThread); - break; - } - } - else - { - // We can get here either SuspendThread fails - // Or the fiber thread dies after this fiber switched out. - - if ((int)dwSuspendCount != -1) - { - STRESS_LOG1(LF_SYNC, LL_INFO1000, "In Thread::YieldTask ::SuspendThread returned %x \n", dwSuspendCount); - } - if (GetThreadHandle() == SWITCHOUT_HANDLE_VALUE) - { - // The thread was switched out while we tried to suspend it. - // This means that the host has control of the thread, - // so we can stop our attempts to yield it. Note that - // TS_YieldRequested is cleared in InternalSwitchOut. (If we - // were to clear it here, we could race against another - // thread that is running YieldTask.) - break; - } - else { - continue; - } - } - - if (!m_fPreemptiveGCDisabled) - { - ::ResumeThread(hThread); - break; - } - -#ifdef FEATURE_HIJACK - -#ifdef _DEBUG - if (pCurThread != NULL) - { - pCurThread->dbg_m_cSuspendedThreads ++; - _ASSERTE(pCurThread->dbg_m_cSuspendedThreads > 0); - } -#endif - - // Only check for HandledJITCase if we actually suspended the thread. - if ((int)dwSuspendCount >= 0) - { - WorkingOnThreadContextHolder workingOnThreadContext(this); - if (workingOnThreadContext.Acquired() && HandledJITCase()) - { - // Redirect thread so we can capture a good thread context - // (GetThreadContext is not sufficient, due to an OS bug). - // If we don't succeed (should only happen on Win9X, due to - // a different OS bug), we must resume the thread and try - // again. - fDone = CheckForAndDoRedirectForYieldTask(); - } - } - -#ifdef _DEBUG - if (pCurThread != NULL) - { - _ASSERTE(pCurThread->dbg_m_cSuspendedThreads > 0); - pCurThread->dbg_m_cSuspendedThreads --; - _ASSERTE(pCurThread->dbg_m_cSuspendedThreadsWithoutOSLock <= pCurThread->dbg_m_cSuspendedThreads); - } -#endif //_DEBUG - -#endif // FEATURE_HIJACK - -Retry: - ::ResumeThread(hThread); - if (fDone) - { - // We managed to redirect the thread, so we know that it will yield. - // We can let the actual yielding happen asynchronously. - break; - } - handleHolder.Release(); - ::Sleep(1); - } -#ifdef PROFILING_SUPPORTED - { - BEGIN_PIN_PROFILER(CORProfilerTrackSuspends()); - g_profControlBlock.pProfInterface->RuntimeThreadResumed((ThreadID)this); - END_PIN_PROFILER(); - } -#endif - return S_OK; -#define Sleep(a) Dont_Use_Sleep(a) -} -#endif // FEATURE_INCLUDE_ALL_INTERFACES HRESULT Thread::LocksHeld(SIZE_T *pLockCount) { @@ -11980,57 +11386,6 @@ HRESULT Thread::EndPreventAsyncAbort() return S_OK; } -#ifdef FEATURE_INCLUDE_ALL_INTERFACES -// We release m_pHostTask during ICLRTask::Reset and ICLRTask::ExitTask call. -// This function allows us to synchronize obtaining m_pHostTask with Thread reset or exit. -IHostTask* Thread::GetHostTaskWithAddRef() -{ - CONTRACTL - { - NOTHROW; - GC_NOTRIGGER; - SO_TOLERANT; - } - CONTRACTL_END; - - CounterIncrease(&m_dwHostTaskRefCount); - IHostTask *pHostTask = m_pHostTask; - if (pHostTask != NULL) - { - BEGIN_SO_TOLERANT_CODE_CALLING_HOST(GetThread()); - pHostTask->AddRef(); - END_SO_TOLERANT_CODE_CALLING_HOST; - } - CounterDecrease(&m_dwHostTaskRefCount); - return pHostTask; -} - -void Thread::ReleaseHostTask() -{ - CONTRACTL - { - NOTHROW; - GC_NOTRIGGER; - } - CONTRACTL_END; - - if (m_pHostTask == NULL) - { - return; - } - - IHostTask *pHostTask = m_pHostTask; - m_pHostTask = NULL; - - YIELD_WHILE (m_dwHostTaskRefCount > 0); - - BEGIN_SO_TOLERANT_CODE_CALLING_HOST(GetThread()); - pHostTask->Release(); - END_SO_TOLERANT_CODE_CALLING_HOST; - - STRESS_LOG1 (LF_SYNC, LL_INFO100, "Release HostTask %p", pHostTask); -} -#endif // FEATURE_INCLUDE_ALL_INTERFACES ULONG Thread::AddRef() { @@ -12065,19 +11420,8 @@ HRESULT Thread::QueryInterface(REFIID riid, void **ppUnk) { LIMITED_METHOD_CONTRACT; -#ifdef FEATURE_INCLUDE_ALL_INTERFACES - if (IID_ICLRTask2 == riid) - *ppUnk = (ICLRTask2 *)this; - else if (IID_ICLRTask == riid) - *ppUnk = (ICLRTask *)this; - else -#endif // FEATURE_INCLUDE_ALL_INTERFACES return E_NOINTERFACE; -#ifdef FEATURE_INCLUDE_ALL_INTERFACES - AddRef(); - return S_OK; -#endif // FEATURE_INCLUDE_ALL_INTERFACES } BOOL IsHostedThread() @@ -12094,67 +11438,9 @@ BOOL IsHostedThread() { return FALSE; } -#ifdef FEATURE_INCLUDE_ALL_INTERFACES - Thread *pThread = GetThread(); - if (pThread && pThread->GetHostTask() != NULL) - { - return TRUE; - } - - IHostTaskManager *pManager = CorHost2::GetHostTaskManager(); - IHostTask *pHostTask = NULL; - BEGIN_SO_TOLERANT_CODE_CALLING_HOST(GetThread()); - pManager->GetCurrentTask(&pHostTask); - END_SO_TOLERANT_CODE_CALLING_HOST; - - BOOL fRet = (pHostTask != NULL); - if (pHostTask) - { - if (pThread) - { - _ASSERTE (pThread->GetHostTask() == NULL); - pThread->m_pHostTask = pHostTask; - } - else - { - pHostTask->Release(); - } - } - - return fRet; -#else // !FEATURE_INCLUDE_ALL_INTERFACES return FALSE; -#endif // FEATURE_INCLUDE_ALL_INTERFACES } -#ifdef FEATURE_INCLUDE_ALL_INTERFACES -IHostTask *GetCurrentHostTask() -{ - CONTRACTL - { - NOTHROW; - GC_NOTRIGGER; - MODE_ANY; - SO_TOLERANT; - } - CONTRACTL_END; - - IHostTaskManager *provider = CorHost2::GetHostTaskManager(); - - IHostTask *pHostTask = NULL; - - BEGIN_SO_TOLERANT_CODE_CALLING_HOST(GetThread()); - provider->GetCurrentTask(&pHostTask); - END_SO_TOLERANT_CODE_CALLING_HOST; - - if (pHostTask) - { - pHostTask->Release(); - } - - return pHostTask; -} -#endif // FEATURE_INCLUDE_ALL_INTERFACES void __stdcall Thread::LeaveRuntime(size_t target) { @@ -12193,26 +11479,6 @@ HRESULT Thread::LeaveRuntimeNoThrow(size_t target) HRESULT hr = S_OK; -#ifdef FEATURE_INCLUDE_ALL_INTERFACES - // A SQL thread can enter the runtime w/o a managed thread. - BEGIN_SO_INTOLERANT_CODE_NO_THROW_CHECK_THREAD(hr = COR_E_STACKOVERFLOW); - - IHostTaskManager *pManager = CorHost2::GetHostTaskManager(); - if (pManager) - { -#ifdef _DEBUG - Thread *pThread = GetThread(); - if (pThread) - { - pThread->AddFiberInfo(Thread::ThreadTrackInfo_UM_M); - } -#endif - BEGIN_SO_TOLERANT_CODE_CALLING_HOST(GetThread()); - hr = pManager->LeaveRuntime(target); - END_SO_TOLERANT_CODE_CALLING_HOST; - } - END_SO_INTOLERANT_CODE; -#endif // FEATURE_INCLUDE_ALL_INTERFACES return hr; } @@ -12228,9 +11494,6 @@ void __stdcall Thread::LeaveRuntimeThrowComplus(size_t target) CONTRACTL_END; HRESULT hr = S_OK; -#ifdef FEATURE_INCLUDE_ALL_INTERFACES - IHostTaskManager *pManager = NULL; -#endif // FEATURE_INCLUDE_ALL_INTERFACES if (!CLRTaskHosted()) { @@ -12242,22 +11505,6 @@ void __stdcall Thread::LeaveRuntimeThrowComplus(size_t target) goto Exit; } -#ifdef FEATURE_INCLUDE_ALL_INTERFACES - pManager = CorHost2::GetHostTaskManager(); - if (pManager) - { -#ifdef _DEBUG - Thread *pThread = GetThread(); - if (pThread) - { - pThread->AddFiberInfo(Thread::ThreadTrackInfo_UM_M); - } -#endif - BEGIN_SO_TOLERANT_CODE_CALLING_HOST(GetThread()); - hr = pManager->LeaveRuntime(target); - END_SO_TOLERANT_CODE_CALLING_HOST; - } -#endif // FEATURE_INCLUDE_ALL_INTERFACES if (FAILED(hr)) { @@ -12347,24 +11594,6 @@ HRESULT Thread::EnterRuntimeNoThrowWorker() HRESULT hr = S_OK; -#ifdef FEATURE_INCLUDE_ALL_INTERFACES - IHostTaskManager *pManager = CorHost2::GetHostTaskManager(); - - if (pManager) - { -#ifdef _DEBUG - // A SQL thread can enter the runtime w/o a managed thread. - Thread *pThread = GetThread(); - if (pThread) - { - pThread->AddFiberInfo(Thread::ThreadTrackInfo_UM_M); - } -#endif - BEGIN_SO_TOLERANT_CODE_CALLING_HOST(GetThread()); - hr = pManager->EnterRuntime(); - END_SO_TOLERANT_CODE_CALLING_HOST; - } -#endif // FEATURE_INCLUDE_ALL_INTERFACES return hr; } @@ -12443,25 +11672,6 @@ HRESULT Thread::ReverseEnterRuntimeNoThrow() HRESULT hr = S_OK; -#ifdef FEATURE_INCLUDE_ALL_INTERFACES - IHostTaskManager *pManager = CorHost2::GetHostTaskManager(); - if (pManager) - { -#ifdef _DEBUG - // A SQL thread can enter the runtime w/o a managed thread. - BEGIN_SO_INTOLERANT_CODE_NO_THROW_CHECK_THREAD(hr = COR_E_STACKOVERFLOW); - - Thread *pThread = GetThread(); - if (pThread) - { - pThread->AddFiberInfo(Thread::ThreadTrackInfo_UM_M); - } - END_SO_INTOLERANT_CODE; - -#endif - hr = pManager->ReverseEnterRuntime(); - } -#endif // FEATURE_INCLUDE_ALL_INTERFACES return hr; } @@ -12494,24 +11704,6 @@ void Thread::ReverseLeaveRuntime() HRESULT hr = S_OK; -#ifdef FEATURE_INCLUDE_ALL_INTERFACES - IHostTaskManager *pManager = CorHost2::GetHostTaskManager(); - - if (pManager) - { -#ifdef _DEBUG - // A SQL thread can enter the runtime w/o a managed thread. - Thread *pThread = GetThread(); - if (pThread) - { - pThread->AddFiberInfo(Thread::ThreadTrackInfo_UM_M); - } -#endif - BEGIN_SO_TOLERANT_CODE_CALLING_HOST(GetThread()); - hr = pManager->ReverseLeaveRuntime(); - END_SO_TOLERANT_CODE_CALLING_HOST; - } -#endif // FEATURE_INCLUDE_ALL_INTERFACES if (hr != S_OK) ThrowHR(hr); @@ -12546,35 +11738,6 @@ void Thread::SetupThreadForHost() _ASSERTE (GetThread() == this); CONTRACT_VIOLATION(SOToleranceViolation); -#ifdef FEATURE_INCLUDE_ALL_INTERFACES - IHostTask *pHostTask = GetHostTask(); - if (pHostTask) { - SetupFiberData(); - - // @todo - need to block for Interop debugging before leaving the runtime here. - HRESULT hr; - BEGIN_SO_TOLERANT_CODE_CALLING_HOST(GetThread()); - hr = pHostTask->SetCLRTask(this); - END_SO_TOLERANT_CODE_CALLING_HOST; - if (FAILED(hr)) - { - ThrowHR(hr); - } - if (m_WeOwnThreadHandle) - { - // If host provides a thread handle, we do not need to own a handle. - BEGIN_SO_TOLERANT_CODE_CALLING_HOST(GetThread()); - CorHost2::GetHostTaskManager()->SwitchToTask(0); - END_SO_TOLERANT_CODE_CALLING_HOST; - if (m_ThreadHandleForClose != INVALID_HANDLE_VALUE) - { - m_WeOwnThreadHandle = FALSE; - CloseHandle(m_ThreadHandleForClose); - m_ThreadHandleForClose = INVALID_HANDLE_VALUE; - } - } - } -#endif // FEATURE_INCLUDE_ALL_INTERFACES } diff --git a/src/vm/threads.h b/src/vm/threads.h index d461b09ca4..86847aeeeb 100644 --- a/src/vm/threads.h +++ b/src/vm/threads.h @@ -1031,14 +1031,10 @@ class BaseStackGuard; // // A code:Thread contains all the per-thread information needed by the runtime. You can get at this // structure throught the and OS TLS slot see code:#RuntimeThreadLocals for more -#ifdef FEATURE_INCLUDE_ALL_INTERFACES -class Thread: public ICLRTask2 -#else // !FEATURE_INCLUDE_ALL_INTERFACES // Implementing IUnknown would prevent the field (e.g. m_Context) layout from being rearranged (which will need to be fixed in // "asmconstants.h" for the respective architecture). As it is, ICLRTask derives from IUnknown and would have got IUnknown implemented // here - so doing this explicitly and maintaining layout sanity should be just fine. class Thread: public IUnknown -#endif // FEATURE_INCLUDE_ALL_INTERFACES { friend struct ThreadQueue; // used to enqueue & dequeue threads onto SyncBlocks friend class ThreadStore; @@ -1302,10 +1298,6 @@ public: DAC_EMPTY_RET(E_FAIL); STDMETHODIMP Reset (BOOL fFull) DAC_EMPTY_RET(E_FAIL); -#ifdef FEATURE_INCLUDE_ALL_INTERFACES - STDMETHODIMP GetMemStats(COR_GC_THREAD_STATS *memUsage) - DAC_EMPTY_RET(E_FAIL); -#endif //FEATURE_INCLUDE_ALL_INTERFACES STDMETHODIMP ExitTask() DAC_EMPTY_RET(E_FAIL); STDMETHODIMP Abort() @@ -2784,9 +2776,6 @@ public: ) { WRAPPER_NO_CONTRACT; -#ifdef FEATURE_INCLUDE_ALL_INTERFACES - _ASSERTE (m_pHostTask == NULL || GetThreadHandle() != SWITCHOUT_HANDLE_VALUE); -#endif // FEATURE_INCLUDE_ALL_INTERFACES return ::GetThreadContext (GetThreadHandle(), lpContext); } @@ -2796,9 +2785,6 @@ public: ) { WRAPPER_NO_CONTRACT; -#ifdef FEATURE_INCLUDE_ALL_INTERFACES - _ASSERTE (m_pHostTask == NULL || GetThreadHandle() != SWITCHOUT_HANDLE_VALUE); -#endif // FEATURE_INCLUDE_ALL_INTERFACES return ::SetThreadContext (GetThreadHandle(), lpContext); } #endif @@ -2806,12 +2792,7 @@ public: BOOL HasValidThreadHandle () { WRAPPER_NO_CONTRACT; -#ifdef FEATURE_INCLUDE_ALL_INTERFACES - return m_pHostTask != NULL || - GetThreadHandle() != INVALID_HANDLE_VALUE; -#else // !FEATURE_INCLUDE_ALL_INTERFACES return GetThreadHandle() != INVALID_HANDLE_VALUE; -#endif // FEATURE_INCLUDE_ALL_INTERFACES } DWORD GetThreadId() @@ -2853,17 +2834,6 @@ public: return m_dwConnectionId; } -#ifdef FEATURE_INCLUDE_ALL_INTERFACES - IHostTask* GetHostTask() const - { - LIMITED_METHOD_CONTRACT; - return m_pHostTask; - } - - IHostTask* GetHostTaskWithAddRef(); - - void ReleaseHostTask(); -#endif // FEATURE_INCLUDE_ALL_INTERFACES void SetConnectionId(CONNID dwConnectionId) { @@ -4776,10 +4746,6 @@ public: LONG m_stressThreadCount; #endif -#ifdef FEATURE_INCLUDE_ALL_INTERFACES -public: - IHostTask *m_pHostTask; -#endif private: PVOID m_pFiberData; @@ -5576,9 +5542,6 @@ private: HRESULT hr; }; -#ifdef FEATURE_INCLUDE_ALL_INTERFACES -IHostTask *GetCurrentHostTask(); -#endif // FEATURE_INCLUDE_ALL_INTERFACES typedef Thread::AVInRuntimeImplOkayHolder AVInRuntimeImplOkayHolder; @@ -6065,59 +6028,12 @@ struct PendingSync void Restore(BOOL bRemoveFromSB); }; -#ifdef FEATURE_INCLUDE_ALL_INTERFACES - -// -// Tracking of unmanaged locks has very low value. It is only -// exposed via SQL hosting interfaces. The hosts cannot really -// do anything interesting with it because of the unmanaged locks -// are always taken with holders in the VM, and hosts can keep -// track of the unmanaged locks taken via hosting API. We should -// consider getting rid of it in the next SxS version. -// - -#define INCTHREADLOCKCOUNT() \ -{ \ - /* IncLockCount() asserts GetThread() == this */ \ - BEGIN_GETTHREAD_ALLOWED_IN_NO_THROW_REGION; \ - Thread *thread = GetThread(); \ - if (thread) \ - thread->IncLockCount(); \ - END_GETTHREAD_ALLOWED_IN_NO_THROW_REGION; \ -} - -#define INCTHREADLOCKCOUNTTHREAD(thread) \ -{ \ - /* IncLockCount() asserts GetThread() == this */ \ - if (thread) \ - (thread)->IncLockCount(); \ -} - -#define DECTHREADLOCKCOUNT( ) \ -{ \ - /* IncLockCount() asserts GetThread() == this */ \ - BEGIN_GETTHREAD_ALLOWED_IN_NO_THROW_REGION; \ - Thread *thread = GetThread(); \ - if (thread) \ - thread->DecLockCount(); \ - END_GETTHREAD_ALLOWED_IN_NO_THROW_REGION; \ -} - -#define DECTHREADLOCKCOUNTTHREAD(thread) \ -{ \ - /* IncLockCount() asserts GetThread() == this */ \ - if (thread) \ - (thread)->DecLockCount(); \ -} - -#else #define INCTHREADLOCKCOUNT() { } #define DECTHREADLOCKCOUNT() { } #define INCTHREADLOCKCOUNTTHREAD(thread) { } #define DECTHREADLOCKCOUNTTHREAD(thread) { } -#endif // -------------------------------------------------------------------------------- // GCHolder is used to implement the normal GCX_ macros. diff --git a/src/vm/threadsuspend.cpp b/src/vm/threadsuspend.cpp index dd8bb48df9..5386282dd5 100644 --- a/src/vm/threadsuspend.cpp +++ b/src/vm/threadsuspend.cpp @@ -467,11 +467,7 @@ DWORD Thread::ResumeThread() _ASSERTE (m_ThreadHandleForResume != INVALID_HANDLE_VALUE); -#ifdef FEATURE_INCLUDE_ALL_INTERFACES - _ASSERTE (m_pHostTask == 0 || GetThreadHandle() != SWITCHOUT_HANDLE_VALUE); -#else // !FEATURE_INCLUDE_ALL_INTERFACES _ASSERTE (GetThreadHandle() != SWITCHOUT_HANDLE_VALUE); -#endif // FEATURE_INCLUDE_ALL_INTERFACES //DWORD res = ::ResumeThread(GetThreadHandle()); DWORD res = ::ResumeThread(m_ThreadHandleForResume); @@ -3832,11 +3828,6 @@ void NotifyHostOnGCSuspension() } CONTRACTL_END; -#ifdef FEATURE_INCLUDE_ALL_INTERFACES - BEGIN_SO_TOLERANT_CODE_CALLING_HOST(GetThread()); - CorHost2::GetHostGCManager()->ThreadIsBlockingForSuspension(); - END_SO_TOLERANT_CODE_CALLING_HOST; -#endif // FEATURE_INCLUDE_ALL_INTERFACES } // This function is called from the assembly functions used to redirect a thread. It must not cause diff --git a/src/vm/util.cpp b/src/vm/util.cpp index cc52b917e3..a33c774654 100644 --- a/src/vm/util.cpp +++ b/src/vm/util.cpp @@ -2491,16 +2491,6 @@ size_t GetLargestOnDieCacheSize(BOOL bTrueSize) ThreadLocaleHolder::~ThreadLocaleHolder() { #ifdef FEATURE_USE_LCID -#ifdef FEATURE_INCLUDE_ALL_INTERFACES - IHostTaskManager *pManager = CorHost2::GetHostTaskManager(); - if (pManager) - { - BEGIN_SO_TOLERANT_CODE_CALLING_HOST(GetThread()); - pManager->SetLocale(m_locale); - END_SO_TOLERANT_CODE_CALLING_HOST; - } - else -#endif // FEATURE_INCLUDE_ALL_INTERFACES #endif // FEATURE_USE_LCID { SetThreadLocale(m_locale); @@ -2605,19 +2595,6 @@ CLRMapViewOfFileEx( LPVOID pv = MapViewOfFileEx(hFileMappingObject,dwDesiredAccess,dwFileOffsetHigh,dwFileOffsetLow,dwNumberOfBytesToMap,lpBaseAddress); -#ifdef FEATURE_INCLUDE_ALL_INTERFACES - IHostMemoryManager *memoryManager = CorHost2::GetHostMemoryManager(); - if (pv == NULL && memoryManager) - { - BEGIN_SO_TOLERANT_CODE_CALLING_HOST(GetThread()); - if (SUCCEEDED(memoryManager->NeedsVirtualAddressSpace(lpBaseAddress, dwNumberOfBytesToMap))) - { - // after host releases VA, let us try again. - pv = MapViewOfFileEx(hFileMappingObject,dwDesiredAccess,dwFileOffsetHigh,dwFileOffsetLow,dwNumberOfBytesToMap,lpBaseAddress); - } - END_SO_TOLERANT_CODE_CALLING_HOST; - } -#endif // FEATURE_INCLUDE_ALL_INTERFACES if (!pv) { @@ -2645,35 +2622,6 @@ CLRMapViewOfFileEx( #endif // _TARGET_X86_ #endif // _DEBUG { -#ifdef FEATURE_INCLUDE_ALL_INTERFACES - if (memoryManager) - { - SIZE_T dwNumberOfBytesMapped = 0; - // Find out the size of the whole region. - LPVOID lpAddr = pv; - MEMORY_BASIC_INFORMATION mbi; - while (TRUE) - { - memset(&mbi, 0, sizeof(mbi)); -#undef VirtualQuery - if (!::VirtualQuery(lpAddr, &mbi, sizeof(mbi))) - { - break; - } -#define VirtualQuery(lpAddress, lpBuffer, dwLength) \ - Dont_Use_VirtualQuery(lpAddress, lpBuffer, dwLength) - if (mbi.AllocationBase != pv) - { - break; - } - dwNumberOfBytesMapped += mbi.RegionSize; - lpAddr = (LPVOID)((BYTE*)lpAddr + mbi.RegionSize); - } - BEGIN_SO_TOLERANT_CODE_CALLING_HOST(GetThread()); - memoryManager->AcquiredVirtualAddressSpace(pv, dwNumberOfBytesMapped); - END_SO_TOLERANT_CODE_CALLING_HOST; - } -#endif // FEATURE_INCLUDE_ALL_INTERFACES } if (!pv && GetLastError()==ERROR_SUCCESS) @@ -2716,15 +2664,6 @@ CLRUnmapViewOfFile( BOOL result = UnmapViewOfFile(lpBaseAddress); if (result) { -#ifdef FEATURE_INCLUDE_ALL_INTERFACES - IHostMemoryManager *memoryManager = CorHost2::GetHostMemoryManager(); - if (memoryManager) - { - BEGIN_SO_TOLERANT_CODE_CALLING_HOST(GetThread()); - memoryManager->ReleasedVirtualAddressSpace(lpBaseAddress); - END_SO_TOLERANT_CODE_CALLING_HOST; - } -#endif // FEATURE_INCLUDE_ALL_INTERFACES } return result; } diff --git a/src/vm/util.hpp b/src/vm/util.hpp index 4a213b7e75..6380460d64 100644 --- a/src/vm/util.hpp +++ b/src/vm/util.hpp @@ -678,16 +678,6 @@ public: } }; -#ifdef FEATURE_INCLUDE_ALL_INTERFACES -#define CLRMEMORYHOSTED 0x1 -#define CLRTASKHOSTED 0x2 -#define CLRSYNCHOSTED 0x4 -#define CLRTHREADPOOLHOSTED 0x8 -#define CLRIOCOMPLETIONHOSTED 0x10 -#define CLRASSEMBLYHOSTED 0x20 -#define CLRGCHOSTED 0x40 -#define CLRSECURITYHOSTED 0x80 -#endif #define CLRHOSTED 0x80000000 GVAL_DECL(DWORD, g_fHostConfig); @@ -700,61 +690,6 @@ inline BOOL CLRHosted() return g_fHostConfig; } -#ifdef FEATURE_INCLUDE_ALL_INTERFACES -inline BOOL CLRMemoryHosted() -{ - LIMITED_METHOD_CONTRACT; - - return g_fHostConfig&CLRMEMORYHOSTED; -} - -inline BOOL CLRTaskHosted() -{ - // !!! Can not use contract here. - // !!! This function is called by Thread::DetachThread after we free TLS memory. - // !!! Contract will recreate TLS memory. - LIMITED_METHOD_DAC_CONTRACT; - - return g_fHostConfig&CLRTASKHOSTED; -} - -inline BOOL CLRSyncHosted() -{ - LIMITED_METHOD_CONTRACT; - - return g_fHostConfig&CLRSYNCHOSTED; -} -inline BOOL CLRThreadpoolHosted() -{ - LIMITED_METHOD_CONTRACT; - - return g_fHostConfig&CLRTHREADPOOLHOSTED; -} -inline BOOL CLRIoCompletionHosted() -{ - LIMITED_METHOD_CONTRACT; - - return g_fHostConfig&CLRIOCOMPLETIONHOSTED; -} -inline BOOL CLRAssemblyHosted() -{ - return g_fHostConfig&CLRASSEMBLYHOSTED; -} - -inline BOOL CLRGCHosted() -{ - LIMITED_METHOD_CONTRACT; - - return g_fHostConfig&CLRGCHOSTED; -} - -inline BOOL CLRSecurityHosted() -{ - LIMITED_METHOD_CONTRACT; - - return g_fHostConfig&CLRSECURITYHOSTED; -} -#else // FEATURE_INCLUDE_ALL_INTERFACES inline BOOL CLRMemoryHosted() { LIMITED_METHOD_CONTRACT; @@ -802,7 +737,6 @@ inline BOOL CLRSecurityHosted() LIMITED_METHOD_CONTRACT; return FALSE; } -#endif // FEATURE_INCLUDE_ALL_INTERFACES #ifndef FEATURE_PAL HMODULE CLRGetModuleHandle(LPCWSTR lpModuleFileName); diff --git a/src/vm/win32threadpool.cpp b/src/vm/win32threadpool.cpp index e8a05c383f..ec42d5fbc2 100644 --- a/src/vm/win32threadpool.cpp +++ b/src/vm/win32threadpool.cpp @@ -448,21 +448,6 @@ BOOL ThreadpoolMgr::Initialize() CPThreadCounter.counts.AsLongLong = counts.AsLongLong; #ifndef FEATURE_PAL -#ifdef FEATURE_INCLUDE_ALL_INTERFACES - if (CLRIoCompletionHosted()) - { - HANDLE hPort; - HRESULT hr; - BEGIN_SO_TOLERANT_CODE_CALLING_HOST(GetThread()); - hr = CorHost2::GetHostIoCompletionManager()->CreateIoCompletionPort(&hPort); - END_SO_TOLERANT_CODE_CALLING_HOST; - if (FAILED(hr)) - goto end; - - GlobalCompletionPort = hPort; - } - else -#endif // FEATURE_INCLUDE_ALL_INTERFACES { GlobalCompletionPort = CreateIoCompletionPort(INVALID_HANDLE_VALUE, NULL, @@ -578,37 +563,6 @@ BOOL ThreadpoolMgr::SetMaxThreads(DWORD MaxWorkerThreads, } CONTRACTL_END; -#ifdef FEATURE_INCLUDE_ALL_INTERFACES - IHostThreadpoolManager *threadpoolProvider = CorHost2::GetHostThreadpoolManager(); - if (threadpoolProvider) { - HRESULT hr; - BEGIN_SO_TOLERANT_CODE_CALLING_HOST(GetThread()); - hr = threadpoolProvider->SetMaxThreads(MaxWorkerThreads); - END_SO_TOLERANT_CODE_CALLING_HOST; - if (FAILED(hr)) - { - SetLastHRError(hr); - return FALSE; - } - } - - IHostIoCompletionManager *ioCompletionProvider = CorHost2::GetHostIoCompletionManager(); - if (ioCompletionProvider) { - HRESULT hr; - BEGIN_SO_TOLERANT_CODE_CALLING_HOST(GetThread()); - hr = ioCompletionProvider->SetMaxThreads(MaxIOCompletionThreads); - END_SO_TOLERANT_CODE_CALLING_HOST; - if (FAILED(hr)) - { - SetLastHRError(hr); - return FALSE; - } - } - - if (threadpoolProvider && ioCompletionProvider) { - return TRUE; - } -#endif // FEATURE_INCLUDE_ALL_INTERFACES if (IsInitialized()) { @@ -637,37 +591,6 @@ BOOL ThreadpoolMgr::GetMaxThreads(DWORD* MaxWorkerThreads, { LIMITED_METHOD_CONTRACT; -#ifdef FEATURE_INCLUDE_ALL_INTERFACES - HRESULT hr = S_OK; - - IHostThreadpoolManager *threadpoolProvider = CorHost2::GetHostThreadpoolManager(); - if (threadpoolProvider) { - BEGIN_SO_TOLERANT_CODE_CALLING_HOST(GetThread()); - hr = threadpoolProvider->GetMaxThreads(MaxWorkerThreads); - END_SO_TOLERANT_CODE_CALLING_HOST; - if (FAILED(hr)) - { - SetLastHRError(hr); - return FALSE; - } - } - - IHostIoCompletionManager *ioCompletionProvider = CorHost2::GetHostIoCompletionManager(); - if (ioCompletionProvider) { - BEGIN_SO_TOLERANT_CODE_CALLING_HOST(GetThread()); - hr = ioCompletionProvider->GetMaxThreads(MaxIOCompletionThreads); - END_SO_TOLERANT_CODE_CALLING_HOST; - if (FAILED(hr)) - { - SetLastHRError(hr); - return FALSE; - } - } - - if (threadpoolProvider && ioCompletionProvider) { - return TRUE; - } -#endif // FEATURE_INCLUDE_ALL_INTERFACES if (!MaxWorkerThreads || !MaxIOCompletionThreads) { @@ -722,36 +645,6 @@ BOOL ThreadpoolMgr::SetMinThreads(DWORD MinWorkerThreads, } CONTRACTL_END; -#ifdef FEATURE_INCLUDE_ALL_INTERFACES - HRESULT hr = S_OK; - - IHostThreadpoolManager *threadpoolProvider = CorHost2::GetHostThreadpoolManager(); - if (threadpoolProvider) { - BEGIN_SO_TOLERANT_CODE_CALLING_HOST(GetThread()); - hr = threadpoolProvider->SetMinThreads(MinWorkerThreads); - END_SO_TOLERANT_CODE_CALLING_HOST; - if (FAILED(hr)) - { - SetLastHRError(hr); - return FALSE; - } - } - - IHostIoCompletionManager *ioCompletionProvider = CorHost2::GetHostIoCompletionManager(); - if (ioCompletionProvider) { - BEGIN_SO_TOLERANT_CODE_CALLING_HOST(GetThread()); - hr = ioCompletionProvider->SetMinThreads(MinIOCompletionThreads); - END_SO_TOLERANT_CODE_CALLING_HOST; - if (FAILED(hr)) - { - SetLastHRError(hr); - return FALSE; - } - } - if (threadpoolProvider && ioCompletionProvider) { - return TRUE; - } -#endif // FEATURE_INCLUDE_ALL_INTERFACES if (!IsInitialized()) { @@ -824,37 +717,6 @@ BOOL ThreadpoolMgr::GetMinThreads(DWORD* MinWorkerThreads, { LIMITED_METHOD_CONTRACT; -#ifdef FEATURE_INCLUDE_ALL_INTERFACES - HRESULT hr = S_OK; - - IHostThreadpoolManager *threadpoolProvider = CorHost2::GetHostThreadpoolManager(); - if (threadpoolProvider) { - BEGIN_SO_TOLERANT_CODE_CALLING_HOST(GetThread()); - hr = threadpoolProvider->GetMinThreads(MinWorkerThreads); - END_SO_TOLERANT_CODE_CALLING_HOST; - if (FAILED(hr)) - { - SetLastHRError(hr); - return FALSE; - } - } - - IHostIoCompletionManager *ioCompletionProvider = CorHost2::GetHostIoCompletionManager(); - if (ioCompletionProvider) { - BEGIN_SO_TOLERANT_CODE_CALLING_HOST(GetThread()); - hr = ioCompletionProvider->GetMinThreads(MinIOCompletionThreads); - END_SO_TOLERANT_CODE_CALLING_HOST; - if (FAILED(hr)) - { - SetLastHRError(hr); - return FALSE; - } - } - - if (threadpoolProvider && ioCompletionProvider) { - return TRUE; - } -#endif // FEATURE_INCLUDE_ALL_INTERFACES if (!MinWorkerThreads || !MinIOCompletionThreads) { @@ -891,37 +753,6 @@ BOOL ThreadpoolMgr::GetAvailableThreads(DWORD* AvailableWorkerThreads, if (IsInitialized()) { -#ifdef FEATURE_INCLUDE_ALL_INTERFACES - HRESULT hr = S_OK; - - IHostThreadpoolManager *threadpoolProvider = CorHost2::GetHostThreadpoolManager(); - if (threadpoolProvider) { - BEGIN_SO_TOLERANT_CODE_CALLING_HOST(GetThread()); - hr = threadpoolProvider->GetAvailableThreads(AvailableWorkerThreads); - END_SO_TOLERANT_CODE_CALLING_HOST; - if (FAILED(hr)) - { - SetLastHRError(hr); - return FALSE; - } - } - - IHostIoCompletionManager *ioCompletionProvider = CorHost2::GetHostIoCompletionManager(); - if (ioCompletionProvider) { - BEGIN_SO_TOLERANT_CODE_CALLING_HOST(GetThread()); - hr = ioCompletionProvider->GetAvailableThreads(AvailableIOCompletionThreads); - END_SO_TOLERANT_CODE_CALLING_HOST; - if (FAILED(hr)) - { - SetLastHRError(hr); - return FALSE; - } - } - - if (threadpoolProvider && ioCompletionProvider) { - return TRUE; - } -#endif // FEATURE_INCLUDE_ALL_INTERFACES if (!AvailableWorkerThreads || !AvailableIOCompletionThreads) { @@ -1078,33 +909,6 @@ BOOL ThreadpoolMgr::QueueUserWorkItem(LPTHREAD_START_ROUTINE Function, EnsureInitialized(); -#ifdef FEATURE_INCLUDE_ALL_INTERFACES - HRESULT hr = S_OK; - - IHostThreadpoolManager *provider = CorHost2::GetHostThreadpoolManager(); - if (provider) { - BEGIN_SO_TOLERANT_CODE_CALLING_HOST(GetThread()); - - if(UnmanagedTPRequest) - { - hr = provider->QueueUserWorkItem(Function, Context, Flags); - } - else - { - hr = provider->QueueUserWorkItem(ExecuteHostRequest, Context, Flags); - } - END_SO_TOLERANT_CODE_CALLING_HOST; - if (FAILED(hr)) - { - SetLastHRError(hr); - return FALSE; - } - else - { - return TRUE; - } - } -#endif // FEATURE_INCLUDE_ALL_INTERFACES if (Flags == CALL_OR_QUEUE) { @@ -3567,23 +3371,6 @@ BOOL ThreadpoolMgr::BindIoCompletionCallback(HANDLE FileHandle, EnsureInitialized(); -#ifdef FEATURE_INCLUDE_ALL_INTERFACES - IHostIoCompletionManager *provider = CorHost2::GetHostIoCompletionManager(); - if (provider) { - BEGIN_SO_TOLERANT_CODE_CALLING_HOST(GetThread()); - errCode = provider->Bind(GlobalCompletionPort, FileHandle); - END_SO_TOLERANT_CODE_CALLING_HOST; - if (FAILED(errCode)) - { - SetLastHRError(errCode); - return FALSE; - } - else - { - return TRUE; - } - } -#endif // FEATURE_INCLUDE_ALL_INTERFACES _ASSERTE(GlobalCompletionPort != NULL); diff --git a/src/vm/win32threadpool.h b/src/vm/win32threadpool.h index 6b4f1dfe07..13bca9f1e3 100644 --- a/src/vm/win32threadpool.h +++ b/src/vm/win32threadpool.h @@ -556,12 +556,6 @@ public: inline static BOOL IsThreadPoolHosted() { -#ifdef FEATURE_INCLUDE_ALL_INTERFACES - IHostThreadpoolManager *provider = CorHost2::GetHostThreadpoolManager(); - if (provider) - return TRUE; - else -#endif return FALSE; } |