diff options
author | Aaron Robinson <arobins@microsoft.com> | 2022-09-30 08:00:13 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-09-30 08:00:13 +0300 |
commit | 3ea12efc120c5429fc1688bf5056d59f4d68cdeb (patch) | |
tree | a6d041d237c532d047af93ae5a20b7c7e8cb2f42 /src | |
parent | 98a89c9d7444f219c7b1aeb3796525d35f04d540 (diff) |
Remove the GenericComPlusCall mechanism (#76415)
Remove unused asm constants.
Remove comments about context-bound objects and remoting.
Use common constants for VtblGap concept.
Diffstat (limited to 'src')
-rw-r--r-- | src/coreclr/vm/arm/asmconstants.h | 3 | ||||
-rw-r--r-- | src/coreclr/vm/array.cpp | 2 | ||||
-rw-r--r-- | src/coreclr/vm/class.cpp | 1 | ||||
-rw-r--r-- | src/coreclr/vm/clrtocomcall.cpp | 2 | ||||
-rw-r--r-- | src/coreclr/vm/dllimport.cpp | 4 | ||||
-rw-r--r-- | src/coreclr/vm/dynamicmethod.cpp | 2 | ||||
-rw-r--r-- | src/coreclr/vm/genmeth.cpp | 7 | ||||
-rw-r--r-- | src/coreclr/vm/i386/asmconstants.h | 3 | ||||
-rw-r--r-- | src/coreclr/vm/ilstubcache.cpp | 1 | ||||
-rw-r--r-- | src/coreclr/vm/method.cpp | 18 | ||||
-rw-r--r-- | src/coreclr/vm/method.hpp | 31 | ||||
-rw-r--r-- | src/coreclr/vm/method.inl | 25 | ||||
-rw-r--r-- | src/coreclr/vm/methodtablebuilder.cpp | 10 | ||||
-rw-r--r-- | src/coreclr/vm/prestub.cpp | 2 | ||||
-rw-r--r-- | src/coreclr/vm/stubhelpers.cpp | 2 |
15 files changed, 14 insertions, 99 deletions
diff --git a/src/coreclr/vm/arm/asmconstants.h b/src/coreclr/vm/arm/asmconstants.h index 2aa29578aa3..b3b16f1ed62 100644 --- a/src/coreclr/vm/arm/asmconstants.h +++ b/src/coreclr/vm/arm/asmconstants.h @@ -123,9 +123,6 @@ ASMCONSTANTS_C_ASSERT(MethodDesc__mdcClassification == mdcClassification) #ifdef FEATURE_COMINTEROP -#define MethodDesc__mcComInterop 0x6 -ASMCONSTANTS_C_ASSERT(MethodDesc__mcComInterop == mcComInterop) - #define Stub__m_pCode DBG_FRE(0x10, 0x0c) ASMCONSTANTS_C_ASSERT(Stub__m_pCode == sizeof(Stub)) diff --git a/src/coreclr/vm/array.cpp b/src/coreclr/vm/array.cpp index 6615e60cffa..d77f48cdfa7 100644 --- a/src/coreclr/vm/array.cpp +++ b/src/coreclr/vm/array.cpp @@ -530,7 +530,7 @@ MethodTable* Module::CreateArrayMethodTable(TypeHandle elemTypeHnd, CorElementTy + 3; // for rank specific Get, Set, Address MethodDescChunk * pChunks = MethodDescChunk::CreateChunk(pAllocator->GetHighFrequencyHeap(), - dwMethodDescs, mcArray, FALSE /* fNonVtableSlot*/, FALSE /* fNativeCodeSlot */, FALSE /* fComPlusCallInfo */, + dwMethodDescs, mcArray, FALSE /* fNonVtableSlot*/, FALSE /* fNativeCodeSlot */, pMT, pamTracker); pClass->SetChunks(pChunks); diff --git a/src/coreclr/vm/class.cpp b/src/coreclr/vm/class.cpp index fd6053c64bf..bc0af4953c6 100644 --- a/src/coreclr/vm/class.cpp +++ b/src/coreclr/vm/class.cpp @@ -591,7 +591,6 @@ HRESULT EEClass::AddMethod(MethodTable * pMT, mdMethodDef methodDef, RVA newRVA, mcInstantiated, TRUE /* fNonVtableSlot */, TRUE /* fNativeCodeSlot */, - FALSE /* fComPlusCallInfo */, pMT, &dummyAmTracker); diff --git a/src/coreclr/vm/clrtocomcall.cpp b/src/coreclr/vm/clrtocomcall.cpp index 73b942d9d6d..06d28f50724 100644 --- a/src/coreclr/vm/clrtocomcall.cpp +++ b/src/coreclr/vm/clrtocomcall.cpp @@ -168,7 +168,7 @@ PCODE ComPlusCall::GetStubForILStub(MethodDesc* pMD, MethodDesc** ppStubMD) { STANDARD_VM_CONTRACT; - _ASSERTE(pMD->IsComPlusCall() || pMD->IsGenericComPlusCall()); + _ASSERTE(pMD->IsComPlusCall()); _ASSERTE(*ppStubMD == NULL); DWORD dwStubFlags; diff --git a/src/coreclr/vm/dllimport.cpp b/src/coreclr/vm/dllimport.cpp index de49ed7b178..43174f4eb11 100644 --- a/src/coreclr/vm/dllimport.cpp +++ b/src/coreclr/vm/dllimport.cpp @@ -5641,7 +5641,7 @@ PCODE GetStubForInteropMethod(MethodDesc* pMD, DWORD dwStubFlags) STANDARD_VM_CHECK; PRECONDITION(CheckPointer(pMD)); - PRECONDITION(pMD->IsNDirect() || pMD->IsComPlusCall() || pMD->IsGenericComPlusCall() || pMD->IsEEImpl() || pMD->IsIL()); + PRECONDITION(pMD->IsNDirect() || pMD->IsComPlusCall() || pMD->IsEEImpl() || pMD->IsIL()); } CONTRACT_END; @@ -5655,7 +5655,7 @@ PCODE GetStubForInteropMethod(MethodDesc* pMD, DWORD dwStubFlags) } #ifdef FEATURE_COMINTEROP else - if (pMD->IsComPlusCall() || pMD->IsGenericComPlusCall()) + if (pMD->IsComPlusCall()) { pStub = ComPlusCall::GetStubForILStub(pMD, &pStubMD); } diff --git a/src/coreclr/vm/dynamicmethod.cpp b/src/coreclr/vm/dynamicmethod.cpp index a4227c4d000..98b70206f10 100644 --- a/src/coreclr/vm/dynamicmethod.cpp +++ b/src/coreclr/vm/dynamicmethod.cpp @@ -162,7 +162,7 @@ void DynamicMethodTable::AddMethodsToList() // allocate as many chunks as needed to hold the methods // MethodDescChunk* pChunk = MethodDescChunk::CreateChunk(pHeap, 0 /* one chunk of maximum size */, - mcDynamic, TRUE /* fNonVtableSlot */, TRUE /* fNativeCodeSlot */, FALSE /* fComPlusCallInfo */, m_pMethodTable, &amt); + mcDynamic, TRUE /* fNonVtableSlot */, TRUE /* fNativeCodeSlot */, m_pMethodTable, &amt); if (m_DynamicMethodList) RETURN; int methodCount = pChunk->GetCount(); diff --git a/src/coreclr/vm/genmeth.cpp b/src/coreclr/vm/genmeth.cpp index c43681513d8..da38d13e1d6 100644 --- a/src/coreclr/vm/genmeth.cpp +++ b/src/coreclr/vm/genmeth.cpp @@ -67,7 +67,6 @@ static MethodDesc* CreateMethodDesc(LoaderAllocator *pAllocator, MethodDesc *pTemplateMD, DWORD classification, BOOL fNativeCodeSlot, - BOOL fComPlusCallInfo, AllocMemTracker *pamTracker) { CONTRACTL @@ -92,7 +91,6 @@ static MethodDesc* CreateMethodDesc(LoaderAllocator *pAllocator, classification, TRUE /* fNonVtableSlot*/, fNativeCodeSlot, - fComPlusCallInfo, pMT, pamTracker); @@ -407,8 +405,6 @@ InstantiatedMethodDesc::NewInstantiatedMethodDesc(MethodTable *pExactMT, } } - BOOL forComInterop = FALSE; - // Create a new singleton chunk for the new instantiated method descriptor // Notice that we've passed in the method table pointer; this gets // used in some of the subsequent setup methods for method descs. @@ -418,7 +414,6 @@ InstantiatedMethodDesc::NewInstantiatedMethodDesc(MethodTable *pExactMT, pGenericMDescInRepMT, mcInstantiated, !pWrappedMD, // This is pesimistic estimate for fNativeCodeSlot - forComInterop, &amt)); // Initialize the MD the way it needs to be @@ -899,7 +894,6 @@ MethodDesc::FindOrCreateAssociatedMethodDesc(MethodDesc* pDefMD, pMDescInCanonMT, mcInstantiated, FALSE /* fNativeCodeSlot */, - FALSE /* fComPlusCallInfo */, &amt); // Indicate that this is a stub method which takes a BOXed this pointer. @@ -981,7 +975,6 @@ MethodDesc::FindOrCreateAssociatedMethodDesc(MethodDesc* pDefMD, pNonUnboxingStub, mcInstantiated, FALSE /* fNativeCodeSlot */, - FALSE /* fComPlusCallInfo */, &amt); pResultMD->SetIsUnboxingStub(); diff --git a/src/coreclr/vm/i386/asmconstants.h b/src/coreclr/vm/i386/asmconstants.h index 138f007a788..c2a0c0edc16 100644 --- a/src/coreclr/vm/i386/asmconstants.h +++ b/src/coreclr/vm/i386/asmconstants.h @@ -242,9 +242,6 @@ ASMCONSTANTS_C_ASSERT(MethodDesc_m_wFlags == offsetof(MethodDesc, m_wFlags)) #define MethodDesc_mdcClassification 7 ASMCONSTANTS_C_ASSERT(MethodDesc_mdcClassification == mdcClassification) -#define MethodDesc_mcComInterop 6 -ASMCONSTANTS_C_ASSERT(MethodDesc_mcComInterop == mcComInterop) - #define ComPlusCallMethodDesc__m_pComPlusCallInfo DBG_FRE(0x1C, 0x8) ASMCONSTANTS_C_ASSERT(ComPlusCallMethodDesc__m_pComPlusCallInfo == offsetof(ComPlusCallMethodDesc, m_pComPlusCallInfo)) diff --git a/src/coreclr/vm/ilstubcache.cpp b/src/coreclr/vm/ilstubcache.cpp index 44ece6bf30b..8737bbd33bf 100644 --- a/src/coreclr/vm/ilstubcache.cpp +++ b/src/coreclr/vm/ilstubcache.cpp @@ -184,7 +184,6 @@ MethodDesc* ILStubCache::CreateNewMethodDesc(LoaderHeap* pCreationHeap, MethodTa mcDynamic, TRUE /* fNonVtableSlot */, TRUE /* fNativeCodeSlot */, - FALSE /* fComPlusCallInfo */, pMT, pamTracker); diff --git a/src/coreclr/vm/method.cpp b/src/coreclr/vm/method.cpp index 31144206061..b4ac30905de 100644 --- a/src/coreclr/vm/method.cpp +++ b/src/coreclr/vm/method.cpp @@ -135,9 +135,6 @@ SIZE_T MethodDesc::SizeOf() (mdcClassification | mdcHasNonVtableSlot | mdcMethodImpl -#ifdef FEATURE_COMINTEROP - | mdcHasComPlusCallInfo -#endif | mdcHasNativeCodeSlot)]; return size; @@ -1691,7 +1688,7 @@ MethodDesc* MethodDesc::StripMethodInstantiation() //******************************************************************************* MethodDescChunk *MethodDescChunk::CreateChunk(LoaderHeap *pHeap, DWORD methodDescCount, - DWORD classification, BOOL fNonVtableSlot, BOOL fNativeCodeSlot, BOOL fComPlusCallInfo, MethodTable *pInitialMT, AllocMemTracker *pamTracker) + DWORD classification, BOOL fNonVtableSlot, BOOL fNativeCodeSlot, MethodTable *pInitialMT, AllocMemTracker *pamTracker) { CONTRACT(MethodDescChunk *) { @@ -1715,13 +1712,6 @@ MethodDescChunk *MethodDescChunk::CreateChunk(LoaderHeap *pHeap, DWORD methodDes if (fNativeCodeSlot) oneSize += sizeof(MethodDesc::NativeCodeSlot); -#ifdef FEATURE_COMINTEROP - if (fComPlusCallInfo) - oneSize += sizeof(ComPlusCallInfo); -#else // FEATURE_COMINTEROP - _ASSERTE(!fComPlusCallInfo); -#endif // FEATURE_COMINTEROP - _ASSERTE((oneSize & MethodDesc::ALIGNMENT_MASK) == 0); DWORD maxMethodDescsPerChunk = (DWORD)(MethodDescChunk::MaxSizeOfMethodDescs / oneSize); @@ -1761,10 +1751,6 @@ MethodDescChunk *MethodDescChunk::CreateChunk(LoaderHeap *pHeap, DWORD methodDes pMD->SetHasNonVtableSlot(); if (fNativeCodeSlot) pMD->SetHasNativeCodeSlot(); -#ifdef FEATURE_COMINTEROP - if (fComPlusCallInfo) - pMD->SetupGenericComPlusCall(); -#endif // FEATURE_COMINTEROP _ASSERTE(pMD->SizeOf() == oneSize); @@ -2295,7 +2281,7 @@ BOOL MethodDesc::RequiresMethodDescCallingConvention(BOOL fEstimateForChunk /*=F LIMITED_METHOD_CONTRACT; // Interop marshaling is implemented using shared stubs - if (IsNDirect() || IsComPlusCall() || IsGenericComPlusCall()) + if (IsNDirect() || IsComPlusCall()) return TRUE; diff --git a/src/coreclr/vm/method.hpp b/src/coreclr/vm/method.hpp index 0532163cd60..0edff0f4ff3 100644 --- a/src/coreclr/vm/method.hpp +++ b/src/coreclr/vm/method.hpp @@ -138,11 +138,7 @@ enum MethodDescClassification // Has slot for native code mdcHasNativeCodeSlot = 0x0020, -#ifdef FEATURE_COMINTEROP - mdcHasComPlusCallInfo = 0x0040, -#else // unused = 0x0040, -#endif // Method is static mdcStatic = 0x0080, @@ -657,8 +653,6 @@ public: WRAPPER_NO_CONTRACT; return mcComInterop == GetClassification(); } - inline DWORD IsGenericComPlusCall(); - inline void SetupGenericComPlusCall(); #else // !FEATURE_COMINTEROP // hardcoded to return FALSE to improve code readability inline DWORD IsComPlusCall() @@ -666,11 +660,6 @@ public: LIMITED_METHOD_CONTRACT; return FALSE; } - inline DWORD IsGenericComPlusCall() - { - LIMITED_METHOD_CONTRACT; - return FALSE; - } #endif // !FEATURE_COMINTEROP // Update flags in a thread safe manner. @@ -2185,7 +2174,6 @@ public: DWORD classification, BOOL fNonVtableSlot, BOOL fNativeCodeSlot, - BOOL fComPlusCallInfo, MethodTable *initialMT, class AllocMemTracker *pamTracker); @@ -3375,25 +3363,6 @@ public: #endif } -#ifdef FEATURE_COMINTEROP - void IMD_SetupGenericComPlusCall() - { - LIMITED_METHOD_CONTRACT; - - IMD_GetComPlusCallInfo()->InitStackArgumentSize(); - } - - PTR_ComPlusCallInfo IMD_GetComPlusCallInfo() - { - LIMITED_METHOD_CONTRACT; - - _ASSERTE(IsGenericComPlusCall()); - SIZE_T size = s_ClassificationSizeTable[m_wFlags & (mdcClassification | mdcHasNonVtableSlot | mdcMethodImpl | mdcHasNativeCodeSlot)]; - - return dac_cast<PTR_ComPlusCallInfo>(dac_cast<TADDR>(this) + size); - } -#endif // FEATURE_COMINTEROP - PTR_DictionaryLayout GetDictLayoutRaw() { LIMITED_METHOD_DAC_CONTRACT; diff --git a/src/coreclr/vm/method.inl b/src/coreclr/vm/method.inl index feca2073300..c348cd5c7a0 100644 --- a/src/coreclr/vm/method.inl +++ b/src/coreclr/vm/method.inl @@ -112,23 +112,6 @@ inline BOOL MethodDesc::IsQCall() } #ifdef FEATURE_COMINTEROP -FORCEINLINE DWORD MethodDesc::IsGenericComPlusCall() -{ - LIMITED_METHOD_CONTRACT; - return m_wFlags & mdcHasComPlusCallInfo; -} - -inline void MethodDesc::SetupGenericComPlusCall() -{ - LIMITED_METHOD_CONTRACT; - m_wFlags |= mdcHasComPlusCallInfo; - - AsInstantiatedMethodDesc()->IMD_SetupGenericComPlusCall(); -} -#endif // FEATURE_COMINTEROP - - -#ifdef FEATURE_COMINTEROP // static inline ComPlusCallInfo *ComPlusCallInfo::FromMethodDesc(MethodDesc *pMD) @@ -138,14 +121,10 @@ inline ComPlusCallInfo *ComPlusCallInfo::FromMethodDesc(MethodDesc *pMD) { return ((ComPlusCallMethodDesc *)pMD)->m_pComPlusCallInfo; } - else if (pMD->IsEEImpl()) - { - return ((DelegateEEClass *)pMD->GetClass())->m_pComPlusCallInfo; - } else { - _ASSERTE(pMD->IsGenericComPlusCall()); - return pMD->AsInstantiatedMethodDesc()->IMD_GetComPlusCallInfo(); + _ASSERTE(pMD->IsEEImpl()); + return ((DelegateEEClass *)pMD->GetClass())->m_pComPlusCallInfo; } } diff --git a/src/coreclr/vm/methodtablebuilder.cpp b/src/coreclr/vm/methodtablebuilder.cpp index ebefaf50e56..be4fee76f2f 100644 --- a/src/coreclr/vm/methodtablebuilder.cpp +++ b/src/coreclr/vm/methodtablebuilder.cpp @@ -2698,7 +2698,7 @@ MethodTableBuilder::EnumerateClassMethods() BuildMethodTableThrowException(BFA_METHOD_NAME_TOO_LONG); } - isVtblGap = IsMdRTSpecialName(dwMemberAttrs) && strncmp(strMethodName, "_VtblGap", 8) == 0; + isVtblGap = IsMdRTSpecialName(dwMemberAttrs) && IsVtblGapName(strMethodName); } else { @@ -2737,9 +2737,6 @@ MethodTableBuilder::EnumerateClassMethods() } numGenericMethodArgs = hEnumTyPars.EnumGetCount(); - - // We do not want to support context-bound objects with generic methods. - if (numGenericMethodArgs != 0) { HENUMInternalHolder hEnumGenericPars(pMDInternalImport); @@ -2799,7 +2796,7 @@ MethodTableBuilder::EnumerateClassMethods() // the '_'. We ignore this. // - LPCSTR pos = strMethodName + 8; + LPCSTR pos = strMethodName + COR_VTABLEGAP_NAME_LENGTH; // Skip optional number. while (IS_DIGIT(*pos)) @@ -3191,7 +3188,6 @@ MethodTableBuilder::EnumerateClassMethods() else #endif // !FEATURE_COMINTEROP { - // This codepath is used by remoting type = METHOD_TYPE_NORMAL; } } @@ -9999,7 +9995,7 @@ void MethodTableBuilder::CheckForSystemTypes() // * UInt128: unsigned __int128 // // This behavior matches the ABI standard on various Unix platforms - // On Windows, no standard for Int128 has been established yet, + // On Windows, no standard for Int128 has been established yet, // although applying 16 byte alignment is consistent with treatment of 128 bit SSE types // even on X86 pLayout->m_ManagedLargestAlignmentRequirementOfAllMembers = 16; // sizeof(__int128) diff --git a/src/coreclr/vm/prestub.cpp b/src/coreclr/vm/prestub.cpp index 7df9cf15540..0aba1852ab4 100644 --- a/src/coreclr/vm/prestub.cpp +++ b/src/coreclr/vm/prestub.cpp @@ -2078,7 +2078,7 @@ PCODE MethodDesc::DoPrestub(MethodTable *pDispatchingMT, CallerGCMode callerGCMo // they are not your every day method descriptors, for example // they don't have an IL or code. */ - if (IsComPlusCall() || IsGenericComPlusCall()) + if (IsComPlusCall()) { pCode = GetStubForInteropMethod(this); diff --git a/src/coreclr/vm/stubhelpers.cpp b/src/coreclr/vm/stubhelpers.cpp index 7a34979aace..e82b5e4d3b0 100644 --- a/src/coreclr/vm/stubhelpers.cpp +++ b/src/coreclr/vm/stubhelpers.cpp @@ -294,7 +294,7 @@ FCIMPL4(IUnknown*, StubHelpers::GetCOMIPFromRCW, Object* pSrcUNSAFE, MethodDesc* CONTRACTL { FCALL_CHECK; - PRECONDITION(pMD->IsComPlusCall() || pMD->IsGenericComPlusCall() || pMD->IsEEImpl()); + PRECONDITION(pMD->IsComPlusCall() || pMD->IsEEImpl()); } CONTRACTL_END; |