diff options
Diffstat (limited to 'Objects/object.c')
-rw-r--r-- | Objects/object.c | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/Objects/object.c b/Objects/object.c index bbf7f98..7247eb2 100644 --- a/Objects/object.c +++ b/Objects/object.c @@ -2388,6 +2388,21 @@ _Py_NewReferenceNoTotal(PyObject *op) } void +_Py_SetImmortal(PyObject *op) +{ + if (PyObject_IS_GC(op) && _PyObject_GC_IS_TRACKED(op)) { + _PyObject_GC_UNTRACK(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_ResurrectReference(PyObject *op) { if (_PyRuntime.tracemalloc.config.tracing) { |