GH-124715: Move trashcan mechanism into Py_Dealloc (GH-132280)

This commit is contained in:
Mark Shannon 2025-04-30 11:37:53 +01:00 committed by GitHub
parent 0f23e84cda
commit 44e4c479fb
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
26 changed files with 88 additions and 196 deletions

View file

@ -166,10 +166,7 @@ static void
meth_dealloc(PyObject *self)
{
PyCFunctionObject *m = _PyCFunctionObject_CAST(self);
// The Py_TRASHCAN mechanism requires that we be able to
// call PyObject_GC_UnTrack twice on an object.
PyObject_GC_UnTrack(m);
Py_TRASHCAN_BEGIN(m, meth_dealloc);
if (m->m_weakreflist != NULL) {
PyObject_ClearWeakRefs((PyObject*) m);
}
@ -190,7 +187,6 @@ meth_dealloc(PyObject *self)
assert(Py_IS_TYPE(self, &PyCFunction_Type));
_Py_FREELIST_FREE(pycfunctionobject, m, PyObject_GC_Del);
}
Py_TRASHCAN_END;
}
static PyObject *