mirror of
https://github.com/python/cpython.git
synced 2025-07-07 19:35:27 +00:00
gh-127705: Move Py_INCREF_MORTAL() to the internal C API (GH-136178)
Rename Py_INCREF_MORTAL() to _Py_INCREF_MORTAL() and move it to pycore_object.h internal header.
This commit is contained in:
parent
ab7196a2f5
commit
fa43a1e0f8
3 changed files with 18 additions and 18 deletions
|
@ -1033,6 +1033,20 @@ enum _PyAnnotateFormat {
|
||||||
|
|
||||||
int _PyObject_SetDict(PyObject *obj, PyObject *value);
|
int _PyObject_SetDict(PyObject *obj, PyObject *value);
|
||||||
|
|
||||||
|
#ifndef Py_GIL_DISABLED
|
||||||
|
static inline Py_ALWAYS_INLINE void _Py_INCREF_MORTAL(PyObject *op)
|
||||||
|
{
|
||||||
|
assert(!_Py_IsStaticImmortal(op));
|
||||||
|
op->ob_refcnt++;
|
||||||
|
_Py_INCREF_STAT_INC();
|
||||||
|
#if defined(Py_REF_DEBUG) && !defined(Py_LIMITED_API)
|
||||||
|
if (!_Py_IsImmortal(op)) {
|
||||||
|
_Py_INCREF_IncRefTotal();
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -626,7 +626,7 @@ _PyStackRef_FromPyObjectNew(PyObject *obj)
|
||||||
if (_Py_IsImmortal(obj)) {
|
if (_Py_IsImmortal(obj)) {
|
||||||
return (_PyStackRef){ .bits = ((uintptr_t)obj) | Py_TAG_REFCNT};
|
return (_PyStackRef){ .bits = ((uintptr_t)obj) | Py_TAG_REFCNT};
|
||||||
}
|
}
|
||||||
Py_INCREF_MORTAL(obj);
|
_Py_INCREF_MORTAL(obj);
|
||||||
_PyStackRef ref = (_PyStackRef){ .bits = (uintptr_t)obj };
|
_PyStackRef ref = (_PyStackRef){ .bits = (uintptr_t)obj };
|
||||||
PyStackRef_CheckValid(ref);
|
PyStackRef_CheckValid(ref);
|
||||||
return ref;
|
return ref;
|
||||||
|
@ -637,7 +637,7 @@ static inline _PyStackRef
|
||||||
_PyStackRef_FromPyObjectNewMortal(PyObject *obj)
|
_PyStackRef_FromPyObjectNewMortal(PyObject *obj)
|
||||||
{
|
{
|
||||||
assert(obj != NULL);
|
assert(obj != NULL);
|
||||||
Py_INCREF_MORTAL(obj);
|
_Py_INCREF_MORTAL(obj);
|
||||||
_PyStackRef ref = (_PyStackRef){ .bits = (uintptr_t)obj };
|
_PyStackRef ref = (_PyStackRef){ .bits = (uintptr_t)obj };
|
||||||
PyStackRef_CheckValid(ref);
|
PyStackRef_CheckValid(ref);
|
||||||
return ref;
|
return ref;
|
||||||
|
@ -654,14 +654,14 @@ PyStackRef_FromPyObjectBorrow(PyObject *obj)
|
||||||
/* WARNING: This macro evaluates its argument more than once */
|
/* WARNING: This macro evaluates its argument more than once */
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
#define PyStackRef_DUP(REF) \
|
#define PyStackRef_DUP(REF) \
|
||||||
(PyStackRef_RefcountOnObject(REF) ? (Py_INCREF_MORTAL(BITS_TO_PTR(REF)), (REF)) : (REF))
|
(PyStackRef_RefcountOnObject(REF) ? (_Py_INCREF_MORTAL(BITS_TO_PTR(REF)), (REF)) : (REF))
|
||||||
#else
|
#else
|
||||||
static inline _PyStackRef
|
static inline _PyStackRef
|
||||||
PyStackRef_DUP(_PyStackRef ref)
|
PyStackRef_DUP(_PyStackRef ref)
|
||||||
{
|
{
|
||||||
assert(!PyStackRef_IsNull(ref));
|
assert(!PyStackRef_IsNull(ref));
|
||||||
if (PyStackRef_RefcountOnObject(ref)) {
|
if (PyStackRef_RefcountOnObject(ref)) {
|
||||||
Py_INCREF_MORTAL(BITS_TO_PTR(ref));
|
_Py_INCREF_MORTAL(BITS_TO_PTR(ref));
|
||||||
}
|
}
|
||||||
return ref;
|
return ref;
|
||||||
}
|
}
|
||||||
|
|
|
@ -244,20 +244,6 @@ PyAPI_FUNC(void) Py_DecRef(PyObject *);
|
||||||
PyAPI_FUNC(void) _Py_IncRef(PyObject *);
|
PyAPI_FUNC(void) _Py_IncRef(PyObject *);
|
||||||
PyAPI_FUNC(void) _Py_DecRef(PyObject *);
|
PyAPI_FUNC(void) _Py_DecRef(PyObject *);
|
||||||
|
|
||||||
#ifndef Py_GIL_DISABLED
|
|
||||||
static inline Py_ALWAYS_INLINE void Py_INCREF_MORTAL(PyObject *op)
|
|
||||||
{
|
|
||||||
assert(!_Py_IsStaticImmortal(op));
|
|
||||||
op->ob_refcnt++;
|
|
||||||
_Py_INCREF_STAT_INC();
|
|
||||||
#if defined(Py_REF_DEBUG) && !defined(Py_LIMITED_API)
|
|
||||||
if (!_Py_IsImmortal(op)) {
|
|
||||||
_Py_INCREF_IncRefTotal();
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
static inline Py_ALWAYS_INLINE void Py_INCREF(PyObject *op)
|
static inline Py_ALWAYS_INLINE void Py_INCREF(PyObject *op)
|
||||||
{
|
{
|
||||||
#if defined(Py_LIMITED_API) && (Py_LIMITED_API+0 >= 0x030c0000 || defined(Py_REF_DEBUG))
|
#if defined(Py_LIMITED_API) && (Py_LIMITED_API+0 >= 0x030c0000 || defined(Py_REF_DEBUG))
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue