mirror of
https://github.com/python/cpython.git
synced 2025-08-04 00:48:58 +00:00
bpo-33597: Reduce PyGC_Head size (GH-7043)
This commit is contained in:
parent
445f1b35ce
commit
5ac9e6eee5
4 changed files with 433 additions and 260 deletions
|
@ -284,8 +284,9 @@ PyObject_CallFinalizer(PyObject *self)
|
|||
return;
|
||||
|
||||
tp->tp_finalize(self);
|
||||
if (PyType_IS_GC(tp))
|
||||
_PyGC_SET_FINALIZED(self, 1);
|
||||
if (PyType_IS_GC(tp)) {
|
||||
_PyGC_SET_FINALIZED(self);
|
||||
}
|
||||
}
|
||||
|
||||
int
|
||||
|
@ -2095,7 +2096,7 @@ _PyTrash_deposit_object(PyObject *op)
|
|||
assert(PyObject_IS_GC(op));
|
||||
assert(!_PyObject_GC_IS_TRACKED(op));
|
||||
assert(op->ob_refcnt == 0);
|
||||
_Py_AS_GC(op)->gc.gc_prev = (PyGC_Head *)_PyRuntime.gc.trash_delete_later;
|
||||
_PyGCHead_SET_PREV(_Py_AS_GC(op), _PyRuntime.gc.trash_delete_later);
|
||||
_PyRuntime.gc.trash_delete_later = op;
|
||||
}
|
||||
|
||||
|
@ -2107,7 +2108,7 @@ _PyTrash_thread_deposit_object(PyObject *op)
|
|||
assert(PyObject_IS_GC(op));
|
||||
assert(!_PyObject_GC_IS_TRACKED(op));
|
||||
assert(op->ob_refcnt == 0);
|
||||
_Py_AS_GC(op)->gc.gc_prev = (PyGC_Head *) tstate->trash_delete_later;
|
||||
_PyGCHead_SET_PREV(_Py_AS_GC(op), tstate->trash_delete_later);
|
||||
tstate->trash_delete_later = op;
|
||||
}
|
||||
|
||||
|
@ -2122,7 +2123,7 @@ _PyTrash_destroy_chain(void)
|
|||
destructor dealloc = Py_TYPE(op)->tp_dealloc;
|
||||
|
||||
_PyRuntime.gc.trash_delete_later =
|
||||
(PyObject*) _Py_AS_GC(op)->gc.gc_prev;
|
||||
(PyObject*) _PyGCHead_PREV(_Py_AS_GC(op));
|
||||
|
||||
/* Call the deallocator directly. This used to try to
|
||||
* fool Py_DECREF into calling it indirectly, but
|
||||
|
@ -2160,7 +2161,7 @@ _PyTrash_thread_destroy_chain(void)
|
|||
destructor dealloc = Py_TYPE(op)->tp_dealloc;
|
||||
|
||||
tstate->trash_delete_later =
|
||||
(PyObject*) _Py_AS_GC(op)->gc.gc_prev;
|
||||
(PyObject*) _PyGCHead_PREV(_Py_AS_GC(op));
|
||||
|
||||
/* Call the deallocator directly. This used to try to
|
||||
* fool Py_DECREF into calling it indirectly, but
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue