@@ -146,14 +146,15 @@ _PyStackRef_CLOSE(_PyStackRef ref, const char *filename, int linenumber)
146146#define PyStackRef_CLOSE (REF ) _PyStackRef_CLOSE((REF), __FILE__, __LINE__)
147147
148148static inline void
149- PyStackRef_XCLOSE (_PyStackRef ref )
149+ _PyStackRef_XCLOSE (_PyStackRef ref , const char * filename , int linenumber )
150150{
151151 if (PyStackRef_IsNull (ref )) {
152152 return ;
153153 }
154- PyObject * obj = _Py_stackref_close (ref );
154+ PyObject * obj = _Py_stackref_close (ref , filename , linenumber );
155155 Py_DECREF (obj );
156156}
157+ #define PyStackRef_XCLOSE (REF ) _PyStackRef_XCLOSE((REF), __FILE__, __LINE__)
157158
158159static inline _PyStackRef
159160_PyStackRef_DUP (_PyStackRef ref , const char * filename , int linenumber )
@@ -164,7 +165,8 @@ _PyStackRef_DUP(_PyStackRef ref, const char *filename, int linenumber)
164165}
165166#define PyStackRef_DUP (REF ) _PyStackRef_DUP(REF, __FILE__, __LINE__)
166167
167- extern void PyStackRef_CLOSE_SPECIALIZED (_PyStackRef ref , destructor destruct );
168+ extern void _PyStackRef_CLOSE_SPECIALIZED (_PyStackRef ref , destructor destruct , const char * filename , int linenumber );
169+ #define PyStackRef_CLOSE_SPECIALIZED (REF , DESTRUCT ) _PyStackRef_CLOSE_SPECIALIZED(REF, DESTRUCT, __FILE__, __LINE__)
168170
169171static inline _PyStackRef
170172PyStackRef_MakeHeapSafe (_PyStackRef ref )
@@ -175,7 +177,7 @@ PyStackRef_MakeHeapSafe(_PyStackRef ref)
175177static inline _PyStackRef
176178PyStackRef_Borrow (_PyStackRef ref )
177179{
178- return PyStackRef_DUP (ref )
180+ return PyStackRef_DUP (ref );
179181}
180182
181183#define PyStackRef_CLEAR (REF ) \
@@ -200,6 +202,18 @@ PyStackRef_IsHeapSafe(_PyStackRef ref)
200202 return true;
201203}
202204
205+ static inline _PyStackRef
206+ _PyStackRef_FromPyObjectNewMortal (PyObject * obj , const char * filename , int linenumber )
207+ {
208+ assert (!_Py_IsStaticImmortal (obj ));
209+ Py_INCREF (obj );
210+ return _Py_stackref_create (obj , filename , linenumber );
211+ }
212+ #define PyStackRef_FromPyObjectNewMortal (obj ) _PyStackRef_FromPyObjectNewMortal(_PyObject_CAST(obj), __FILE__, __LINE__)
213+
214+ #define PyStackRef_RefcountOnObject (REF ) 1
215+
216+ extern int PyStackRef_Is (_PyStackRef a , _PyStackRef b );
203217
204218#else
205219
@@ -616,6 +630,7 @@ PyStackRef_XCLOSE(_PyStackRef ref)
616630
617631#define PyStackRef_Is (a , b ) (((a).bits & (~Py_TAG_BITS)) == ((b).bits & (~Py_TAG_BITS)))
618632
633+
619634#endif // !defined(Py_GIL_DISABLED) && defined(Py_STACKREF_DEBUG)
620635
621636#define PyStackRef_TYPE (stackref ) Py_TYPE(PyStackRef_AsPyObjectBorrow(stackref))
0 commit comments