@@ -104,12 +104,6 @@ PyStackRef_IsNone(_PyStackRef ref)
104104 return _Py_stackref_get_object (ref ) == Py_None ;
105105}
106106
107- static inline bool
108- PyStackRef_IsBorrowed (_PyStackRef ref )
109- {
110- return false;
111- }
112-
113107static inline PyObject *
114108_PyStackRef_AsPyObjectBorrow (_PyStackRef ref , const char * filename , int linenumber )
115109{
@@ -269,16 +263,6 @@ _PyStackRef_FromPyObjectSteal(PyObject *obj)
269263}
270264# define PyStackRef_FromPyObjectSteal (obj ) _PyStackRef_FromPyObjectSteal(_PyObject_CAST(obj))
271265
272- static inline bool
273- PyStackRef_IsBorrowed (_PyStackRef stackref )
274- {
275- if (PyStackRef_IsNull (stackref ) || !PyStackRef_IsDeferred (stackref )) {
276- return false;
277- }
278- PyObject * obj = PyStackRef_AsPyObjectBorrow (stackref );
279- return !(_Py_IsImmortal (obj ) || _PyObject_HasDeferredRefcount (obj ));
280- }
281-
282266static inline bool
283267PyStackRef_IsHeapSafe (_PyStackRef stackref )
284268{
@@ -292,11 +276,11 @@ PyStackRef_IsHeapSafe(_PyStackRef stackref)
292276static inline _PyStackRef
293277PyStackRef_MakeHeapSafe (_PyStackRef stackref )
294278{
295- if (PyStackRef_IsBorrowed (stackref )) {
296- PyObject * obj = PyStackRef_AsPyObjectBorrow (stackref );
297- return (_PyStackRef ){ .bits = (uintptr_t )(Py_NewRef (obj )) | Py_TAG_PTR };
279+ if (PyStackRef_IsHeapSafe (stackref )) {
280+ return stackref ;
298281 }
299- return stackref ;
282+ PyObject * obj = PyStackRef_AsPyObjectBorrow (stackref );
283+ return (_PyStackRef ){ .bits = (uintptr_t )(Py_NewRef (obj )) | Py_TAG_PTR };
300284}
301285
302286static inline _PyStackRef
0 commit comments