summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordanmosemsft <danmose@microsoft.com>2017-02-14 13:43:19 -0800
committerdanmosemsft <danmose@microsoft.com>2017-02-14 13:59:08 -0800
commit1476776a3989817bf5378d583b5cf61dd5957925 (patch)
tree36798c713d141bd47eddfda11d2b1a2d60197801
parentc9a217bcabd69a31ec5b81ce1ff6a479dcac1dc2 (diff)
downloadcoreclr-1476776a3989817bf5378d583b5cf61dd5957925.tar.gz
coreclr-1476776a3989817bf5378d583b5cf61dd5957925.tar.bz2
coreclr-1476776a3989817bf5378d583b5cf61dd5957925.zip
Remove never defined FEATURE_INCLUDE_ALL_INTERFACES
-rw-r--r--src/debug/daccess/dacdbiimpl.cpp23
-rw-r--r--src/debug/daccess/enummem.cpp4
-rw-r--r--src/debug/di/process.cpp65
-rw-r--r--src/debug/inc/dacdbiinterface.h3
-rw-r--r--src/inc/MSCOREE.IDL1307
-rw-r--r--src/inc/corhost.h170
-rw-r--r--src/inc/dacvars.h5
-rw-r--r--src/inc/gchost.idl95
-rw-r--r--src/inc/vptr_list.h4
-rw-r--r--src/md/compiler/regmeta.cpp7
-rw-r--r--src/md/compiler/regmeta.h3
-rw-r--r--src/pal/prebuilt/inc/gchost.h2
-rw-r--r--src/utilcode/util.cpp5
-rw-r--r--src/vm/amd64/PInvokeStubs.asm144
-rw-r--r--src/vm/amd64/UMThunkStub.asm114
-rw-r--r--src/vm/amd64/asmconstants.h4
-rw-r--r--src/vm/ceeload.cpp15
-rw-r--r--src/vm/ceemain.cpp21
-rw-r--r--src/vm/comdelegate.cpp10
-rw-r--r--src/vm/comsynchronizable.cpp14
-rw-r--r--src/vm/corhost.cpp658
-rw-r--r--src/vm/crst.cpp90
-rw-r--r--src/vm/crst.h3
-rw-r--r--src/vm/dllimport.cpp63
-rw-r--r--src/vm/dllimport.h2
-rw-r--r--src/vm/dllimportcallback.cpp80
-rw-r--r--src/vm/eeconfig.cpp11
-rw-r--r--src/vm/eepolicy.cpp48
-rw-r--r--src/vm/frames.cpp82
-rw-r--r--src/vm/frames.h70
-rw-r--r--src/vm/hosting.cpp235
-rw-r--r--src/vm/i386/cgenx86.cpp516
-rw-r--r--src/vm/nativeoverlapped.cpp15
-rw-r--r--src/vm/peimage.h3
-rw-r--r--src/vm/peimagelayout.h3
-rw-r--r--src/vm/spinlock.cpp72
-rw-r--r--src/vm/spinlock.h13
-rw-r--r--src/vm/stubhelpers.cpp7
-rw-r--r--src/vm/synch.cpp408
-rw-r--r--src/vm/threads.cpp837
-rw-r--r--src/vm/threads.h84
-rw-r--r--src/vm/threadsuspend.cpp9
-rw-r--r--src/vm/util.cpp61
-rw-r--r--src/vm/util.hpp66
-rw-r--r--src/vm/win32threadpool.cpp213
-rw-r--r--src/vm/win32threadpool.h6
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;
}