bpo-39542: Make _Py_NewReference() opaque in C API (GH-18346)

_Py_NewReference() becomes a regular opaque function, rather than a
static inline function in the C API (object.h), to better hide
implementation details.

Move _Py_tracemalloc_config from public pymem.h to internal
pycore_pymem.h header.

Make _Py_AddToAllObjects() private.
This commit is contained in:
Victor Stinner 2020-02-05 01:11:10 +01:00 committed by GitHub
parent 2545fa8762
commit 40e547dfbb
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 54 additions and 55 deletions

View file

@ -93,7 +93,7 @@ static PyObject refchain = {&refchain, &refchain};
* way, though; exceptions include statically allocated type objects, and
* statically allocated singletons (like Py_True and Py_None).
*/
void
static void
_Py_AddToAllObjects(PyObject *op, int force)
{
#ifdef Py_DEBUG
@ -1805,6 +1805,22 @@ _PyTypes_Init(void)
}
void
_Py_NewReference(PyObject *op)
{
if (_Py_tracemalloc_config.tracing) {
_PyTraceMalloc_NewReference(op);
}
#ifdef Py_REF_DEBUG
_Py_RefTotal++;
#endif
Py_REFCNT(op) = 1;
#ifdef Py_TRACE_REFS
_Py_AddToAllObjects(op, 1);
#endif
}
#ifdef Py_TRACE_REFS
void
_Py_ForgetReference(PyObject *op)