From 5e6e387597ad23833cf6293941a999c6dede35a8 Mon Sep 17 00:00:00 2001 From: EgorBo Date: Wed, 14 May 2025 20:29:21 +0200 Subject: [PATCH 1/6] remove unused JIT-EE APIs --- src/coreclr/inc/corinfo.h | 10 -- src/coreclr/inc/icorjitinfoimpl_generated.h | 8 -- src/coreclr/inc/jiteeversionguid.h | 10 +- src/coreclr/jit/ICorJitInfo_names_generated.h | 2 - .../jit/ICorJitInfo_wrapper_generated.hpp | 20 --- src/coreclr/jit/compiler.hpp | 16 +-- .../tools/Common/JitInterface/CorInfoImpl.cs | 6 - .../JitInterface/CorInfoImpl_generated.cs | 118 +++++++----------- .../ThunkGenerator/ThunkInput.txt | 3 +- .../aot/jitinterface/jitinterface_generated.h | 22 ---- .../tools/superpmi/superpmi-shared/lwmlist.h | 2 - .../superpmi-shared/methodcontext.cpp | 66 ---------- .../superpmi/superpmi-shared/methodcontext.h | 12 +- .../superpmi-shim-collector/icorjitinfo.cpp | 16 --- .../icorjitinfo_generated.cpp | 16 --- .../icorjitinfo_generated.cpp | 14 --- .../tools/superpmi/superpmi/icorjitinfo.cpp | 12 -- src/coreclr/vm/jitinterface.cpp | 41 ------ 18 files changed, 53 insertions(+), 341 deletions(-) diff --git a/src/coreclr/inc/corinfo.h b/src/coreclr/inc/corinfo.h index a63cf8a5a0cf68..8b57d280aeee92 100644 --- a/src/coreclr/inc/corinfo.h +++ b/src/coreclr/inc/corinfo.h @@ -3136,11 +3136,6 @@ class ICorDynamicInfo : public ICorStaticInfo CORINFO_MODULE_HANDLE handle ) = 0; - virtual CORINFO_MODULE_HANDLE embedModuleHandle( - CORINFO_MODULE_HANDLE handle, - void **ppIndirection = NULL - ) = 0; - virtual CORINFO_CLASS_HANDLE embedClassHandle( CORINFO_CLASS_HANDLE handle, void **ppIndirection = NULL @@ -3151,11 +3146,6 @@ class ICorDynamicInfo : public ICorStaticInfo void **ppIndirection = NULL ) = 0; - virtual CORINFO_FIELD_HANDLE embedFieldHandle( - CORINFO_FIELD_HANDLE handle, - void **ppIndirection = NULL - ) = 0; - // Given a module scope (module), a method handle (context) and // a metadata token (metaTOK), fetch the handle // (type, field or method) associated with the token. diff --git a/src/coreclr/inc/icorjitinfoimpl_generated.h b/src/coreclr/inc/icorjitinfoimpl_generated.h index 73e330058f9d2d..ce011a1bb5be70 100644 --- a/src/coreclr/inc/icorjitinfoimpl_generated.h +++ b/src/coreclr/inc/icorjitinfoimpl_generated.h @@ -556,10 +556,6 @@ void* getMethodSync( CorInfoHelpFunc getLazyStringLiteralHelper( CORINFO_MODULE_HANDLE handle) override; -CORINFO_MODULE_HANDLE embedModuleHandle( - CORINFO_MODULE_HANDLE handle, - void** ppIndirection) override; - CORINFO_CLASS_HANDLE embedClassHandle( CORINFO_CLASS_HANDLE handle, void** ppIndirection) override; @@ -568,10 +564,6 @@ CORINFO_METHOD_HANDLE embedMethodHandle( CORINFO_METHOD_HANDLE handle, void** ppIndirection) override; -CORINFO_FIELD_HANDLE embedFieldHandle( - CORINFO_FIELD_HANDLE handle, - void** ppIndirection) override; - void embedGenericHandle( CORINFO_RESOLVED_TOKEN* pResolvedToken, bool fEmbedParent, diff --git a/src/coreclr/inc/jiteeversionguid.h b/src/coreclr/inc/jiteeversionguid.h index cd481e46fed26d..0df9bf33600f54 100644 --- a/src/coreclr/inc/jiteeversionguid.h +++ b/src/coreclr/inc/jiteeversionguid.h @@ -37,11 +37,11 @@ #include -constexpr GUID JITEEVersionIdentifier = { /* 26d0dde8-bc9d-4543-9b9a-57ad8b1acdc0 */ - 0x26d0dde8, - 0xbc9d, - 0x4543, - {0x9b, 0x9a, 0x57, 0xad, 0x8b, 0x1a, 0xcd, 0xc0} +constexpr GUID JITEEVersionIdentifier = { /* 8a90b512-09d7-4709-9fd6-e288a9ab3131 */ + 0x8a90b512, + 0x09d7, + 0x4709, + {0x9f, 0xd6, 0xe2, 0x88, 0xa9, 0xab, 0x31, 0x31} }; #endif // JIT_EE_VERSIONING_GUID_H diff --git a/src/coreclr/jit/ICorJitInfo_names_generated.h b/src/coreclr/jit/ICorJitInfo_names_generated.h index cf50808bb3efe8..9d9b6a782a4ab8 100644 --- a/src/coreclr/jit/ICorJitInfo_names_generated.h +++ b/src/coreclr/jit/ICorJitInfo_names_generated.h @@ -138,10 +138,8 @@ DEF_CLR_API(getFunctionEntryPoint) DEF_CLR_API(getFunctionFixedEntryPoint) DEF_CLR_API(getMethodSync) DEF_CLR_API(getLazyStringLiteralHelper) -DEF_CLR_API(embedModuleHandle) DEF_CLR_API(embedClassHandle) DEF_CLR_API(embedMethodHandle) -DEF_CLR_API(embedFieldHandle) DEF_CLR_API(embedGenericHandle) DEF_CLR_API(getLocationOfThisType) DEF_CLR_API(getAddressOfPInvokeTarget) diff --git a/src/coreclr/jit/ICorJitInfo_wrapper_generated.hpp b/src/coreclr/jit/ICorJitInfo_wrapper_generated.hpp index bcc31380d5ce14..adc59227ed48ac 100644 --- a/src/coreclr/jit/ICorJitInfo_wrapper_generated.hpp +++ b/src/coreclr/jit/ICorJitInfo_wrapper_generated.hpp @@ -1318,16 +1318,6 @@ CorInfoHelpFunc WrapICorJitInfo::getLazyStringLiteralHelper( return temp; } -CORINFO_MODULE_HANDLE WrapICorJitInfo::embedModuleHandle( - CORINFO_MODULE_HANDLE handle, - void** ppIndirection) -{ - API_ENTER(embedModuleHandle); - CORINFO_MODULE_HANDLE temp = wrapHnd->embedModuleHandle(handle, ppIndirection); - API_LEAVE(embedModuleHandle); - return temp; -} - CORINFO_CLASS_HANDLE WrapICorJitInfo::embedClassHandle( CORINFO_CLASS_HANDLE handle, void** ppIndirection) @@ -1348,16 +1338,6 @@ CORINFO_METHOD_HANDLE WrapICorJitInfo::embedMethodHandle( return temp; } -CORINFO_FIELD_HANDLE WrapICorJitInfo::embedFieldHandle( - CORINFO_FIELD_HANDLE handle, - void** ppIndirection) -{ - API_ENTER(embedFieldHandle); - CORINFO_FIELD_HANDLE temp = wrapHnd->embedFieldHandle(handle, ppIndirection); - API_LEAVE(embedFieldHandle); - return temp; -} - void WrapICorJitInfo::embedGenericHandle( CORINFO_RESOLVED_TOKEN* pResolvedToken, bool fEmbedParent, diff --git a/src/coreclr/jit/compiler.hpp b/src/coreclr/jit/compiler.hpp index 225594d153860a..c90d528f41c6f7 100644 --- a/src/coreclr/jit/compiler.hpp +++ b/src/coreclr/jit/compiler.hpp @@ -1489,13 +1489,7 @@ inline GenTreeIntCon* Compiler::gtNewIconHandleNode(size_t value, GenTreeFlags f inline GenTree* Compiler::gtNewIconEmbScpHndNode(CORINFO_MODULE_HANDLE scpHnd) { - void *embedScpHnd, *pEmbedScpHnd; - - embedScpHnd = (void*)info.compCompHnd->embedModuleHandle(scpHnd, &pEmbedScpHnd); - - assert((!embedScpHnd) != (!pEmbedScpHnd)); - - return gtNewIconEmbHndNode(embedScpHnd, pEmbedScpHnd, GTF_ICON_SCOPE_HDL, scpHnd); + return gtNewIconEmbHndNode((void*)scpHnd, nullptr, GTF_ICON_SCOPE_HDL, scpHnd); } //----------------------------------------------------------------------------- @@ -1528,13 +1522,7 @@ inline GenTree* Compiler::gtNewIconEmbMethHndNode(CORINFO_METHOD_HANDLE methHnd) inline GenTree* Compiler::gtNewIconEmbFldHndNode(CORINFO_FIELD_HANDLE fldHnd) { - void *embedFldHnd, *pEmbedFldHnd; - - embedFldHnd = (void*)info.compCompHnd->embedFieldHandle(fldHnd, &pEmbedFldHnd); - - assert((!embedFldHnd) != (!pEmbedFldHnd)); - - return gtNewIconEmbHndNode(embedFldHnd, pEmbedFldHnd, GTF_ICON_FIELD_HDL, fldHnd); + return gtNewIconEmbHndNode((void*)fldHnd, nullptr, GTF_ICON_FIELD_HDL, fldHnd); } /*****************************************************************************/ diff --git a/src/coreclr/tools/Common/JitInterface/CorInfoImpl.cs b/src/coreclr/tools/Common/JitInterface/CorInfoImpl.cs index 6cdb10a5b17b80..d5974dd014f03a 100644 --- a/src/coreclr/tools/Common/JitInterface/CorInfoImpl.cs +++ b/src/coreclr/tools/Common/JitInterface/CorInfoImpl.cs @@ -3592,12 +3592,6 @@ private CorInfoHelpFunc getLazyStringLiteralHelper(CORINFO_MODULE_STRUCT_* handl return CorInfoHelpFunc.CORINFO_HELP_UNDEF; } - private CORINFO_MODULE_STRUCT_* embedModuleHandle(CORINFO_MODULE_STRUCT_* handle, ref void* ppIndirection) - { throw new NotImplementedException("embedModuleHandle"); } - - private CORINFO_FIELD_STRUCT_* embedFieldHandle(CORINFO_FIELD_STRUCT_* handle, ref void* ppIndirection) - { throw new NotImplementedException("embedFieldHandle"); } - private static CORINFO_RUNTIME_LOOKUP_KIND GetGenericRuntimeLookupKind(MethodDesc method) { if (method.RequiresInstMethodDescArg()) diff --git a/src/coreclr/tools/Common/JitInterface/CorInfoImpl_generated.cs b/src/coreclr/tools/Common/JitInterface/CorInfoImpl_generated.cs index 8b1a6f5d8d0442..9463f1482371d3 100644 --- a/src/coreclr/tools/Common/JitInterface/CorInfoImpl_generated.cs +++ b/src/coreclr/tools/Common/JitInterface/CorInfoImpl_generated.cs @@ -1989,21 +1989,6 @@ private static CorInfoHelpFunc _getLazyStringLiteralHelper(IntPtr thisHandle, In } } - [UnmanagedCallersOnly] - private static CORINFO_MODULE_STRUCT_* _embedModuleHandle(IntPtr thisHandle, IntPtr* ppException, CORINFO_MODULE_STRUCT_* handle, void** ppIndirection) - { - var _this = GetThis(thisHandle); - try - { - return _this.embedModuleHandle(handle, ref *ppIndirection); - } - catch (Exception ex) - { - *ppException = _this.AllocException(ex); - return default; - } - } - [UnmanagedCallersOnly] private static CORINFO_CLASS_STRUCT_* _embedClassHandle(IntPtr thisHandle, IntPtr* ppException, CORINFO_CLASS_STRUCT_* handle, void** ppIndirection) { @@ -2034,21 +2019,6 @@ private static CorInfoHelpFunc _getLazyStringLiteralHelper(IntPtr thisHandle, In } } - [UnmanagedCallersOnly] - private static CORINFO_FIELD_STRUCT_* _embedFieldHandle(IntPtr thisHandle, IntPtr* ppException, CORINFO_FIELD_STRUCT_* handle, void** ppIndirection) - { - var _this = GetThis(thisHandle); - try - { - return _this.embedFieldHandle(handle, ref *ppIndirection); - } - catch (Exception ex) - { - *ppException = _this.AllocException(ex); - return default; - } - } - [UnmanagedCallersOnly] private static void _embedGenericHandle(IntPtr thisHandle, IntPtr* ppException, CORINFO_RESOLVED_TOKEN* pResolvedToken, byte fEmbedParent, CORINFO_METHOD_STRUCT_* callerHandle, CORINFO_GENERICHANDLE_RESULT* pResult) { @@ -2637,7 +2607,7 @@ private static uint _getJitFlags(IntPtr thisHandle, IntPtr* ppException, CORJIT_ private static IntPtr GetUnmanagedCallbacks() { - void** callbacks = (void**)Marshal.AllocCoTaskMem(sizeof(IntPtr) * 178); + void** callbacks = (void**)Marshal.AllocCoTaskMem(sizeof(IntPtr) * 176); callbacks[0] = (delegate* unmanaged)&_isIntrinsic; callbacks[1] = (delegate* unmanaged)&_notifyMethodInfoUsage; @@ -2773,50 +2743,48 @@ private static IntPtr GetUnmanagedCallbacks() callbacks[131] = (delegate* unmanaged)&_getFunctionFixedEntryPoint; callbacks[132] = (delegate* unmanaged)&_getMethodSync; callbacks[133] = (delegate* unmanaged)&_getLazyStringLiteralHelper; - callbacks[134] = (delegate* unmanaged)&_embedModuleHandle; - callbacks[135] = (delegate* unmanaged)&_embedClassHandle; - callbacks[136] = (delegate* unmanaged)&_embedMethodHandle; - callbacks[137] = (delegate* unmanaged)&_embedFieldHandle; - callbacks[138] = (delegate* unmanaged)&_embedGenericHandle; - callbacks[139] = (delegate* unmanaged)&_getLocationOfThisType; - callbacks[140] = (delegate* unmanaged)&_getAddressOfPInvokeTarget; - callbacks[141] = (delegate* unmanaged)&_GetCookieForPInvokeCalliSig; - callbacks[142] = (delegate* unmanaged)&_canGetCookieForPInvokeCalliSig; - callbacks[143] = (delegate* unmanaged)&_getJustMyCodeHandle; - callbacks[144] = (delegate* unmanaged)&_GetProfilingHandle; - callbacks[145] = (delegate* unmanaged)&_getCallInfo; - callbacks[146] = (delegate* unmanaged)&_getStaticFieldContent; - callbacks[147] = (delegate* unmanaged)&_getObjectContent; - callbacks[148] = (delegate* unmanaged)&_getStaticFieldCurrentClass; - callbacks[149] = (delegate* unmanaged)&_getVarArgsHandle; - callbacks[150] = (delegate* unmanaged)&_canGetVarArgsHandle; - callbacks[151] = (delegate* unmanaged)&_constructStringLiteral; - callbacks[152] = (delegate* unmanaged)&_emptyStringLiteral; - callbacks[153] = (delegate* unmanaged)&_getFieldThreadLocalStoreID; - callbacks[154] = (delegate* unmanaged)&_GetDelegateCtor; - callbacks[155] = (delegate* unmanaged)&_MethodCompileComplete; - callbacks[156] = (delegate* unmanaged)&_getTailCallHelpers; - callbacks[157] = (delegate* unmanaged)&_getAsyncResumptionStub; - callbacks[158] = (delegate* unmanaged)&_convertPInvokeCalliToCall; - callbacks[159] = (delegate* unmanaged)&_notifyInstructionSetUsage; - callbacks[160] = (delegate* unmanaged)&_updateEntryPointForTailCall; - callbacks[161] = (delegate* unmanaged)&_allocMem; - callbacks[162] = (delegate* unmanaged)&_reserveUnwindInfo; - callbacks[163] = (delegate* unmanaged)&_allocUnwindInfo; - callbacks[164] = (delegate* unmanaged)&_allocGCInfo; - callbacks[165] = (delegate* unmanaged)&_setEHcount; - callbacks[166] = (delegate* unmanaged)&_setEHinfo; - callbacks[167] = (delegate* unmanaged)&_logMsg; - callbacks[168] = (delegate* unmanaged)&_doAssert; - callbacks[169] = (delegate* unmanaged)&_reportFatalError; - callbacks[170] = (delegate* unmanaged)&_getPgoInstrumentationResults; - callbacks[171] = (delegate* unmanaged)&_allocPgoInstrumentationBySchema; - callbacks[172] = (delegate* unmanaged)&_recordCallSite; - callbacks[173] = (delegate* unmanaged)&_recordRelocation; - callbacks[174] = (delegate* unmanaged)&_getRelocTypeHint; - callbacks[175] = (delegate* unmanaged)&_getExpectedTargetArchitecture; - callbacks[176] = (delegate* unmanaged)&_getJitFlags; - callbacks[177] = (delegate* unmanaged)&_getSpecialCopyHelper; + callbacks[134] = (delegate* unmanaged)&_embedClassHandle; + callbacks[135] = (delegate* unmanaged)&_embedMethodHandle; + callbacks[136] = (delegate* unmanaged)&_embedGenericHandle; + callbacks[137] = (delegate* unmanaged)&_getLocationOfThisType; + callbacks[138] = (delegate* unmanaged)&_getAddressOfPInvokeTarget; + callbacks[139] = (delegate* unmanaged)&_GetCookieForPInvokeCalliSig; + callbacks[140] = (delegate* unmanaged)&_canGetCookieForPInvokeCalliSig; + callbacks[141] = (delegate* unmanaged)&_getJustMyCodeHandle; + callbacks[142] = (delegate* unmanaged)&_GetProfilingHandle; + callbacks[143] = (delegate* unmanaged)&_getCallInfo; + callbacks[144] = (delegate* unmanaged)&_getStaticFieldContent; + callbacks[145] = (delegate* unmanaged)&_getObjectContent; + callbacks[146] = (delegate* unmanaged)&_getStaticFieldCurrentClass; + callbacks[147] = (delegate* unmanaged)&_getVarArgsHandle; + callbacks[148] = (delegate* unmanaged)&_canGetVarArgsHandle; + callbacks[149] = (delegate* unmanaged)&_constructStringLiteral; + callbacks[150] = (delegate* unmanaged)&_emptyStringLiteral; + callbacks[151] = (delegate* unmanaged)&_getFieldThreadLocalStoreID; + callbacks[152] = (delegate* unmanaged)&_GetDelegateCtor; + callbacks[153] = (delegate* unmanaged)&_MethodCompileComplete; + callbacks[154] = (delegate* unmanaged)&_getTailCallHelpers; + callbacks[155] = (delegate* unmanaged)&_getAsyncResumptionStub; + callbacks[156] = (delegate* unmanaged)&_convertPInvokeCalliToCall; + callbacks[157] = (delegate* unmanaged)&_notifyInstructionSetUsage; + callbacks[158] = (delegate* unmanaged)&_updateEntryPointForTailCall; + callbacks[159] = (delegate* unmanaged)&_allocMem; + callbacks[160] = (delegate* unmanaged)&_reserveUnwindInfo; + callbacks[161] = (delegate* unmanaged)&_allocUnwindInfo; + callbacks[162] = (delegate* unmanaged)&_allocGCInfo; + callbacks[163] = (delegate* unmanaged)&_setEHcount; + callbacks[164] = (delegate* unmanaged)&_setEHinfo; + callbacks[165] = (delegate* unmanaged)&_logMsg; + callbacks[166] = (delegate* unmanaged)&_doAssert; + callbacks[167] = (delegate* unmanaged)&_reportFatalError; + callbacks[168] = (delegate* unmanaged)&_getPgoInstrumentationResults; + callbacks[169] = (delegate* unmanaged)&_allocPgoInstrumentationBySchema; + callbacks[170] = (delegate* unmanaged)&_recordCallSite; + callbacks[171] = (delegate* unmanaged)&_recordRelocation; + callbacks[172] = (delegate* unmanaged)&_getRelocTypeHint; + callbacks[173] = (delegate* unmanaged)&_getExpectedTargetArchitecture; + callbacks[174] = (delegate* unmanaged)&_getJitFlags; + callbacks[175] = (delegate* unmanaged)&_getSpecialCopyHelper; return (IntPtr)callbacks; } diff --git a/src/coreclr/tools/Common/JitInterface/ThunkGenerator/ThunkInput.txt b/src/coreclr/tools/Common/JitInterface/ThunkGenerator/ThunkInput.txt index 6030b745b013e4..3978aa300982c7 100644 --- a/src/coreclr/tools/Common/JitInterface/ThunkGenerator/ThunkInput.txt +++ b/src/coreclr/tools/Common/JitInterface/ThunkGenerator/ThunkInput.txt @@ -299,10 +299,9 @@ FUNCTIONS void getFunctionFixedEntryPoint(CORINFO_METHOD_HANDLE ftn, bool isUnsafeFunctionPointer, CORINFO_CONST_LOOKUP * pResult); void* getMethodSync(CORINFO_METHOD_HANDLE ftn, void **ppIndirection); CorInfoHelpFunc getLazyStringLiteralHelper(CORINFO_MODULE_HANDLE handle); - CORINFO_MODULE_HANDLE embedModuleHandle(CORINFO_MODULE_HANDLE handle, void **ppIndirection); CORINFO_CLASS_HANDLE embedClassHandle(CORINFO_CLASS_HANDLE handle, void **ppIndirection); CORINFO_METHOD_HANDLE embedMethodHandle(CORINFO_METHOD_HANDLE handle, void **ppIndirection); - CORINFO_FIELD_HANDLE embedFieldHandle(CORINFO_FIELD_HANDLE handle, void **ppIndirection); + void* getCompileTimeHandleFromEmbedded(void* embeddedHandle); void embedGenericHandle(CORINFO_RESOLVED_TOKEN * pResolvedToken, bool fEmbedParent, CORINFO_METHOD_HANDLE callerHandle, CORINFO_GENERICHANDLE_RESULT * pResult); void getLocationOfThisType(CORINFO_METHOD_HANDLE context, CORINFO_LOOKUP_KIND* pLookupKind); void getAddressOfPInvokeTarget(CORINFO_METHOD_HANDLE method, CORINFO_CONST_LOOKUP *pLookup); diff --git a/src/coreclr/tools/aot/jitinterface/jitinterface_generated.h b/src/coreclr/tools/aot/jitinterface/jitinterface_generated.h index 729a09de403eac..40b33dba272995 100644 --- a/src/coreclr/tools/aot/jitinterface/jitinterface_generated.h +++ b/src/coreclr/tools/aot/jitinterface/jitinterface_generated.h @@ -145,10 +145,8 @@ struct JitInterfaceCallbacks void (* getFunctionFixedEntryPoint)(void * thisHandle, CorInfoExceptionClass** ppException, CORINFO_METHOD_HANDLE ftn, bool isUnsafeFunctionPointer, CORINFO_CONST_LOOKUP* pResult); void* (* getMethodSync)(void * thisHandle, CorInfoExceptionClass** ppException, CORINFO_METHOD_HANDLE ftn, void** ppIndirection); CorInfoHelpFunc (* getLazyStringLiteralHelper)(void * thisHandle, CorInfoExceptionClass** ppException, CORINFO_MODULE_HANDLE handle); - CORINFO_MODULE_HANDLE (* embedModuleHandle)(void * thisHandle, CorInfoExceptionClass** ppException, CORINFO_MODULE_HANDLE handle, void** ppIndirection); CORINFO_CLASS_HANDLE (* embedClassHandle)(void * thisHandle, CorInfoExceptionClass** ppException, CORINFO_CLASS_HANDLE handle, void** ppIndirection); CORINFO_METHOD_HANDLE (* embedMethodHandle)(void * thisHandle, CorInfoExceptionClass** ppException, CORINFO_METHOD_HANDLE handle, void** ppIndirection); - CORINFO_FIELD_HANDLE (* embedFieldHandle)(void * thisHandle, CorInfoExceptionClass** ppException, CORINFO_FIELD_HANDLE handle, void** ppIndirection); void (* embedGenericHandle)(void * thisHandle, CorInfoExceptionClass** ppException, CORINFO_RESOLVED_TOKEN* pResolvedToken, bool fEmbedParent, CORINFO_METHOD_HANDLE callerHandle, CORINFO_GENERICHANDLE_RESULT* pResult); void (* getLocationOfThisType)(void * thisHandle, CorInfoExceptionClass** ppException, CORINFO_METHOD_HANDLE context, CORINFO_LOOKUP_KIND* pLookupKind); void (* getAddressOfPInvokeTarget)(void * thisHandle, CorInfoExceptionClass** ppException, CORINFO_METHOD_HANDLE method, CORINFO_CONST_LOOKUP* pLookup); @@ -1498,16 +1496,6 @@ class JitInterfaceWrapper : public ICorJitInfo return temp; } - virtual CORINFO_MODULE_HANDLE embedModuleHandle( - CORINFO_MODULE_HANDLE handle, - void** ppIndirection) -{ - CorInfoExceptionClass* pException = nullptr; - CORINFO_MODULE_HANDLE temp = _callbacks->embedModuleHandle(_thisHandle, &pException, handle, ppIndirection); - if (pException != nullptr) throw pException; - return temp; -} - virtual CORINFO_CLASS_HANDLE embedClassHandle( CORINFO_CLASS_HANDLE handle, void** ppIndirection) @@ -1528,16 +1516,6 @@ class JitInterfaceWrapper : public ICorJitInfo return temp; } - virtual CORINFO_FIELD_HANDLE embedFieldHandle( - CORINFO_FIELD_HANDLE handle, - void** ppIndirection) -{ - CorInfoExceptionClass* pException = nullptr; - CORINFO_FIELD_HANDLE temp = _callbacks->embedFieldHandle(_thisHandle, &pException, handle, ppIndirection); - if (pException != nullptr) throw pException; - return temp; -} - virtual void embedGenericHandle( CORINFO_RESOLVED_TOKEN* pResolvedToken, bool fEmbedParent, diff --git a/src/coreclr/tools/superpmi/superpmi-shared/lwmlist.h b/src/coreclr/tools/superpmi/superpmi-shared/lwmlist.h index f81a8680ab5d74..9809f20eed116a 100644 --- a/src/coreclr/tools/superpmi/superpmi-shared/lwmlist.h +++ b/src/coreclr/tools/superpmi/superpmi-shared/lwmlist.h @@ -32,10 +32,8 @@ LWM(CompileMethod, DWORD, Agnostic_CompileMethod) LWM(ConstructStringLiteral, DLD, DLD) LWM(ConvertPInvokeCalliToCall, DLD, DWORDLONG) LWM(EmbedClassHandle, DWORDLONG, DLDL) -LWM(EmbedFieldHandle, DWORDLONG, DLDL) LWM(EmbedGenericHandle, Agnostic_EmbedGenericHandle, Agnostic_CORINFO_GENERICHANDLE_RESULT) LWM(EmbedMethodHandle, DWORDLONG, DLDL) -LWM(EmbedModuleHandle, DWORDLONG, DLDL) LWM(GetThreadLocalFieldInfo, DLD, DWORD) LWM(GetThreadLocalStaticBlocksInfo, DWORD, Agnostic_GetThreadLocalStaticBlocksInfo) LWM(GetThreadLocalStaticInfo_NativeAOT, DWORDLONG, Agnostic_GetThreadStaticInfo_NativeAOT) diff --git a/src/coreclr/tools/superpmi/superpmi-shared/methodcontext.cpp b/src/coreclr/tools/superpmi/superpmi-shared/methodcontext.cpp index e414a1d0b00c21..8b191c0a5f00e0 100644 --- a/src/coreclr/tools/superpmi/superpmi-shared/methodcontext.cpp +++ b/src/coreclr/tools/superpmi/superpmi-shared/methodcontext.cpp @@ -4157,40 +4157,6 @@ CorInfoHelpFunc MethodContext::repGetCastingHelper(CORINFO_RESOLVED_TOKEN* pReso return result; } -void MethodContext::recEmbedModuleHandle(CORINFO_MODULE_HANDLE handle, - void** ppIndirection, - CORINFO_MODULE_HANDLE result) -{ - if (EmbedModuleHandle == nullptr) - EmbedModuleHandle = new LightWeightMap(); - - DLDL value; - if (ppIndirection != nullptr) - value.A = CastPointer(*ppIndirection); - else - value.A = 0; - value.B = CastHandle(result); - - DWORDLONG key = CastHandle(handle); - EmbedModuleHandle->Add(key, value); - DEBUG_REC(dmpEmbedModuleHandle(key, value)); -} -void MethodContext::dmpEmbedModuleHandle(DWORDLONG key, DLDL value) -{ - printf("EmbedModuleHandle key mod-%016" PRIX64 ", value pp-%016" PRIX64 " res-%016" PRIX64 "", key, value.A, value.B); -} -CORINFO_MODULE_HANDLE MethodContext::repEmbedModuleHandle(CORINFO_MODULE_HANDLE handle, void** ppIndirection) -{ - DWORDLONG key = CastHandle(handle); - DLDL value = LookupByKeyOrMiss(EmbedModuleHandle, key, ": key %016" PRIX64 "", key); - - DEBUG_REP(dmpEmbedModuleHandle(key, value)); - - if (ppIndirection != nullptr) - *ppIndirection = (void*)value.A; - return (CORINFO_MODULE_HANDLE)value.B; -} - void MethodContext::recEmbedClassHandle(CORINFO_CLASS_HANDLE handle, void** ppIndirection, CORINFO_CLASS_HANDLE result) { if (EmbedClassHandle == nullptr) @@ -6247,38 +6213,6 @@ void MethodContext::repGetProfilingHandle(bool* pbHookFunction, void** pProfiler *pbIndirectedHandles = value.bIndirectedHandles != 0; } -void MethodContext::recEmbedFieldHandle(CORINFO_FIELD_HANDLE handle, void** ppIndirection, CORINFO_FIELD_HANDLE result) -{ - if (EmbedFieldHandle == nullptr) - EmbedFieldHandle = new LightWeightMap(); - - DLDL value; - if (ppIndirection != nullptr) - value.A = CastPointer(*ppIndirection); - else - value.A = 0; - value.B = CastHandle(result); - - DWORDLONG key = CastHandle(handle); - EmbedFieldHandle->Add(key, value); - DEBUG_REC(dmpEmbedFieldHandle(key, value)); -} -void MethodContext::dmpEmbedFieldHandle(DWORDLONG key, DLDL value) -{ - printf("EmbedFieldHandle NYI"); -} -CORINFO_FIELD_HANDLE MethodContext::repEmbedFieldHandle(CORINFO_FIELD_HANDLE handle, void** ppIndirection) -{ - DWORDLONG key = CastHandle(handle); - DLDL value = LookupByKeyOrMiss(EmbedFieldHandle, key, ": key %016" PRIX64 "", key); - - DEBUG_REP(dmpEmbedFieldHandle(key, value)); - - if (ppIndirection != nullptr) - *ppIndirection = (void*)value.A; - return (CORINFO_FIELD_HANDLE)value.B; -} - void MethodContext::recCompareTypesForCast(CORINFO_CLASS_HANDLE fromClass, CORINFO_CLASS_HANDLE toClass, TypeCompareState result) diff --git a/src/coreclr/tools/superpmi/superpmi-shared/methodcontext.h b/src/coreclr/tools/superpmi/superpmi-shared/methodcontext.h index 1a25a3a24c5a96..f3e10e48f45281 100644 --- a/src/coreclr/tools/superpmi/superpmi-shared/methodcontext.h +++ b/src/coreclr/tools/superpmi/superpmi-shared/methodcontext.h @@ -544,10 +544,6 @@ class MethodContext void dmpGetCastingHelper(const Agnostic_GetCastingHelper& key, DWORD value); CorInfoHelpFunc repGetCastingHelper(CORINFO_RESOLVED_TOKEN* pResolvedToken, bool fThrowing); - void recEmbedModuleHandle(CORINFO_MODULE_HANDLE handle, void** ppIndirection, CORINFO_MODULE_HANDLE result); - void dmpEmbedModuleHandle(DWORDLONG key, DLDL value); - CORINFO_MODULE_HANDLE repEmbedModuleHandle(CORINFO_MODULE_HANDLE handle, void** ppIndirection); - void recEmbedClassHandle(CORINFO_CLASS_HANDLE handle, void** ppIndirection, CORINFO_CLASS_HANDLE result); void dmpEmbedClassHandle(DWORDLONG key, DLDL value); CORINFO_CLASS_HANDLE repEmbedClassHandle(CORINFO_CLASS_HANDLE handle, void** ppIndirection); @@ -773,10 +769,6 @@ class MethodContext void dmpGetProfilingHandle(DWORD key, const Agnostic_GetProfilingHandle& value); void repGetProfilingHandle(bool* pbHookFunction, void** pProfilerHandle, bool* pbIndirectedHandles); - void recEmbedFieldHandle(CORINFO_FIELD_HANDLE handle, void** ppIndirection, CORINFO_FIELD_HANDLE result); - void dmpEmbedFieldHandle(DWORDLONG key, DLDL value); - CORINFO_FIELD_HANDLE repEmbedFieldHandle(CORINFO_FIELD_HANDLE handle, void** ppIndirection); - void recCompareTypesForCast(CORINFO_CLASS_HANDLE fromClass, CORINFO_CLASS_HANDLE toClass, TypeCompareState result); void dmpCompareTypesForCast(DLDL key, DWORD value); TypeCompareState repCompareTypesForCast(CORINFO_CLASS_HANDLE fromClass, CORINFO_CLASS_HANDLE toClass); @@ -1007,10 +999,10 @@ enum mcPackets //Retired3 = 14, Packet_ConstructStringLiteral = 15, Packet_EmbedClassHandle = 16, - Packet_EmbedFieldHandle = 17, + //Packet_EmbedFieldHandle = 17, Packet_EmbedGenericHandle = 18, Packet_EmbedMethodHandle = 19, - Packet_EmbedModuleHandle = 20, + //Packet_EmbedModuleHandle = 20, Packet_EmptyStringLiteral = 21, Packet_ErrorList = 22, Packet_FindCallSiteSig = 23, diff --git a/src/coreclr/tools/superpmi/superpmi-shim-collector/icorjitinfo.cpp b/src/coreclr/tools/superpmi/superpmi-shim-collector/icorjitinfo.cpp index 835d6a22d448de..ffa8233c028b3f 100644 --- a/src/coreclr/tools/superpmi/superpmi-shim-collector/icorjitinfo.cpp +++ b/src/coreclr/tools/superpmi/superpmi-shim-collector/icorjitinfo.cpp @@ -1518,14 +1518,6 @@ CorInfoHelpFunc interceptor_ICJI::getLazyStringLiteralHelper(CORINFO_MODULE_HAND return temp; } -CORINFO_MODULE_HANDLE interceptor_ICJI::embedModuleHandle(CORINFO_MODULE_HANDLE handle, void** ppIndirection) -{ - mc->cr->AddCall("embedModuleHandle"); - CORINFO_MODULE_HANDLE temp = original_ICorJitInfo->embedModuleHandle(handle, ppIndirection); - mc->recEmbedModuleHandle(handle, ppIndirection, temp); - return temp; -} - CORINFO_CLASS_HANDLE interceptor_ICJI::embedClassHandle(CORINFO_CLASS_HANDLE handle, void** ppIndirection) { mc->cr->AddCall("embedClassHandle"); @@ -1542,14 +1534,6 @@ CORINFO_METHOD_HANDLE interceptor_ICJI::embedMethodHandle(CORINFO_METHOD_HANDLE return temp; } -CORINFO_FIELD_HANDLE interceptor_ICJI::embedFieldHandle(CORINFO_FIELD_HANDLE handle, void** ppIndirection) -{ - mc->cr->AddCall("embedFieldHandle"); - CORINFO_FIELD_HANDLE temp = original_ICorJitInfo->embedFieldHandle(handle, ppIndirection); - mc->recEmbedFieldHandle(handle, ppIndirection, temp); - return temp; -} - // Given a module scope (module), a method handle (context) and // a metadata token (metaTOK), fetch the handle // (type, field or method) associated with the token. diff --git a/src/coreclr/tools/superpmi/superpmi-shim-counter/icorjitinfo_generated.cpp b/src/coreclr/tools/superpmi/superpmi-shim-counter/icorjitinfo_generated.cpp index 60d344324e98cd..db33c699433a03 100644 --- a/src/coreclr/tools/superpmi/superpmi-shim-counter/icorjitinfo_generated.cpp +++ b/src/coreclr/tools/superpmi/superpmi-shim-counter/icorjitinfo_generated.cpp @@ -1083,14 +1083,6 @@ CorInfoHelpFunc interceptor_ICJI::getLazyStringLiteralHelper( return original_ICorJitInfo->getLazyStringLiteralHelper(handle); } -CORINFO_MODULE_HANDLE interceptor_ICJI::embedModuleHandle( - CORINFO_MODULE_HANDLE handle, - void** ppIndirection) -{ - mcs->AddCall("embedModuleHandle"); - return original_ICorJitInfo->embedModuleHandle(handle, ppIndirection); -} - CORINFO_CLASS_HANDLE interceptor_ICJI::embedClassHandle( CORINFO_CLASS_HANDLE handle, void** ppIndirection) @@ -1107,14 +1099,6 @@ CORINFO_METHOD_HANDLE interceptor_ICJI::embedMethodHandle( return original_ICorJitInfo->embedMethodHandle(handle, ppIndirection); } -CORINFO_FIELD_HANDLE interceptor_ICJI::embedFieldHandle( - CORINFO_FIELD_HANDLE handle, - void** ppIndirection) -{ - mcs->AddCall("embedFieldHandle"); - return original_ICorJitInfo->embedFieldHandle(handle, ppIndirection); -} - void interceptor_ICJI::embedGenericHandle( CORINFO_RESOLVED_TOKEN* pResolvedToken, bool fEmbedParent, diff --git a/src/coreclr/tools/superpmi/superpmi-shim-simple/icorjitinfo_generated.cpp b/src/coreclr/tools/superpmi/superpmi-shim-simple/icorjitinfo_generated.cpp index c04554b5844f63..7b81bf6f61b362 100644 --- a/src/coreclr/tools/superpmi/superpmi-shim-simple/icorjitinfo_generated.cpp +++ b/src/coreclr/tools/superpmi/superpmi-shim-simple/icorjitinfo_generated.cpp @@ -949,13 +949,6 @@ CorInfoHelpFunc interceptor_ICJI::getLazyStringLiteralHelper( return original_ICorJitInfo->getLazyStringLiteralHelper(handle); } -CORINFO_MODULE_HANDLE interceptor_ICJI::embedModuleHandle( - CORINFO_MODULE_HANDLE handle, - void** ppIndirection) -{ - return original_ICorJitInfo->embedModuleHandle(handle, ppIndirection); -} - CORINFO_CLASS_HANDLE interceptor_ICJI::embedClassHandle( CORINFO_CLASS_HANDLE handle, void** ppIndirection) @@ -970,13 +963,6 @@ CORINFO_METHOD_HANDLE interceptor_ICJI::embedMethodHandle( return original_ICorJitInfo->embedMethodHandle(handle, ppIndirection); } -CORINFO_FIELD_HANDLE interceptor_ICJI::embedFieldHandle( - CORINFO_FIELD_HANDLE handle, - void** ppIndirection) -{ - return original_ICorJitInfo->embedFieldHandle(handle, ppIndirection); -} - void interceptor_ICJI::embedGenericHandle( CORINFO_RESOLVED_TOKEN* pResolvedToken, bool fEmbedParent, diff --git a/src/coreclr/tools/superpmi/superpmi/icorjitinfo.cpp b/src/coreclr/tools/superpmi/superpmi/icorjitinfo.cpp index 98c22710cbbb9b..eda6cf3e66a1af 100644 --- a/src/coreclr/tools/superpmi/superpmi/icorjitinfo.cpp +++ b/src/coreclr/tools/superpmi/superpmi/icorjitinfo.cpp @@ -1318,12 +1318,6 @@ CorInfoHelpFunc MyICJI::getLazyStringLiteralHelper(CORINFO_MODULE_HANDLE handle) return jitInstance->mc->repGetLazyStringLiteralHelper(handle); } -CORINFO_MODULE_HANDLE MyICJI::embedModuleHandle(CORINFO_MODULE_HANDLE handle, void** ppIndirection) -{ - jitInstance->mc->cr->AddCall("embedModuleHandle"); - return jitInstance->mc->repEmbedModuleHandle(handle, ppIndirection); -} - CORINFO_CLASS_HANDLE MyICJI::embedClassHandle(CORINFO_CLASS_HANDLE handle, void** ppIndirection) { jitInstance->mc->cr->AddCall("embedClassHandle"); @@ -1336,12 +1330,6 @@ CORINFO_METHOD_HANDLE MyICJI::embedMethodHandle(CORINFO_METHOD_HANDLE handle, vo return jitInstance->mc->repEmbedMethodHandle(handle, ppIndirection); } -CORINFO_FIELD_HANDLE MyICJI::embedFieldHandle(CORINFO_FIELD_HANDLE handle, void** ppIndirection) -{ - jitInstance->mc->cr->AddCall("embedFieldHandle"); - return jitInstance->mc->repEmbedFieldHandle(handle, ppIndirection); -} - // Given a module scope (module), a method handle (context) and // a metadata token (metaTOK), fetch the handle // (type, field or method) associated with the token. diff --git a/src/coreclr/vm/jitinterface.cpp b/src/coreclr/vm/jitinterface.cpp index 8a76e18c157ff7..19b510ff134f69 100644 --- a/src/coreclr/vm/jitinterface.cpp +++ b/src/coreclr/vm/jitinterface.cpp @@ -10446,27 +10446,6 @@ void CEEInfo::HandleException(struct _EXCEPTION_POINTERS *pExceptionPointers) EE_TO_JIT_TRANSITION_LEAF(); } -CORINFO_MODULE_HANDLE CEEInfo::embedModuleHandle(CORINFO_MODULE_HANDLE handle, - void **ppIndirection) -{ - CONTRACTL { - NOTHROW; - GC_NOTRIGGER; - MODE_PREEMPTIVE; - PRECONDITION(!IsDynamicScope(handle)); - } - CONTRACTL_END; - - if (ppIndirection != NULL) - *ppIndirection = NULL; - - JIT_TO_EE_TRANSITION_LEAF(); - - EE_TO_JIT_TRANSITION_LEAF(); - - return handle; -} - CORINFO_CLASS_HANDLE CEEInfo::embedClassHandle(CORINFO_CLASS_HANDLE handle, void **ppIndirection) { @@ -10487,26 +10466,6 @@ CORINFO_CLASS_HANDLE CEEInfo::embedClassHandle(CORINFO_CLASS_HANDLE handle, return handle; } -CORINFO_FIELD_HANDLE CEEInfo::embedFieldHandle(CORINFO_FIELD_HANDLE handle, - void **ppIndirection) -{ - CONTRACTL { - NOTHROW; - GC_NOTRIGGER; - MODE_PREEMPTIVE; - } - CONTRACTL_END; - - if (ppIndirection != NULL) - *ppIndirection = NULL; - - JIT_TO_EE_TRANSITION_LEAF(); - - EE_TO_JIT_TRANSITION_LEAF(); - - return handle; -} - CORINFO_METHOD_HANDLE CEEInfo::embedMethodHandle(CORINFO_METHOD_HANDLE handle, void **ppIndirection) { From 991347b706df000d089119af1848cf58b713a180 Mon Sep 17 00:00:00 2001 From: EgorBo Date: Thu, 15 May 2025 03:38:13 +0200 Subject: [PATCH 2/6] clean up --- src/coreclr/inc/corinfo.h | 2 +- src/coreclr/inc/jiteeversionguid.h | 10 +++++----- src/coreclr/jit/compiler.h | 1 + src/coreclr/jit/compiler.hpp | 7 +++++++ src/coreclr/jit/flowgraph.cpp | 4 ++-- src/coreclr/jit/gentree.cpp | 12 ++---------- src/coreclr/jit/importer.cpp | 3 --- src/coreclr/jit/importercalls.cpp | 3 +-- src/coreclr/jit/morph.cpp | 3 +-- .../tools/Common/JitInterface/CorInfoTypes.cs | 2 +- .../JitInterface/ThunkGenerator/ThunkInput.txt | 1 - .../tools/superpmi/superpmi-shared/methodcontext.cpp | 3 --- 12 files changed, 21 insertions(+), 30 deletions(-) diff --git a/src/coreclr/inc/corinfo.h b/src/coreclr/inc/corinfo.h index 8b57d280aeee92..b1bb979891a145 100644 --- a/src/coreclr/inc/corinfo.h +++ b/src/coreclr/inc/corinfo.h @@ -1204,7 +1204,7 @@ enum CorInfoAccessAllowedHelperArgType CORINFO_HELPER_ARG_TYPE_Field = 1, CORINFO_HELPER_ARG_TYPE_Method = 2, CORINFO_HELPER_ARG_TYPE_Class = 3, - CORINFO_HELPER_ARG_TYPE_Module = 4, + // CORINFO_HELPER_ARG_TYPE_Module = 4, CORINFO_HELPER_ARG_TYPE_Const = 5, }; struct CORINFO_HELPER_ARG diff --git a/src/coreclr/inc/jiteeversionguid.h b/src/coreclr/inc/jiteeversionguid.h index 0df9bf33600f54..75bd8ed320f1d9 100644 --- a/src/coreclr/inc/jiteeversionguid.h +++ b/src/coreclr/inc/jiteeversionguid.h @@ -37,11 +37,11 @@ #include -constexpr GUID JITEEVersionIdentifier = { /* 8a90b512-09d7-4709-9fd6-e288a9ab3131 */ - 0x8a90b512, - 0x09d7, - 0x4709, - {0x9f, 0xd6, 0xe2, 0x88, 0xa9, 0xab, 0x31, 0x31} +constexpr GUID JITEEVersionIdentifier = { /* bcfedb4f-ed47-4df3-8156-7ad8fc8521f1 */ + 0xbcfedb4f, + 0xed47, + 0x4df3, + {0x81, 0x56, 0x7a, 0xd8, 0xfc, 0x85, 0x21, 0xf1} }; #endif // JIT_EE_VERSIONING_GUID_H diff --git a/src/coreclr/jit/compiler.h b/src/coreclr/jit/compiler.h index de0f6afbdc8fc5..e68a9fc5282f92 100644 --- a/src/coreclr/jit/compiler.h +++ b/src/coreclr/jit/compiler.h @@ -3003,6 +3003,7 @@ class Compiler GenTree* gtNewIconEmbHndNode(void* value, void* pValue, GenTreeFlags flags, void* compileTimeHandle); GenTree* gtNewIconEmbScpHndNode(CORINFO_MODULE_HANDLE scpHnd); + GenTree* gtNewIconEmbObjHndNode(CORINFO_OBJECT_HANDLE objHnd); GenTree* gtNewIconEmbClsHndNode(CORINFO_CLASS_HANDLE clsHnd); GenTree* gtNewIconEmbMethHndNode(CORINFO_METHOD_HANDLE methHnd); GenTree* gtNewIconEmbFldHndNode(CORINFO_FIELD_HANDLE fldHnd); diff --git a/src/coreclr/jit/compiler.hpp b/src/coreclr/jit/compiler.hpp index c90d528f41c6f7..4ea695736702f4 100644 --- a/src/coreclr/jit/compiler.hpp +++ b/src/coreclr/jit/compiler.hpp @@ -1507,6 +1507,13 @@ inline GenTree* Compiler::gtNewIconEmbClsHndNode(CORINFO_CLASS_HANDLE clsHnd) //----------------------------------------------------------------------------- +inline GenTree* Compiler::gtNewIconEmbObjHndNode(CORINFO_OBJECT_HANDLE objHnd) +{ + return gtNewIconEmbHndNode((void*)objHnd, nullptr, GTF_ICON_OBJ_HDL, nullptr); +} + +//----------------------------------------------------------------------------- + inline GenTree* Compiler::gtNewIconEmbMethHndNode(CORINFO_METHOD_HANDLE methHnd) { void *embedMethHnd, *pEmbedMethHnd; diff --git a/src/coreclr/jit/flowgraph.cpp b/src/coreclr/jit/flowgraph.cpp index 6bf766df358e62..6cf3d790ae4642 100644 --- a/src/coreclr/jit/flowgraph.cpp +++ b/src/coreclr/jit/flowgraph.cpp @@ -1284,9 +1284,9 @@ GenTree* Compiler::fgGetCritSectOfStaticMethod() if (!kind.needsRuntimeLookup) { CORINFO_OBJECT_HANDLE ptr = info.compCompHnd->getRuntimeTypePointer(info.compClassHnd); - if (ptr != NULL) + if (ptr != NO_OBJECT_HANDLE) { - tree = gtNewIconEmbHndNode((void*)ptr, nullptr, GTF_ICON_OBJ_HDL, nullptr); + tree = gtNewIconEmbObjHndNode(ptr); } else { diff --git a/src/coreclr/jit/gentree.cpp b/src/coreclr/jit/gentree.cpp index 41e097df6a6713..8e004509a3325e 100644 --- a/src/coreclr/jit/gentree.cpp +++ b/src/coreclr/jit/gentree.cpp @@ -7772,8 +7772,7 @@ GenTree* Compiler::gtNewStringLiteralNode(InfoAccessType iat, void* pValue) switch (iat) { case IAT_VALUE: - tree = gtNewIconEmbHndNode(pValue, nullptr, GTF_ICON_OBJ_HDL, nullptr); - INDEBUG(tree->AsIntCon()->gtTargetHandle = (size_t)pValue); + tree = gtNewIconEmbObjHndNode((CORINFO_OBJECT_HANDLE)pValue); break; case IAT_PVALUE: // The value needs to be accessed via an indirection @@ -8137,14 +8136,7 @@ GenTree* Compiler::gtNewGenericCon(var_types type, uint8_t* cnsVal) case TYP_REF: { READ_VALUE(ssize_t); - if (val == 0) - { - return gtNewNull(); - } - else - { - return gtNewIconEmbHndNode((void*)val, nullptr, GTF_ICON_OBJ_HDL, nullptr); - } + return val == 0 ? gtNewNull() : gtNewIconEmbObjHndNode((CORINFO_OBJECT_HANDLE)val); } #ifdef FEATURE_SIMD case TYP_SIMD8: diff --git a/src/coreclr/jit/importer.cpp b/src/coreclr/jit/importer.cpp index 075e0e8d540f93..2bdc89ed518996 100644 --- a/src/coreclr/jit/importer.cpp +++ b/src/coreclr/jit/importer.cpp @@ -4350,9 +4350,6 @@ void Compiler::impInsertHelperCall(CORINFO_HELPER_DESC* helperInfo) info.compCompHnd->classMustBeLoadedBeforeCodeIsRun(helperArg.classHandle); currentArg = gtNewIconEmbClsHndNode(helperArg.classHandle); break; - case CORINFO_HELPER_ARG_TYPE_Module: - currentArg = gtNewIconEmbScpHndNode(helperArg.moduleHandle); - break; case CORINFO_HELPER_ARG_TYPE_Const: currentArg = gtNewIconNode(helperArg.constant); break; diff --git a/src/coreclr/jit/importercalls.cpp b/src/coreclr/jit/importercalls.cpp index d39bdd0350a283..e328d43b50b0de 100644 --- a/src/coreclr/jit/importercalls.cpp +++ b/src/coreclr/jit/importercalls.cpp @@ -8519,8 +8519,7 @@ void Compiler::impDevirtualizeCall(GenTreeCall* call, // Note different embedding would be needed for NAOT/R2R, // but we have ruled those out above. // - GenTree* const instParam = - gtNewIconEmbHndNode(instantiatingStub, nullptr, GTF_ICON_METHOD_HDL, instantiatingStub); + GenTree* const instParam = gtNewIconEmbMethHndNode(instantiatingStub); call->gtArgs.InsertInstParam(this, instParam); } diff --git a/src/coreclr/jit/morph.cpp b/src/coreclr/jit/morph.cpp index 74a4e34d34e5f8..2f15f2147423c5 100644 --- a/src/coreclr/jit/morph.cpp +++ b/src/coreclr/jit/morph.cpp @@ -6484,8 +6484,7 @@ GenTree* Compiler::fgMorphCall(GenTreeCall* call) CORINFO_OBJECT_HANDLE ptr = info.compCompHnd->getRuntimeTypePointer(hClass); if (ptr != NULL) { - GenTree* retNode = gtNewIconEmbHndNode((void*)ptr, nullptr, GTF_ICON_OBJ_HDL, nullptr); - return fgMorphTree(retNode); + return fgMorphTree(gtNewIconEmbObjHndNode(ptr)); } } } diff --git a/src/coreclr/tools/Common/JitInterface/CorInfoTypes.cs b/src/coreclr/tools/Common/JitInterface/CorInfoTypes.cs index 9e75ee782fab1b..f07d8a856a370d 100644 --- a/src/coreclr/tools/Common/JitInterface/CorInfoTypes.cs +++ b/src/coreclr/tools/Common/JitInterface/CorInfoTypes.cs @@ -793,7 +793,7 @@ public enum CorInfoAccessAllowedHelperArgType CORINFO_HELPER_ARG_TYPE_Field = 1, CORINFO_HELPER_ARG_TYPE_Method = 2, CORINFO_HELPER_ARG_TYPE_Class = 3, - CORINFO_HELPER_ARG_TYPE_Module = 4, + // CORINFO_HELPER_ARG_TYPE_Module = 4, CORINFO_HELPER_ARG_TYPE_Const = 5, } diff --git a/src/coreclr/tools/Common/JitInterface/ThunkGenerator/ThunkInput.txt b/src/coreclr/tools/Common/JitInterface/ThunkGenerator/ThunkInput.txt index 3978aa300982c7..8718c1296ca2a7 100644 --- a/src/coreclr/tools/Common/JitInterface/ThunkGenerator/ThunkInput.txt +++ b/src/coreclr/tools/Common/JitInterface/ThunkGenerator/ThunkInput.txt @@ -301,7 +301,6 @@ FUNCTIONS CorInfoHelpFunc getLazyStringLiteralHelper(CORINFO_MODULE_HANDLE handle); CORINFO_CLASS_HANDLE embedClassHandle(CORINFO_CLASS_HANDLE handle, void **ppIndirection); CORINFO_METHOD_HANDLE embedMethodHandle(CORINFO_METHOD_HANDLE handle, void **ppIndirection); - void* getCompileTimeHandleFromEmbedded(void* embeddedHandle); void embedGenericHandle(CORINFO_RESOLVED_TOKEN * pResolvedToken, bool fEmbedParent, CORINFO_METHOD_HANDLE callerHandle, CORINFO_GENERICHANDLE_RESULT * pResult); void getLocationOfThisType(CORINFO_METHOD_HANDLE context, CORINFO_LOOKUP_KIND* pLookupKind); void getAddressOfPInvokeTarget(CORINFO_METHOD_HANDLE method, CORINFO_CONST_LOOKUP *pLookup); diff --git a/src/coreclr/tools/superpmi/superpmi-shared/methodcontext.cpp b/src/coreclr/tools/superpmi/superpmi-shared/methodcontext.cpp index 8b191c0a5f00e0..4d457b00c72ad2 100644 --- a/src/coreclr/tools/superpmi/superpmi-shared/methodcontext.cpp +++ b/src/coreclr/tools/superpmi/superpmi-shared/methodcontext.cpp @@ -3600,9 +3600,6 @@ void MethodContext::dmpGetFieldInfo(const Agnostic_GetFieldInfo& key, const Agno case CORINFO_HELPER_ARG_TYPE_Class: printf("{%u: cls-%016" PRIX64 "}", i, value.accessCalloutHelper.args[i].constant); break; - case CORINFO_HELPER_ARG_TYPE_Module: - printf("{%u: mod-%016" PRIX64 "}", i, value.accessCalloutHelper.args[i].constant); - break; case CORINFO_HELPER_ARG_TYPE_Const: printf("{%u: const-%016" PRIX64 "}", i, value.accessCalloutHelper.args[i].constant); break; From a8a58bcc23ec4db603dbf195b9b17e66556dd050 Mon Sep 17 00:00:00 2001 From: EgorBo Date: Thu, 15 May 2025 03:43:28 +0200 Subject: [PATCH 3/6] Fix the issue --- src/coreclr/jit/valuenum.cpp | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/src/coreclr/jit/valuenum.cpp b/src/coreclr/jit/valuenum.cpp index 3a44a5ea7586e6..ab8213ba076d12 100644 --- a/src/coreclr/jit/valuenum.cpp +++ b/src/coreclr/jit/valuenum.cpp @@ -2708,9 +2708,9 @@ ValueNum ValueNumStore::VNForCast(VNFunc func, ValueNum castToVN, ValueNum objVN bool isExact; bool isNonNull; CORINFO_CLASS_HANDLE castFrom = GetObjectType(objVN, &isExact, &isNonNull); - CORINFO_CLASS_HANDLE castTo; + CORINFO_CLASS_HANDLE castTo = NO_CLASS_HANDLE; if ((castFrom != NO_CLASS_HANDLE) && - EmbeddedHandleMapLookup(ConstantValue(castToVN), (ssize_t*)&castTo)) + EmbeddedHandleMapLookup(ConstantValue(castToVN), (ssize_t*)&castTo) && (castTo != NO_CLASS_HANDLE)) { TypeCompareState castResult = m_pComp->info.compCompHnd->compareTypesForCast(castFrom, castTo); if (castResult == TypeCompareState::Must) @@ -13738,9 +13738,12 @@ bool Compiler::fgValueNumberSpecialIntrinsic(GenTreeCall* call) break; } - ValueNum clsVN = typeHandleFuncApp.m_args[0]; - ssize_t clsHandle; - if (!vnStore->EmbeddedHandleMapLookup(vnStore->ConstantValue(clsVN), &clsHandle)) + ValueNum clsVN = typeHandleFuncApp.m_args[0]; + ssize_t clsHandle = 0; + + // NOTE: EmbeddedHandleMapLookup may return 0 for non-0 embedded handle + if (!vnStore->EmbeddedHandleMapLookup(vnStore->ConstantValue(clsVN), &clsHandle) && + (clsHandle != 0)) { break; } @@ -15152,9 +15155,12 @@ CORINFO_CLASS_HANDLE ValueNumStore::GetObjectType(ValueNum vn, bool* pIsExact, b const VNFunc func = funcApp.m_func; if ((func == VNF_CastClass) || (func == VNF_IsInstanceOf) || (func == VNF_JitNew)) { - ssize_t clsHandle; - ValueNum clsVN = funcApp.m_args[0]; - if (IsVNTypeHandle(clsVN) && EmbeddedHandleMapLookup(ConstantValue(clsVN), &clsHandle)) + ssize_t clsHandle = 0; + ValueNum clsVN = funcApp.m_args[0]; + + // NOTE: EmbeddedHandleMapLookup may return 0 for non-0 embedded handle + if (IsVNTypeHandle(clsVN) && EmbeddedHandleMapLookup(ConstantValue(clsVN), &clsHandle) && + (clsHandle != 0)) { // JitNew returns an exact and non-null obj, castclass and isinst do not have this guarantee. *pIsNonNull = func == VNF_JitNew; From ab5c1c0dbb9450e2e737e98a1def77be66ea1f2e Mon Sep 17 00:00:00 2001 From: Egor Bogatov Date: Thu, 15 May 2025 03:49:08 +0200 Subject: [PATCH 4/6] Update jiteeversionguid.h --- src/coreclr/inc/jiteeversionguid.h | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/coreclr/inc/jiteeversionguid.h b/src/coreclr/inc/jiteeversionguid.h index 75bd8ed320f1d9..cd481e46fed26d 100644 --- a/src/coreclr/inc/jiteeversionguid.h +++ b/src/coreclr/inc/jiteeversionguid.h @@ -37,11 +37,11 @@ #include -constexpr GUID JITEEVersionIdentifier = { /* bcfedb4f-ed47-4df3-8156-7ad8fc8521f1 */ - 0xbcfedb4f, - 0xed47, - 0x4df3, - {0x81, 0x56, 0x7a, 0xd8, 0xfc, 0x85, 0x21, 0xf1} +constexpr GUID JITEEVersionIdentifier = { /* 26d0dde8-bc9d-4543-9b9a-57ad8b1acdc0 */ + 0x26d0dde8, + 0xbc9d, + 0x4543, + {0x9b, 0x9a, 0x57, 0xad, 0x8b, 0x1a, 0xcd, 0xc0} }; #endif // JIT_EE_VERSIONING_GUID_H From 8ad1bec8bca002d0084658d1338ee5ec1570e7b9 Mon Sep 17 00:00:00 2001 From: Egor Bogatov Date: Thu, 15 May 2025 03:49:48 +0200 Subject: [PATCH 5/6] Update jiteeversionguid.h --- src/coreclr/inc/jiteeversionguid.h | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/coreclr/inc/jiteeversionguid.h b/src/coreclr/inc/jiteeversionguid.h index cd481e46fed26d..75bd8ed320f1d9 100644 --- a/src/coreclr/inc/jiteeversionguid.h +++ b/src/coreclr/inc/jiteeversionguid.h @@ -37,11 +37,11 @@ #include -constexpr GUID JITEEVersionIdentifier = { /* 26d0dde8-bc9d-4543-9b9a-57ad8b1acdc0 */ - 0x26d0dde8, - 0xbc9d, - 0x4543, - {0x9b, 0x9a, 0x57, 0xad, 0x8b, 0x1a, 0xcd, 0xc0} +constexpr GUID JITEEVersionIdentifier = { /* bcfedb4f-ed47-4df3-8156-7ad8fc8521f1 */ + 0xbcfedb4f, + 0xed47, + 0x4df3, + {0x81, 0x56, 0x7a, 0xd8, 0xfc, 0x85, 0x21, 0xf1} }; #endif // JIT_EE_VERSIONING_GUID_H From f886f7efef40a9ab35d0446b5296e5f238f7a37b Mon Sep 17 00:00:00 2001 From: EgorBo Date: Fri, 23 May 2025 04:25:27 +0200 Subject: [PATCH 6/6] Address feedback --- src/coreclr/inc/corinfo.h | 3 +-- src/coreclr/tools/Common/JitInterface/CorInfoTypes.cs | 3 +-- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/src/coreclr/inc/corinfo.h b/src/coreclr/inc/corinfo.h index b1bb979891a145..75d6f7e8f08332 100644 --- a/src/coreclr/inc/corinfo.h +++ b/src/coreclr/inc/corinfo.h @@ -1204,8 +1204,7 @@ enum CorInfoAccessAllowedHelperArgType CORINFO_HELPER_ARG_TYPE_Field = 1, CORINFO_HELPER_ARG_TYPE_Method = 2, CORINFO_HELPER_ARG_TYPE_Class = 3, - // CORINFO_HELPER_ARG_TYPE_Module = 4, - CORINFO_HELPER_ARG_TYPE_Const = 5, + CORINFO_HELPER_ARG_TYPE_Const = 4, }; struct CORINFO_HELPER_ARG { diff --git a/src/coreclr/tools/Common/JitInterface/CorInfoTypes.cs b/src/coreclr/tools/Common/JitInterface/CorInfoTypes.cs index f07d8a856a370d..debdb6ba535d8c 100644 --- a/src/coreclr/tools/Common/JitInterface/CorInfoTypes.cs +++ b/src/coreclr/tools/Common/JitInterface/CorInfoTypes.cs @@ -793,8 +793,7 @@ public enum CorInfoAccessAllowedHelperArgType CORINFO_HELPER_ARG_TYPE_Field = 1, CORINFO_HELPER_ARG_TYPE_Method = 2, CORINFO_HELPER_ARG_TYPE_Class = 3, - // CORINFO_HELPER_ARG_TYPE_Module = 4, - CORINFO_HELPER_ARG_TYPE_Const = 5, + CORINFO_HELPER_ARG_TYPE_Const = 4, } public struct CORINFO_HELPER_DESC