@@ -167,12 +167,6 @@ PyStackRef_XCLOSE(_PyStackRef ref)
167167 Py_DECREF (obj );
168168}
169169
170- static inline _PyStackRef
171- _PyStackRef_NewIfBorrowedOrSteal (_PyStackRef ref )
172- {
173- return ref ;
174- }
175-
176170static inline _PyStackRef
177171_PyStackRef_DUP (_PyStackRef ref , const char * filename , int linenumber )
178172{
@@ -285,9 +279,18 @@ PyStackRef_IsBorrowed(_PyStackRef stackref)
285279 return !(_Py_IsImmortal (obj ) || _PyObject_HasDeferredRefcount (obj ));
286280}
287281
282+ static inline bool
283+ PyStackRef_IsHeapSafe (_PyStackRef stackref )
284+ {
285+ if (PyStackRef_IsDeferred (stackref )) {
286+ PyObject * obj = PyStackRef_AsPyObjectBorrow (stackref );
287+ return obj == NULL || _Py_IsImmortal (obj ) || _PyObject_HasDeferredRefcount (obj );
288+ }
289+ return true;
290+ }
288291
289292static inline _PyStackRef
290- _PyStackRef_NewIfBorrowedOrSteal (_PyStackRef stackref )
293+ PyStackRef_MakeHeapSafe (_PyStackRef stackref )
291294{
292295 if (PyStackRef_IsBorrowed (stackref )) {
293296 PyObject * obj = PyStackRef_AsPyObjectBorrow (stackref );
@@ -365,18 +368,6 @@ PyStackRef_AsDeferred(_PyStackRef stackref)
365368 return (_PyStackRef ){ .bits = stackref .bits | Py_TAG_DEFERRED };
366369}
367370
368- static inline bool
369- PyStackRef_IsHeapSafe (_PyStackRef ref )
370- {
371- return true;
372- }
373-
374- static inline _PyStackRef
375- PyStackRef_MakeHeapSafe (_PyStackRef ref )
376- {
377- return ref ;
378- }
379-
380371// Convert a possibly deferred reference to a strong reference.
381372static inline _PyStackRef
382373PyStackRef_AsStrongReference (_PyStackRef stackref )
0 commit comments