Skip to content

Commit

Permalink
Remove NDIRECTSTUB_FL_NGENEDSTUB (never set) (#58146)
Browse files Browse the repository at this point in the history
  • Loading branch information
elinor-fung committed Aug 26, 2021
1 parent 1eed125 commit 8e571cd
Show file tree
Hide file tree
Showing 3 changed files with 13 additions and 59 deletions.
24 changes: 1 addition & 23 deletions src/coreclr/vm/dllimport.cpp
Expand Up @@ -651,7 +651,7 @@ class ILStubState : public StubState
DWORD dwMethodDescLocalNum = (DWORD)-1;

// Notify the profiler of call out of the runtime
if (!SF_IsReverseCOMStub(m_dwStubFlags) && !SF_IsStructMarshalStub(m_dwStubFlags) && (CORProfilerTrackTransitions() || SF_IsNGENedStubForProfiling(m_dwStubFlags)))
if (!SF_IsReverseCOMStub(m_dwStubFlags) && !SF_IsStructMarshalStub(m_dwStubFlags) && CORProfilerTrackTransitions())
{
dwMethodDescLocalNum = m_slIL.EmitProfilerBeginTransitionCallback(pcsDispatch, m_dwStubFlags);
_ASSERTE(dwMethodDescLocalNum != (DWORD)-1);
Expand Down Expand Up @@ -1043,8 +1043,6 @@ class ILStubState : public StubState
if (m_dwStubFlags & NDIRECTSTUB_FL_COM)
dwFlags |= ETW_IL_STUB_FLAGS_COM_INTEROP;
#endif // FEATURE_COMINTEROP
if (m_dwStubFlags & NDIRECTSTUB_FL_NGENEDSTUB)
dwFlags |= ETW_IL_STUB_FLAGS_NGENED_STUB;
if (m_dwStubFlags & NDIRECTSTUB_FL_DELEGATE)
dwFlags |= ETW_IL_STUB_FLAGS_DELEGATE;
if (m_dwStubFlags & NDIRECTSTUB_FL_CONVSIGASVARARG)
Expand Down Expand Up @@ -1107,15 +1105,13 @@ class ILStubState : public StubState
LogOneFlag(dwStubFlags, NDIRECTSTUB_FL_CONVSIGASVARARG, " NDIRECTSTUB_FL_CONVSIGASVARARG\n", facility, level);
LogOneFlag(dwStubFlags, NDIRECTSTUB_FL_BESTFIT, " NDIRECTSTUB_FL_BESTFIT\n", facility, level);
LogOneFlag(dwStubFlags, NDIRECTSTUB_FL_THROWONUNMAPPABLECHAR, " NDIRECTSTUB_FL_THROWONUNMAPPABLECHAR\n", facility, level);
LogOneFlag(dwStubFlags, NDIRECTSTUB_FL_NGENEDSTUB, " NDIRECTSTUB_FL_NGENEDSTUB\n", facility, level);
LogOneFlag(dwStubFlags, NDIRECTSTUB_FL_DELEGATE, " NDIRECTSTUB_FL_DELEGATE\n", facility, level);
LogOneFlag(dwStubFlags, NDIRECTSTUB_FL_DOHRESULTSWAPPING, " NDIRECTSTUB_FL_DOHRESULTSWAPPING\n", facility, level);
LogOneFlag(dwStubFlags, NDIRECTSTUB_FL_REVERSE_INTEROP, " NDIRECTSTUB_FL_REVERSE_INTEROP\n", facility, level);
LogOneFlag(dwStubFlags, NDIRECTSTUB_FL_STRUCT_MARSHAL, " NDIRECTSTUB_FL_STRUCT_MARSHAL\n", facility, level);
#ifdef FEATURE_COMINTEROP
LogOneFlag(dwStubFlags, NDIRECTSTUB_FL_COM, " NDIRECTSTUB_FL_COM\n", facility, level);
#endif // FEATURE_COMINTEROP
LogOneFlag(dwStubFlags, NDIRECTSTUB_FL_NGENEDSTUBFORPROFILING, " NDIRECTSTUB_FL_NGENEDSTUBFORPROFILING\n", facility, level);
LogOneFlag(dwStubFlags, NDIRECTSTUB_FL_GENERATEDEBUGGABLEIL, " NDIRECTSTUB_FL_GENERATEDEBUGGABLEIL\n", facility, level);
LogOneFlag(dwStubFlags, NDIRECTSTUB_FL_UNMANAGED_CALLI, " NDIRECTSTUB_FL_UNMANAGED_CALLI\n", facility, level);
LogOneFlag(dwStubFlags, NDIRECTSTUB_FL_TRIGGERCCTOR, " NDIRECTSTUB_FL_TRIGGERCCTOR\n", facility, level);
Expand All @@ -1134,11 +1130,9 @@ class ILStubState : public StubState
NDIRECTSTUB_FL_CONVSIGASVARARG |
NDIRECTSTUB_FL_BESTFIT |
NDIRECTSTUB_FL_THROWONUNMAPPABLECHAR |
NDIRECTSTUB_FL_NGENEDSTUB |
NDIRECTSTUB_FL_DELEGATE |
NDIRECTSTUB_FL_DOHRESULTSWAPPING |
NDIRECTSTUB_FL_REVERSE_INTEROP |
NDIRECTSTUB_FL_NGENEDSTUBFORPROFILING |
NDIRECTSTUB_FL_GENERATEDEBUGGABLEIL |
NDIRECTSTUB_FL_UNMANAGED_CALLI |
NDIRECTSTUB_FL_STRUCT_MARSHAL |
Expand Down Expand Up @@ -2113,9 +2107,6 @@ void NDirectStubLinker::DoNDirect(ILCodeStream *pcsEmit, DWORD dwStubFlags, Meth
{
if (SF_IsCALLIStub(dwStubFlags)) // unmanaged CALLI
{
// if we ever NGEN CALLI stubs, this would have to be done differently
_ASSERTE(!SF_IsNGENedStub(dwStubFlags));

// for managed-to-unmanaged CALLI that requires marshaling, the target is passed
// as the secret argument to the stub by GenericPInvokeCalliHelper (asmhelpers.asm)
EmitLoadStubContext(pcsEmit, dwStubFlags);
Expand Down Expand Up @@ -4088,12 +4079,6 @@ namespace

pBlob->m_pModule = NULL;

if (SF_IsNGENedStub(pParams->m_dwStubFlags))
{
// don't share across modules if we are ngening the stub
pBlob->m_pModule = pParams->m_pModule;
}

pBlob->m_pMT = pParams->m_pMT;
pBlob->m_cbSizeOfBlob = cbSizeOfBlob.Value();
pBlob->m_unmgdCallConv = static_cast<WORD>(pParams->m_unmgdCallConv);
Expand Down Expand Up @@ -5660,13 +5645,6 @@ PCODE GetStubForInteropMethod(MethodDesc* pMD, DWORD dwStubFlags)
PCODE pStub = NULL;
MethodDesc* pStubMD = NULL;

if (SF_IsNGENedStub(dwStubFlags))
{
// Return NULL -- the caller asked only for an ngened stub and
// one does not exist, so don't do any more work.
return NULL;
}
else
if (pMD->IsNDirect())
{
NDirectMethodDesc* pNMD = (NDirectMethodDesc*)pMD;
Expand Down
6 changes: 2 additions & 4 deletions src/coreclr/vm/dllimport.h
Expand Up @@ -129,14 +129,14 @@ enum NDirectStubFlags
NDIRECTSTUB_FL_CONVSIGASVARARG = 0x00000001,
NDIRECTSTUB_FL_BESTFIT = 0x00000002,
NDIRECTSTUB_FL_THROWONUNMAPPABLECHAR = 0x00000004,
NDIRECTSTUB_FL_NGENEDSTUB = 0x00000008,
// unused = 0x00000008,
NDIRECTSTUB_FL_DELEGATE = 0x00000010,
NDIRECTSTUB_FL_DOHRESULTSWAPPING = 0x00000020,
NDIRECTSTUB_FL_REVERSE_INTEROP = 0x00000040,
#ifdef FEATURE_COMINTEROP
NDIRECTSTUB_FL_COM = 0x00000080,
#endif // FEATURE_COMINTEROP
NDIRECTSTUB_FL_NGENEDSTUBFORPROFILING = 0x00000100,
// unused = 0x00000100,
NDIRECTSTUB_FL_GENERATEDEBUGGABLEIL = 0x00000200,
NDIRECTSTUB_FL_STRUCT_MARSHAL = 0x00000400,
NDIRECTSTUB_FL_UNMANAGED_CALLI = 0x00000800,
Expand Down Expand Up @@ -197,11 +197,9 @@ enum ILStubTypes
inline bool SF_IsVarArgStub (DWORD dwStubFlags) { LIMITED_METHOD_CONTRACT; return (dwStubFlags < NDIRECTSTUB_FL_INVALID && 0 != (dwStubFlags & NDIRECTSTUB_FL_CONVSIGASVARARG)); }
inline bool SF_IsBestFit (DWORD dwStubFlags) { LIMITED_METHOD_CONTRACT; return (dwStubFlags < NDIRECTSTUB_FL_INVALID && 0 != (dwStubFlags & NDIRECTSTUB_FL_BESTFIT)); }
inline bool SF_IsThrowOnUnmappableChar (DWORD dwStubFlags) { LIMITED_METHOD_CONTRACT; return (dwStubFlags < NDIRECTSTUB_FL_INVALID && 0 != (dwStubFlags & NDIRECTSTUB_FL_THROWONUNMAPPABLECHAR)); }
inline bool SF_IsNGENedStub (DWORD dwStubFlags) { LIMITED_METHOD_CONTRACT; return (dwStubFlags < NDIRECTSTUB_FL_INVALID && 0 != (dwStubFlags & NDIRECTSTUB_FL_NGENEDSTUB)); }
inline bool SF_IsDelegateStub (DWORD dwStubFlags) { LIMITED_METHOD_CONTRACT; return (dwStubFlags < NDIRECTSTUB_FL_INVALID && 0 != (dwStubFlags & NDIRECTSTUB_FL_DELEGATE)); }
inline bool SF_IsHRESULTSwapping (DWORD dwStubFlags) { LIMITED_METHOD_CONTRACT; return (dwStubFlags < NDIRECTSTUB_FL_INVALID && 0 != (dwStubFlags & NDIRECTSTUB_FL_DOHRESULTSWAPPING)); }
inline bool SF_IsReverseStub (DWORD dwStubFlags) { LIMITED_METHOD_CONTRACT; return (dwStubFlags < NDIRECTSTUB_FL_INVALID && 0 != (dwStubFlags & NDIRECTSTUB_FL_REVERSE_INTEROP)); }
inline bool SF_IsNGENedStubForProfiling(DWORD dwStubFlags) { LIMITED_METHOD_CONTRACT; return (dwStubFlags < NDIRECTSTUB_FL_INVALID && 0 != (dwStubFlags & NDIRECTSTUB_FL_NGENEDSTUBFORPROFILING)); }
inline bool SF_IsDebuggableStub (DWORD dwStubFlags) { LIMITED_METHOD_CONTRACT; return (dwStubFlags < NDIRECTSTUB_FL_INVALID && 0 != (dwStubFlags & NDIRECTSTUB_FL_GENERATEDEBUGGABLEIL)); }
inline bool SF_IsCALLIStub (DWORD dwStubFlags) { LIMITED_METHOD_CONTRACT; return (dwStubFlags < NDIRECTSTUB_FL_INVALID && 0 != (dwStubFlags & NDIRECTSTUB_FL_UNMANAGED_CALLI)); }
inline bool SF_IsStubWithCctorTrigger (DWORD dwStubFlags) { LIMITED_METHOD_CONTRACT; return (dwStubFlags < NDIRECTSTUB_FL_INVALID && 0 != (dwStubFlags & NDIRECTSTUB_FL_TRIGGERCCTOR)); }
Expand Down
42 changes: 10 additions & 32 deletions src/coreclr/vm/dllimportcallback.cpp
Expand Up @@ -462,44 +462,22 @@ VOID UMThunkMarshInfo::RunTimeInit()
if (IsCompletelyInited())
return;

PCODE pFinalILStub = NULL;

MethodDesc * pMD = GetMethod();

// Lookup NGened stub - currently we only support ngening of reverse delegate invoke interop stubs
if (pMD != NULL && pMD->IsEEImpl())
{
DWORD dwStubFlags = NDIRECTSTUB_FL_NGENEDSTUB | NDIRECTSTUB_FL_REVERSE_INTEROP | NDIRECTSTUB_FL_DELEGATE;

#if defined(DEBUGGING_SUPPORTED)
// Combining the next two lines, and eliminating jitDebuggerFlags, leads to bad codegen in x86 Release builds using Visual C++ 19.00.24215.1.
CORJIT_FLAGS jitDebuggerFlags = GetDebuggerCompileFlags(GetModule(), CORJIT_FLAGS());
if (jitDebuggerFlags.IsSet(CORJIT_FLAGS::CORJIT_FLAG_DEBUG_CODE))
{
dwStubFlags |= NDIRECTSTUB_FL_GENERATEDEBUGGABLEIL;
}
#endif // DEBUGGING_SUPPORTED

pFinalILStub = GetStubForInteropMethod(pMD, dwStubFlags);
}

if (pFinalILStub == NULL)
{
PInvokeStaticSigInfo sigInfo;
PInvokeStaticSigInfo sigInfo;

if (pMD != NULL)
new (&sigInfo) PInvokeStaticSigInfo(pMD);
else
new (&sigInfo) PInvokeStaticSigInfo(GetSignature(), GetModule());
if (pMD != NULL)
new (&sigInfo) PInvokeStaticSigInfo(pMD);
else
new (&sigInfo) PInvokeStaticSigInfo(GetSignature(), GetModule());

DWORD dwStubFlags = 0;
DWORD dwStubFlags = 0;

if (sigInfo.IsDelegateInterop())
dwStubFlags |= NDIRECTSTUB_FL_DELEGATE;
if (sigInfo.IsDelegateInterop())
dwStubFlags |= NDIRECTSTUB_FL_DELEGATE;

MethodDesc* pStubMD = GetILStubMethodDesc(pMD, &sigInfo, dwStubFlags);
pFinalILStub = JitILStub(pStubMD);
}
MethodDesc* pStubMD = GetILStubMethodDesc(pMD, &sigInfo, dwStubFlags);
PCODE pFinalILStub = JitILStub(pStubMD);

// Must be the last thing we set!
InterlockedCompareExchangeT<PCODE>(&m_pILStub, pFinalILStub, (PCODE)1);
Expand Down

0 comments on commit 8e571cd

Please sign in to comment.