From: Sergey Miryanov Date: Wed, 17 Sep 2025 20:25:24 +0000 (-0700) Subject: GH-138355: Remove trash_delete_later from _gc_runtime_state (#138767) X-Git-Tag: v3.15.0a1~296 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=b42af37ceddd05ffba6f561b1b534e93a4ad2505;p=thirdparty%2FPython%2Fcpython.git GH-138355: Remove trash_delete_later from _gc_runtime_state (#138767) Remove trash_delete_later and trash_delete_nesting from _gc_runtime_state. --- diff --git a/Include/cpython/pystate.h b/Include/cpython/pystate.h index 555641943423..bd9d8aaefe54 100644 --- a/Include/cpython/pystate.h +++ b/Include/cpython/pystate.h @@ -157,6 +157,11 @@ struct _ts { */ unsigned long native_thread_id; + /* List of objects that still need to be cleaned up, singly linked + * via their gc headers' gc_next pointers. The list is populated by + * _PyTrash_thread_deposit_object and cleaned up by + * _PyTrash_thread_destroy_chain. + */ PyObject *delete_later; /* Tagged pointer to top-most critical section, or zero if there is no diff --git a/Include/internal/pycore_interp_structs.h b/Include/internal/pycore_interp_structs.h index 4c55770e01da..0e039de8ae05 100644 --- a/Include/internal/pycore_interp_structs.h +++ b/Include/internal/pycore_interp_structs.h @@ -203,12 +203,6 @@ enum _GCPhase { #define NUM_GENERATIONS 3 struct _gc_runtime_state { - /* List of objects that still need to be cleaned up, singly linked - * via their gc headers' gc_prev pointers. */ - PyObject *trash_delete_later; - /* Current call-stack depth of tp_dealloc calls. */ - int trash_delete_nesting; - /* Is automatic collection enabled? */ int enabled; int debug; diff --git a/Objects/object.c b/Objects/object.c index 1f10c2531fea..0540112d7d2a 100644 --- a/Objects/object.c +++ b/Objects/object.c @@ -3051,7 +3051,7 @@ finally: /* Trashcan support. */ -/* Add op to the gcstate->trash_delete_later list. Called when the current +/* Add op to the tstate->delete_later list. Called when the current * call-stack depth gets large. op must be a gc'ed object, with refcount 0. * Py_DECREF must already have been called on it. */ @@ -3077,7 +3077,7 @@ _PyTrash_thread_deposit_object(PyThreadState *tstate, PyObject *op) tstate->delete_later = op; } -/* Deallocate all the objects in the gcstate->trash_delete_later list. +/* Deallocate all the objects in the tstate->delete_later list. * Called when the call-stack unwinds again. */ void _PyTrash_thread_destroy_chain(PyThreadState *tstate)