diff options
author | Mark Shannon <mark@hotpy.org> | 2024-03-20 08:54:42 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-03-20 08:54:42 (GMT) |
commit | 15309329b65a285cb7b3071f0f08ac964b61411b (patch) | |
tree | 83b5be564755d7ea396c76eda29e6d33faf535d9 /Objects/object.c | |
parent | d5ebf8b71fd18d7a1f2f6b670a2c18749dc2b55e (diff) | |
download | cpython-15309329b65a285cb7b3071f0f08ac964b61411b.zip cpython-15309329b65a285cb7b3071f0f08ac964b61411b.tar.gz cpython-15309329b65a285cb7b3071f0f08ac964b61411b.tar.bz2 |
GH-108362: Incremental Cycle GC (GH-116206)
Diffstat (limited to 'Objects/object.c')
-rw-r--r-- | Objects/object.c | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/Objects/object.c b/Objects/object.c index df14fe0..fcb8cf4 100644 --- a/Objects/object.c +++ b/Objects/object.c @@ -2402,6 +2402,27 @@ _Py_NewReferenceNoTotal(PyObject *op) } void +_Py_SetImmortalUntracked(PyObject *op) +{ +#ifdef Py_GIL_DISABLED + op->ob_tid = _Py_UNOWNED_TID; + op->ob_ref_local = _Py_IMMORTAL_REFCNT_LOCAL; + op->ob_ref_shared = 0; +#else + op->ob_refcnt = _Py_IMMORTAL_REFCNT; +#endif +} + +void +_Py_SetImmortal(PyObject *op) +{ + if (PyObject_IS_GC(op) && _PyObject_GC_IS_TRACKED(op)) { + _PyObject_GC_UNTRACK(op); + } + _Py_SetImmortalUntracked(op); +} + +void _Py_ResurrectReference(PyObject *op) { if (_PyRuntime.tracemalloc.config.tracing) { |