https://github.com/python/cpython/commit/b42af37ceddd05ffba6f561b1b534e93a4ad2505
commit: b42af37ceddd05ffba6f561b1b534e93a4ad2505
branch: main
author: Sergey Miryanov <[email protected]>
committer: vstinner <[email protected]>
date: 2025-09-17T21:25:24+01:00
summary:
GH-138355: Remove trash_delete_later from _gc_runtime_state (#138767)
Remove trash_delete_later and trash_delete_nesting from _gc_runtime_state.
files:
M Include/cpython/pystate.h
M Include/internal/pycore_interp_structs.h
M Objects/object.c
diff --git a/Include/cpython/pystate.h b/Include/cpython/pystate.h
index 555641943423b4..bd9d8aaefe5400 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 4c55770e01da4f..0e039de8ae05b3 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 1f10c2531fead1..0540112d7d2acf 100644
--- a/Objects/object.c
+++ b/Objects/object.c
@@ -3051,7 +3051,7 @@ Py_ReprLeave(PyObject *obj)
/* 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)
_______________________________________________
Python-checkins mailing list -- [email protected]
To unsubscribe send an email to [email protected]
https://mail.python.org/mailman3//lists/python-checkins.python.org
Member address: [email protected]