@@ -146,14 +146,15 @@ _PyStackRef_CLOSE(_PyStackRef ref, const char *filename, int linenumber)
146
146
#define PyStackRef_CLOSE (REF ) _PyStackRef_CLOSE((REF), __FILE__, __LINE__)
147
147
148
148
static inline void
149
- PyStackRef_XCLOSE (_PyStackRef ref )
149
+ _PyStackRef_XCLOSE (_PyStackRef ref , const char * filename , int linenumber )
150
150
{
151
151
if (PyStackRef_IsNull (ref )) {
152
152
return ;
153
153
}
154
- PyObject * obj = _Py_stackref_close (ref );
154
+ PyObject * obj = _Py_stackref_close (ref , filename , linenumber );
155
155
Py_DECREF (obj );
156
156
}
157
+ #define PyStackRef_XCLOSE (REF ) _PyStackRef_XCLOSE((REF), __FILE__, __LINE__)
157
158
158
159
static inline _PyStackRef
159
160
_PyStackRef_DUP (_PyStackRef ref , const char * filename , int linenumber )
@@ -164,7 +165,8 @@ _PyStackRef_DUP(_PyStackRef ref, const char *filename, int linenumber)
164
165
}
165
166
#define PyStackRef_DUP (REF ) _PyStackRef_DUP(REF, __FILE__, __LINE__)
166
167
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__)
168
170
169
171
static inline _PyStackRef
170
172
PyStackRef_MakeHeapSafe (_PyStackRef ref )
@@ -175,7 +177,7 @@ PyStackRef_MakeHeapSafe(_PyStackRef ref)
175
177
static inline _PyStackRef
176
178
PyStackRef_Borrow (_PyStackRef ref )
177
179
{
178
- return PyStackRef_DUP (ref )
180
+ return PyStackRef_DUP (ref );
179
181
}
180
182
181
183
#define PyStackRef_CLEAR (REF ) \
@@ -200,6 +202,18 @@ PyStackRef_IsHeapSafe(_PyStackRef ref)
200
202
return true;
201
203
}
202
204
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 );
203
217
204
218
#else
205
219
@@ -616,6 +630,7 @@ PyStackRef_XCLOSE(_PyStackRef ref)
616
630
617
631
#define PyStackRef_Is (a , b ) (((a).bits & (~Py_TAG_BITS)) == ((b).bits & (~Py_TAG_BITS)))
618
632
633
+
619
634
#endif // !defined(Py_GIL_DISABLED) && defined(Py_STACKREF_DEBUG)
620
635
621
636
#define PyStackRef_TYPE (stackref ) Py_TYPE(PyStackRef_AsPyObjectBorrow(stackref))
0 commit comments