From e88db2fe35674e9394e6e9687d39f8c402d60bc7 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 14 Nov 2025 22:52:18 +0000 Subject: [PATCH 1/8] Initial plan From e03618bf320e08a137fe487a16dc67b47039d13e Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 14 Nov 2025 23:28:20 +0000 Subject: [PATCH 2/8] Remove 19 unused DEFINE_METHOD identifiers from corelib.h Co-authored-by: MichalStrehovsky <13110571+MichalStrehovsky@users.noreply.github.com> --- src/coreclr/vm/corelib.h | 23 ----------------------- 1 file changed, 23 deletions(-) diff --git a/src/coreclr/vm/corelib.h b/src/coreclr/vm/corelib.h index ecc8976103d7e5..15b4bde7500fc4 100644 --- a/src/coreclr/vm/corelib.h +++ b/src/coreclr/vm/corelib.h @@ -154,8 +154,6 @@ DEFINE_METHOD(CLASS, GET_PROPERTIES, GetProperties, DEFINE_METHOD(CLASS, GET_FIELDS, GetFields, IM_BindingFlags_RetArrFieldInfo) DEFINE_METHOD(CLASS, GET_METHODS, GetMethods, IM_BindingFlags_RetArrMethodInfo) DEFINE_METHOD(CLASS, INVOKE_MEMBER, InvokeMember, IM_Str_BindingFlags_Binder_Obj_ArrObj_ArrParameterModifier_CultureInfo_ArrStr_RetObj) -DEFINE_METHOD(CLASS, GET_METHOD_BASE, GetMethodBase, SM_RuntimeType_RuntimeMethodHandleInternal_RetMethodBase) -DEFINE_METHOD(CLASS, GET_FIELD_INFO, GetFieldInfo, SM_RuntimeType_IRuntimeFieldInfo_RetFieldInfo) #ifdef FOR_ILLINK DEFINE_METHOD(CLASS, CTOR, .ctor, IM_RetVoid) #endif // FOR_ILLINK @@ -196,10 +194,7 @@ END_ILLINK_FEATURE_SWITCH() DEFINE_CLASS(CRITICAL_HANDLE, Interop, CriticalHandle) DEFINE_FIELD(CRITICAL_HANDLE, HANDLE, handle) -DEFINE_METHOD(CRITICAL_HANDLE, RELEASE_HANDLE, ReleaseHandle, IM_RetBool) -DEFINE_METHOD(CRITICAL_HANDLE, GET_IS_INVALID, get_IsInvalid, IM_RetBool) DEFINE_METHOD(CRITICAL_HANDLE, DISPOSE, Dispose, IM_RetVoid) -DEFINE_METHOD(CRITICAL_HANDLE, DISPOSE_BOOL, Dispose, IM_Bool_RetVoid) DEFINE_CLASS(HANDLE_REF, Interop, HandleRef) DEFINE_FIELD(HANDLE_REF, WRAPPER, _wrapper) @@ -358,7 +353,6 @@ DEFINE_METHOD(VALUETASK, THROW_IF_COMPLETED_UNSUCCESSFULLY, ThrowIfCompletedUnsu DEFINE_METHOD(VALUETASK, AS_TASK_OR_NOTIFIER, AsTaskOrNotifier, IM_RetObj) DEFINE_CLASS(TASK_1, Tasks, Task`1) -DEFINE_METHOD(TASK_1, GET_RESULTONSUCCESS, get_ResultOnSuccess, NoSig) DEFINE_CLASS(TASK, Tasks, Task) DEFINE_METHOD(TASK, FROM_EXCEPTION, FromException, SM_Exception_RetTask) @@ -369,7 +363,6 @@ DEFINE_METHOD(TASK, GET_ISCOMPLETED, get_IsCompleted, NoSig) DEFINE_CLASS(TYPE_HANDLE, System, RuntimeTypeHandle) DEFINE_CLASS(RT_TYPE_HANDLE, System, RuntimeTypeHandle) -DEFINE_METHOD(RT_TYPE_HANDLE, PVOID_CTOR, .ctor, IM_RuntimeType_RetVoid) DEFINE_METHOD(RT_TYPE_HANDLE, GETRUNTIMETYPEFROMHANDLE,GetRuntimeTypeFromHandle, SM_IntPtr_RetRuntimeType) DEFINE_METHOD(RT_TYPE_HANDLE, GETRUNTIMETYPEFROMHANDLEMAYBENULL,GetRuntimeTypeFromHandleMaybeNull, SM_IntPtr_RetRuntimeType) DEFINE_METHOD(RT_TYPE_HANDLE, TO_INTPTR, ToIntPtr, SM_RuntimeTypeHandle_RetIntPtr) @@ -719,7 +712,6 @@ DEFINE_METHOD(RUNTIME_HELPERS, GET_UNINITIALIZED_OBJECT, GetUninitializedOb DEFINE_METHOD(RUNTIME_HELPERS, ENUM_EQUALS, EnumEquals, NoSig) DEFINE_METHOD(RUNTIME_HELPERS, ENUM_COMPARE_TO, EnumCompareTo, NoSig) DEFINE_METHOD(RUNTIME_HELPERS, ALLOC_TAILCALL_ARG_BUFFER, AllocTailCallArgBuffer, NoSig) -DEFINE_METHOD(RUNTIME_HELPERS, GET_TAILCALL_INFO, GetTailCallInfo, NoSig) DEFINE_METHOD(RUNTIME_HELPERS, DISPATCH_TAILCALLS, DispatchTailCalls, NoSig) #ifdef FEATURE_IJW DEFINE_METHOD(RUNTIME_HELPERS, COPY_CONSTRUCT, CopyConstruct, NoSig) @@ -740,7 +732,6 @@ DEFINE_METHOD(ASYNC_HELPERS, TASK_FROM_EXCEPTION_1, TaskFromException, GM_E DEFINE_METHOD(ASYNC_HELPERS, VALUETASK_FROM_EXCEPTION, ValueTaskFromException, SM_Exception_RetValueTask) DEFINE_METHOD(ASYNC_HELPERS, VALUETASK_FROM_EXCEPTION_1, ValueTaskFromException, GM_Exception_RetValueTaskOfT) -DEFINE_METHOD(ASYNC_HELPERS, UNSAFE_AWAIT_AWAITER_1, UnsafeAwaitAwaiter, GM_T_RetVoid) DEFINE_METHOD(ASYNC_HELPERS, TRANSPARENT_AWAIT, TransparentAwait, NoSig) DEFINE_METHOD(ASYNC_HELPERS, COMPLETED_TASK_RESULT, CompletedTaskResult, NoSig) DEFINE_METHOD(ASYNC_HELPERS, COMPLETED_TASK, CompletedTask, NoSig) @@ -754,12 +745,6 @@ DEFINE_METHOD(ASYNC_HELPERS, ASYNC_CALL_CONTINUATION, AsyncCallContinuati #ifdef TARGET_BROWSER DEFINE_METHOD(ASYNC_HELPERS, HANDLE_ASYNC_ENTRYPOINT, HandleAsyncEntryPoint, SM_TaskOfInt_RetInt) DEFINE_METHOD(ASYNC_HELPERS, HANDLE_ASYNC_ENTRYPOINT_VOID, HandleAsyncEntryPoint, SM_Task_RetVoid) - -DEFINE_CLASS(TIMER_QUEUE, Threading, TimerQueue) -DEFINE_METHOD(TIMER_QUEUE, TIMER_HANDLER, TimerHandler, SM_RetVoid) - -DEFINE_CLASS(THREAD_POOL, Threading, ThreadPool) -DEFINE_METHOD(THREAD_POOL, BACKGROUND_JOB_HANDLER, BackgroundJobHandler, SM_RetVoid) #endif // TARGET_BROWSER DEFINE_CLASS(SPAN_HELPERS, System, SpanHelpers) @@ -1077,7 +1062,6 @@ DEFINE_METHOD(STUBHELPERS, CLEAR_LAST_ERROR, ClearLastError, DEFINE_METHOD(STUBHELPERS, THROW_INTEROP_PARAM_EXCEPTION, ThrowInteropParamException, SM_Int_Int_RetVoid) DEFINE_METHOD(STUBHELPERS, ADD_TO_CLEANUP_LIST_SAFEHANDLE, AddToCleanupList, SM_RefCleanupWorkListElement_SafeHandle_RetIntPtr) -DEFINE_METHOD(STUBHELPERS, KEEP_ALIVE_VIA_CLEANUP_LIST, KeepAliveViaCleanupList, SM_RefCleanupWorkListElement_Obj_RetVoid) DEFINE_METHOD(STUBHELPERS, DESTROY_CLEANUP_LIST, DestroyCleanupList, SM_RefCleanupWorkListElement_RetVoid) DEFINE_METHOD(STUBHELPERS, GET_HR_EXCEPTION_OBJECT, GetHRExceptionObject, SM_Int_RetException) DEFINE_METHOD(STUBHELPERS, GET_PENDING_EXCEPTION_OBJECT, GetPendingExceptionObject, SM_RetException) @@ -1088,9 +1072,6 @@ DEFINE_METHOD(STUBHELPERS, GET_IENUMERATOR_TO_ENUM_VARIANT_MARSHALER, G DEFINE_METHOD(STUBHELPERS, CHECK_STRING_LENGTH, CheckStringLength, SM_Int_RetVoid) -DEFINE_METHOD(STUBHELPERS, FMT_CLASS_UPDATE_NATIVE_INTERNAL, FmtClassUpdateNativeInternal, SM_Obj_PtrByte_RefCleanupWorkListElement_RetVoid) -DEFINE_METHOD(STUBHELPERS, FMT_CLASS_UPDATE_CLR_INTERNAL, FmtClassUpdateCLRInternal, SM_Obj_PtrByte_RetVoid) -DEFINE_METHOD(STUBHELPERS, LAYOUT_DESTROY_NATIVE_INTERNAL, LayoutDestroyNativeInternal, SM_Obj_PtrByte_RetVoid) DEFINE_METHOD(STUBHELPERS, MARSHAL_TO_MANAGED_VA_LIST, MarshalToManagedVaList, SM_IntPtr_IntPtr_RetVoid) DEFINE_METHOD(STUBHELPERS, MARSHAL_TO_UNMANAGED_VA_LIST, MarshalToUnmanagedVaList, SM_IntPtr_UInt_IntPtr_RetVoid) DEFINE_METHOD(STUBHELPERS, CALC_VA_LIST_SIZE, CalcVaListSize, SM_IntPtr_RetUInt) @@ -1215,18 +1196,14 @@ DEFINE_CLASS(SZARRAYHELPER, System, SZArrayHelper DEFINE_METHOD(SZARRAYHELPER, GETENUMERATOR, GetEnumerator, NoSig) // ICollection`1/IReadOnlyCollection`1 DEFINE_METHOD(SZARRAYHELPER, GET_COUNT, get_Count, NoSig) -DEFINE_METHOD(SZARRAYHELPER, ISREADONLY, get_IsReadOnly, NoSig) DEFINE_METHOD(SZARRAYHELPER, ADD, Add, NoSig) DEFINE_METHOD(SZARRAYHELPER, CLEAR, Clear, NoSig) DEFINE_METHOD(SZARRAYHELPER, CONTAINS, Contains, NoSig) -DEFINE_METHOD(SZARRAYHELPER, COPYTO, CopyTo, NoSig) DEFINE_METHOD(SZARRAYHELPER, REMOVE, Remove, NoSig) // IList`1/IReadOnlyList`1 DEFINE_METHOD(SZARRAYHELPER, GET_ITEM, get_Item, NoSig) DEFINE_METHOD(SZARRAYHELPER, SET_ITEM, set_Item, NoSig) -DEFINE_METHOD(SZARRAYHELPER, INDEXOF, IndexOf, NoSig) DEFINE_METHOD(SZARRAYHELPER, INSERT, Insert, NoSig) -DEFINE_METHOD(SZARRAYHELPER, REMOVEAT, RemoveAt, NoSig) DEFINE_CLASS(SZGENERICARRAYENUMERATOR, System, SZGenericArrayEnumerator`1) From b247380e75b8c4c82886a9609a36715b5166ed01 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sat, 15 Nov 2025 13:52:39 +0000 Subject: [PATCH 3/8] Place SZARRAYHELPER methods under FOR_ILLINK guard per review feedback Co-authored-by: MichalStrehovsky <13110571+MichalStrehovsky@users.noreply.github.com> --- src/coreclr/vm/corelib.h | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/coreclr/vm/corelib.h b/src/coreclr/vm/corelib.h index 15b4bde7500fc4..fd8bbcdba330ff 100644 --- a/src/coreclr/vm/corelib.h +++ b/src/coreclr/vm/corelib.h @@ -1204,6 +1204,12 @@ DEFINE_METHOD(SZARRAYHELPER, REMOVE, Remove, DEFINE_METHOD(SZARRAYHELPER, GET_ITEM, get_Item, NoSig) DEFINE_METHOD(SZARRAYHELPER, SET_ITEM, set_Item, NoSig) DEFINE_METHOD(SZARRAYHELPER, INSERT, Insert, NoSig) +#ifdef FOR_ILLINK +DEFINE_METHOD(SZARRAYHELPER, ISREADONLY, get_IsReadOnly, NoSig) +DEFINE_METHOD(SZARRAYHELPER, COPYTO, CopyTo, NoSig) +DEFINE_METHOD(SZARRAYHELPER, INDEXOF, IndexOf, NoSig) +DEFINE_METHOD(SZARRAYHELPER, REMOVEAT, RemoveAt, NoSig) +#endif // FOR_ILLINK DEFINE_CLASS(SZGENERICARRAYENUMERATOR, System, SZGenericArrayEnumerator`1) From 982ff6e96f36847bf0ec4509711be83c0d71cfc6 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sat, 15 Nov 2025 18:46:47 +0000 Subject: [PATCH 4/8] Revert all SZARRAYHELPER changes to preserve method ordering invariant Co-authored-by: jkotas <6668460+jkotas@users.noreply.github.com> --- src/coreclr/vm/corelib.h | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/src/coreclr/vm/corelib.h b/src/coreclr/vm/corelib.h index fd8bbcdba330ff..ce4bfc95f9e71a 100644 --- a/src/coreclr/vm/corelib.h +++ b/src/coreclr/vm/corelib.h @@ -1196,20 +1196,18 @@ DEFINE_CLASS(SZARRAYHELPER, System, SZArrayHelper DEFINE_METHOD(SZARRAYHELPER, GETENUMERATOR, GetEnumerator, NoSig) // ICollection`1/IReadOnlyCollection`1 DEFINE_METHOD(SZARRAYHELPER, GET_COUNT, get_Count, NoSig) +DEFINE_METHOD(SZARRAYHELPER, ISREADONLY, get_IsReadOnly, NoSig) DEFINE_METHOD(SZARRAYHELPER, ADD, Add, NoSig) DEFINE_METHOD(SZARRAYHELPER, CLEAR, Clear, NoSig) DEFINE_METHOD(SZARRAYHELPER, CONTAINS, Contains, NoSig) +DEFINE_METHOD(SZARRAYHELPER, COPYTO, CopyTo, NoSig) DEFINE_METHOD(SZARRAYHELPER, REMOVE, Remove, NoSig) // IList`1/IReadOnlyList`1 DEFINE_METHOD(SZARRAYHELPER, GET_ITEM, get_Item, NoSig) DEFINE_METHOD(SZARRAYHELPER, SET_ITEM, set_Item, NoSig) -DEFINE_METHOD(SZARRAYHELPER, INSERT, Insert, NoSig) -#ifdef FOR_ILLINK -DEFINE_METHOD(SZARRAYHELPER, ISREADONLY, get_IsReadOnly, NoSig) -DEFINE_METHOD(SZARRAYHELPER, COPYTO, CopyTo, NoSig) DEFINE_METHOD(SZARRAYHELPER, INDEXOF, IndexOf, NoSig) +DEFINE_METHOD(SZARRAYHELPER, INSERT, Insert, NoSig) DEFINE_METHOD(SZARRAYHELPER, REMOVEAT, RemoveAt, NoSig) -#endif // FOR_ILLINK DEFINE_CLASS(SZGENERICARRAYENUMERATOR, System, SZGenericArrayEnumerator`1) From bb0657524f3a94a0a31d53732488c31ce3f13bf6 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sat, 15 Nov 2025 19:28:51 +0000 Subject: [PATCH 5/8] Delete unused LayoutDestroyNativeInternal method Co-authored-by: jkotas <6668460+jkotas@users.noreply.github.com> --- .../src/System/StubHelpers.cs | 15 --------------- 1 file changed, 15 deletions(-) diff --git a/src/coreclr/System.Private.CoreLib/src/System/StubHelpers.cs b/src/coreclr/System.Private.CoreLib/src/System/StubHelpers.cs index 2f3dd00f806914..153383126b9716 100644 --- a/src/coreclr/System.Private.CoreLib/src/System/StubHelpers.cs +++ b/src/coreclr/System.Private.CoreLib/src/System/StubHelpers.cs @@ -1564,21 +1564,6 @@ internal static unsafe void FmtClassUpdateCLRInternal(object obj, byte* pNative) } } - internal static unsafe void LayoutDestroyNativeInternal(object obj, byte* pNative) - { - MethodTable* pMT = RuntimeHelpers.GetMethodTable(obj); - - delegate* structMarshalStub; - nuint size; - bool success = Marshal.TryGetStructMarshalStub((IntPtr)pMT, &structMarshalStub, &size); - Debug.Assert(success); - - if (structMarshalStub != null) - { - structMarshalStub(ref obj.GetRawData(), pNative, MarshalOperation.Cleanup, ref Unsafe.NullRef()); - } - } - [LibraryImport(RuntimeHelpers.QCall, EntryPoint="StubHelpers_MarshalToManagedVaList")] internal static partial void MarshalToManagedVaList(IntPtr va_list, IntPtr pArgIterator); From 455d099cffe21bc353ee32cd0b80bd08781534bd Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sat, 15 Nov 2025 20:02:26 +0000 Subject: [PATCH 6/8] Delete KeepAliveViaCleanupList method and unused metasig signatures Co-authored-by: jkotas <6668460+jkotas@users.noreply.github.com> --- .../System.Private.CoreLib/src/System/StubHelpers.cs | 6 ------ src/coreclr/vm/metasig.h | 6 ------ 2 files changed, 12 deletions(-) diff --git a/src/coreclr/System.Private.CoreLib/src/System/StubHelpers.cs b/src/coreclr/System.Private.CoreLib/src/System/StubHelpers.cs index 153383126b9716..ef22fd630a9b51 100644 --- a/src/coreclr/System.Private.CoreLib/src/System/StubHelpers.cs +++ b/src/coreclr/System.Private.CoreLib/src/System/StubHelpers.cs @@ -1367,12 +1367,6 @@ internal static IntPtr AddToCleanupList(ref CleanupWorkListElement? pCleanupWork return element.AddRef(); } - internal static void KeepAliveViaCleanupList(ref CleanupWorkListElement? pCleanupWorkList, object obj) - { - KeepAliveCleanupWorkListElement element = new KeepAliveCleanupWorkListElement(obj); - CleanupWorkListElement.AddToCleanupList(ref pCleanupWorkList, element); - } - internal static void DestroyCleanupList(ref CleanupWorkListElement? pCleanupWorkList) { if (pCleanupWorkList != null) diff --git a/src/coreclr/vm/metasig.h b/src/coreclr/vm/metasig.h index 065690fd812428..0b3e375808c1f2 100644 --- a/src/coreclr/vm/metasig.h +++ b/src/coreclr/vm/metasig.h @@ -219,15 +219,11 @@ DEFINE_METASIG(SM(RetBool, _, F)) DEFINE_METASIG(SM(IntPtr_RetStr, I, s)) DEFINE_METASIG(SM(IntPtr_RetBool, I, F)) DEFINE_METASIG(SM(UInt_IntPtr_RetStr, K I, s)) -DEFINE_METASIG_T(SM(RuntimeType_RuntimeMethodHandleInternal_RetMethodBase, C(CLASS) g(METHOD_HANDLE_INTERNAL), C(METHOD_BASE) )) -DEFINE_METASIG_T(SM(RuntimeType_IRuntimeFieldInfo_RetFieldInfo, C(CLASS) C(I_RT_FIELD_INFO), C(FIELD_INFO) )) DEFINE_METASIG(SM(Char_Bool_Bool_RetByte, u F F, b)) DEFINE_METASIG(SM(Byte_RetChar, b, u)) DEFINE_METASIG(SM(Str_Bool_Bool_RefInt_RetIntPtr, s F F r(i), I)) DEFINE_METASIG(SM(IntPtr_Int_RetStr, I i, s)) -DEFINE_METASIG_T(SM(Obj_PtrByte_RefCleanupWorkListElement_RetVoid, j P(b) r(C(CLEANUP_WORK_LIST_ELEMENT)), v)) DEFINE_METASIG_T(SM(SafeHandle_RefCleanupWorkListElement_RetIntPtr, C(SAFE_HANDLE) r(C(CLEANUP_WORK_LIST_ELEMENT)), I)) -DEFINE_METASIG(SM(Obj_PtrByte_RetVoid, j P(b), v)) DEFINE_METASIG(SM(PtrByte_IntPtr_RetVoid, P(b) I, v)) DEFINE_METASIG(SM(Str_Bool_Bool_RefInt_RetArrByte, s F F r(i), a(b) )) DEFINE_METASIG(SM(ArrByte_Int_PtrByte_Int_Int_RetVoid, a(b) i P(b) i i, v)) @@ -517,7 +513,6 @@ DEFINE_METASIG_T(IM(ArrType_ArrException_Str_RetVoid, a(C(TYPE)) a(C(EXCEPTION)) DEFINE_METASIG(IM(RefInt_RefInt_RefInt_RetArrByte, r(i) r(i) r(i), a(b))) DEFINE_METASIG_T(IM(RefInt_RetRuntimeType, r(i) , C(CLASS))) DEFINE_METASIG_T(SM(IntPtr_RetRuntimeType, I , C(CLASS))) -DEFINE_METASIG_T(IM(RuntimeType_RetVoid, C(CLASS) , v)) DEFINE_METASIG_T(IM(RuntimeArgumentHandle_PtrVoid_RetVoid, g(ARGUMENT_HANDLE) P(v), v)) @@ -584,7 +579,6 @@ DEFINE_METASIG(SM(RefUShrt_UShrt_UShrt_RetUShrt, r(H) H H, H)) DEFINE_METASIG_T(SM(RefCleanupWorkListElement_RetVoid, r(C(CLEANUP_WORK_LIST_ELEMENT)), v)) DEFINE_METASIG_T(SM(RefCleanupWorkListElement_SafeHandle_RetIntPtr, r(C(CLEANUP_WORK_LIST_ELEMENT)) C(SAFE_HANDLE), I)) -DEFINE_METASIG_T(SM(RefCleanupWorkListElement_Obj_RetVoid, r(C(CLEANUP_WORK_LIST_ELEMENT)) j, v)) DEFINE_METASIG(SM(PtrVoid_RetPtrVoid, P(v), P(v))) DEFINE_METASIG(IM(PtrVoid_RetVoid, P(v), v)) From 3d8f94bc44293ebe37b0a57353e51e50b3239599 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sat, 15 Nov 2025 20:34:28 +0000 Subject: [PATCH 7/8] Delete unused CRITICAL_HANDLE DISPOSE method reference Co-authored-by: jkotas <6668460+jkotas@users.noreply.github.com> --- src/coreclr/vm/corelib.h | 1 - 1 file changed, 1 deletion(-) diff --git a/src/coreclr/vm/corelib.h b/src/coreclr/vm/corelib.h index ce4bfc95f9e71a..4588d41deef3d9 100644 --- a/src/coreclr/vm/corelib.h +++ b/src/coreclr/vm/corelib.h @@ -194,7 +194,6 @@ END_ILLINK_FEATURE_SWITCH() DEFINE_CLASS(CRITICAL_HANDLE, Interop, CriticalHandle) DEFINE_FIELD(CRITICAL_HANDLE, HANDLE, handle) -DEFINE_METHOD(CRITICAL_HANDLE, DISPOSE, Dispose, IM_RetVoid) DEFINE_CLASS(HANDLE_REF, Interop, HandleRef) DEFINE_FIELD(HANDLE_REF, WRAPPER, _wrapper) From 895fbea8304c42898b21753125e82e5341eceef2 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sat, 15 Nov 2025 21:05:34 +0000 Subject: [PATCH 8/8] Delete unused KeepAliveCleanupWorkListElement class Co-authored-by: jkotas <6668460+jkotas@users.noreply.github.com> --- .../src/System/StubHelpers.cs | 18 ------------------ 1 file changed, 18 deletions(-) diff --git a/src/coreclr/System.Private.CoreLib/src/System/StubHelpers.cs b/src/coreclr/System.Private.CoreLib/src/System/StubHelpers.cs index ef22fd630a9b51..880c3516e81032 100644 --- a/src/coreclr/System.Private.CoreLib/src/System/StubHelpers.cs +++ b/src/coreclr/System.Private.CoreLib/src/System/StubHelpers.cs @@ -1299,24 +1299,6 @@ public static void AddToCleanupList(ref CleanupWorkListElement? list, CleanupWor } } - // Keeps an object instance alive across the full Managed->Native call. - // This ensures that users don't have to call GC.KeepAlive after passing a struct or class - // that has a delegate field to native code. - internal sealed class KeepAliveCleanupWorkListElement : CleanupWorkListElement - { - public KeepAliveCleanupWorkListElement(object obj) - { - m_obj = obj; - } - - private readonly object m_obj; - - protected override void DestroyCore() - { - GC.KeepAlive(m_obj); - } - } - // Aggregates SafeHandle and the "owned" bit which indicates whether the SafeHandle // has been successfully AddRef'ed. This allows us to do realiable cleanup (Release) // if and only if it is needed.