bpo-39542: Simplify _Py_NewReference() (GH-18332)
* Remove _Py_INC_REFTOTAL and _Py_DEC_REFTOTAL macros: modify
directly _Py_RefTotal.
* _Py_ForgetReference() is no longer defined if the Py_TRACE_REFS
macro is not defined.
* Remove _Py_NewReference() implementation from object.c:
unify the two implementations in object.h inline function.
* Fix Py_TRACE_REFS build: _Py_INC_TPALLOCS() macro has been removed.
diff --git a/Objects/tupleobject.c b/Objects/tupleobject.c
index 2708b9a..8c8c66f 100644
--- a/Objects/tupleobject.c
+++ b/Objects/tupleobject.c
@@ -902,10 +902,15 @@
}
/* XXX UNREF/NEWREF interface should be more symmetrical */
- _Py_DEC_REFTOTAL;
- if (_PyObject_GC_IS_TRACKED(v))
+#ifdef Py_REF_DEBUG
+ _Py_RefTotal--;
+#endif
+ if (_PyObject_GC_IS_TRACKED(v)) {
_PyObject_GC_UNTRACK(v);
+ }
+#ifdef Py_TRACE_REFS
_Py_ForgetReference((PyObject *) v);
+#endif
/* DECREF items deleted by shrinkage */
for (i = newsize; i < oldsize; i++) {
Py_CLEAR(v->ob_item[i]);