Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/dotnet/runtime.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAaron Robinson <arobins@microsoft.com>2022-09-30 08:00:13 +0300
committerGitHub <noreply@github.com>2022-09-30 08:00:13 +0300
commit3ea12efc120c5429fc1688bf5056d59f4d68cdeb (patch)
treea6d041d237c532d047af93ae5a20b7c7e8cb2f42 /src
parent98a89c9d7444f219c7b1aeb3796525d35f04d540 (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.h3
-rw-r--r--src/coreclr/vm/array.cpp2
-rw-r--r--src/coreclr/vm/class.cpp1
-rw-r--r--src/coreclr/vm/clrtocomcall.cpp2
-rw-r--r--src/coreclr/vm/dllimport.cpp4
-rw-r--r--src/coreclr/vm/dynamicmethod.cpp2
-rw-r--r--src/coreclr/vm/genmeth.cpp7
-rw-r--r--src/coreclr/vm/i386/asmconstants.h3
-rw-r--r--src/coreclr/vm/ilstubcache.cpp1
-rw-r--r--src/coreclr/vm/method.cpp18
-rw-r--r--src/coreclr/vm/method.hpp31
-rw-r--r--src/coreclr/vm/method.inl25
-rw-r--r--src/coreclr/vm/methodtablebuilder.cpp10
-rw-r--r--src/coreclr/vm/prestub.cpp2
-rw-r--r--src/coreclr/vm/stubhelpers.cpp2
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;