@@ -735,11 +735,7 @@ PyAPI_FUNC(Py_ssize_t) _Py_GetRefTotal(void);
735
735
#define _Py_INC_REFTOTAL _Py_RefTotal++
736
736
#define _Py_DEC_REFTOTAL _Py_RefTotal--
737
737
#define _Py_REF_DEBUG_COMMA ,
738
- #define _Py_CHECK_REFCNT (OP ) \
739
- { if (((PyObject*)OP)->ob_refcnt < 0) \
740
- _Py_NegativeRefcount(__FILE__, __LINE__, \
741
- (PyObject *)(OP)); \
742
- }
738
+
743
739
/* Py_REF_DEBUG also controls the display of refcounts and memory block
744
740
* allocations at the interactive prompt and at interpreter shutdown
745
741
*/
@@ -748,7 +744,6 @@ PyAPI_FUNC(void) _PyDebug_PrintTotalRefs(void);
748
744
#define _Py_INC_REFTOTAL
749
745
#define _Py_DEC_REFTOTAL
750
746
#define _Py_REF_DEBUG_COMMA
751
- #define _Py_CHECK_REFCNT (OP ) /* a semicolon */ ;
752
747
#endif /* Py_REF_DEBUG */
753
748
754
749
#ifdef COUNT_ALLOCS
@@ -780,17 +775,21 @@ PyAPI_FUNC(void) _Py_AddToAllObjects(PyObject *, int force);
780
775
781
776
#else
782
777
/* Without Py_TRACE_REFS, there's little enough to do that we expand code
783
- * inline.
784
- */
785
- #define _Py_NewReference (op ) ( \
786
- (_Py_tracemalloc_config.tracing \
787
- ? _PyTraceMalloc_NewReference(op) \
788
- : 0), \
789
- _Py_INC_TPALLOCS(op) _Py_COUNT_ALLOCS_COMMA \
790
- _Py_INC_REFTOTAL _Py_REF_DEBUG_COMMA \
791
- Py_REFCNT(op) = 1)
778
+ inline. */
779
+ static inline void _Py_NewReference (PyObject * op )
780
+ {
781
+ if (_Py_tracemalloc_config .tracing ) {
782
+ _PyTraceMalloc_NewReference (op );
783
+ }
784
+ _Py_INC_TPALLOCS (op );
785
+ _Py_INC_REFTOTAL ;
786
+ Py_REFCNT (op ) = 1 ;
787
+ }
792
788
793
- #define _Py_ForgetReference (op ) _Py_INC_TPFREES(op)
789
+ static inline void _Py_ForgetReference (PyObject * op )
790
+ {
791
+ _Py_INC_TPFREES (op );
792
+ }
794
793
795
794
#ifdef Py_LIMITED_API
796
795
PyAPI_FUNC (void ) _Py_Dealloc (PyObject * );
@@ -801,19 +800,33 @@ PyAPI_FUNC(void) _Py_Dealloc(PyObject *);
801
800
#endif
802
801
#endif /* !Py_TRACE_REFS */
803
802
804
- #define Py_INCREF (op ) ( \
805
- _Py_INC_REFTOTAL _Py_REF_DEBUG_COMMA \
806
- ((PyObject *)(op))->ob_refcnt++)
807
-
808
- #define Py_DECREF (op ) \
809
- do { \
810
- PyObject *_py_decref_tmp = (PyObject *)(op); \
811
- if (_Py_DEC_REFTOTAL _Py_REF_DEBUG_COMMA \
812
- --(_py_decref_tmp)->ob_refcnt != 0) \
813
- _Py_CHECK_REFCNT(_py_decref_tmp) \
814
- else \
815
- _Py_Dealloc(_py_decref_tmp); \
816
- } while (0)
803
+
804
+ static inline void _Py_INCREF (PyObject * op )
805
+ {
806
+ _Py_INC_REFTOTAL ;
807
+ op -> ob_refcnt ++ ;
808
+ }
809
+
810
+ #define Py_INCREF (op ) _Py_INCREF((PyObject *)(op))
811
+
812
+ static inline void _Py_DECREF (const char * filename , int lineno ,
813
+ PyObject * op )
814
+ {
815
+ _Py_DEC_REFTOTAL ;
816
+ if (-- op -> ob_refcnt != 0 ) {
817
+ #ifdef Py_REF_DEBUG
818
+ if (op -> ob_refcnt < 0 ) {
819
+ _Py_NegativeRefcount (filename , lineno , op );
820
+ }
821
+ #endif
822
+ }
823
+ else {
824
+ _Py_Dealloc (op );
825
+ }
826
+ }
827
+
828
+ #define Py_DECREF (op ) _Py_DECREF(__FILE__, __LINE__, (PyObject *)(op))
829
+
817
830
818
831
/* Safely decref `op` and set `op` to NULL, especially useful in tp_clear
819
832
* and tp_dealloc implementations.
0 commit comments