mirror of
https://github.com/python/cpython.git
synced 2025-10-17 12:18:23 +00:00
gh-123091: Use more _Py_IsImmortalLoose() (GH-123602)
Switch more _Py_IsImmortal(...) assertions to _Py_IsImmortalLoose(...) The remaining calls to _Py_IsImmortal are in free-threaded-only code, initialization of core objects, tests, and guards that fall back to code that works with mortal objects.
This commit is contained in:
parent
5002f17794
commit
57c471a688
4 changed files with 5 additions and 5 deletions
|
@ -314,7 +314,7 @@ static inline void
|
||||||
_Py_INCREF_TYPE(PyTypeObject *type)
|
_Py_INCREF_TYPE(PyTypeObject *type)
|
||||||
{
|
{
|
||||||
if (!_PyType_HasFeature(type, Py_TPFLAGS_HEAPTYPE)) {
|
if (!_PyType_HasFeature(type, Py_TPFLAGS_HEAPTYPE)) {
|
||||||
assert(_Py_IsImmortal(type));
|
assert(_Py_IsImmortalLoose(type));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -354,7 +354,7 @@ static inline void
|
||||||
_Py_DECREF_TYPE(PyTypeObject *type)
|
_Py_DECREF_TYPE(PyTypeObject *type)
|
||||||
{
|
{
|
||||||
if (!_PyType_HasFeature(type, Py_TPFLAGS_HEAPTYPE)) {
|
if (!_PyType_HasFeature(type, Py_TPFLAGS_HEAPTYPE)) {
|
||||||
assert(_Py_IsImmortal(type));
|
assert(_Py_IsImmortalLoose(type));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1387,7 +1387,7 @@ FutureObj_get_state(FutureObj *fut, void *Py_UNUSED(ignored))
|
||||||
default:
|
default:
|
||||||
assert (0);
|
assert (0);
|
||||||
}
|
}
|
||||||
assert(_Py_IsImmortal(ret));
|
assert(_Py_IsImmortalLoose(ret));
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -725,7 +725,7 @@ _PyStructSequence_FiniBuiltin(PyInterpreterState *interp, PyTypeObject *type)
|
||||||
assert(type->tp_name != NULL);
|
assert(type->tp_name != NULL);
|
||||||
assert(type->tp_base == &PyTuple_Type);
|
assert(type->tp_base == &PyTuple_Type);
|
||||||
assert((type->tp_flags & _Py_TPFLAGS_STATIC_BUILTIN));
|
assert((type->tp_flags & _Py_TPFLAGS_STATIC_BUILTIN));
|
||||||
assert(_Py_IsImmortal(type));
|
assert(_Py_IsImmortalLoose(type));
|
||||||
|
|
||||||
// Cannot delete a type if it still has subclasses
|
// Cannot delete a type if it still has subclasses
|
||||||
if (_PyType_HasSubclasses(type)) {
|
if (_PyType_HasSubclasses(type)) {
|
||||||
|
|
|
@ -1049,7 +1049,7 @@ del_cached_def(struct extensions_cache_value *value)
|
||||||
However, this decref would be problematic if the module def were
|
However, this decref would be problematic if the module def were
|
||||||
dynamically allocated, it were the last ref, and this function
|
dynamically allocated, it were the last ref, and this function
|
||||||
were called with an interpreter other than the def's owner. */
|
were called with an interpreter other than the def's owner. */
|
||||||
assert(value->def == NULL || _Py_IsImmortal(value->def));
|
assert(value->def == NULL || _Py_IsImmortalLoose(value->def));
|
||||||
|
|
||||||
Py_XDECREF(value->def->m_base.m_copy);
|
Py_XDECREF(value->def->m_base.m_copy);
|
||||||
value->def->m_base.m_copy = NULL;
|
value->def->m_base.m_copy = NULL;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue