@@ -392,7 +392,7 @@ PyStackRef_FromPyObjectBorrow(PyObject *obj)
392392 do { \
393393 _PyStackRef _close_tmp = (REF); \
394394 assert(!PyStackRef_IsNull(_close_tmp)); \
395- if (!PyStackRef_IsDeferred (_close_tmp)) { \
395+ if (!PyStackRef_IsDeferredOrTaggedInt (_close_tmp)) { \
396396 Py_DECREF(PyStackRef_AsPyObjectBorrow(_close_tmp)); \
397397 } \
398398 } while (0)
@@ -704,23 +704,20 @@ PyStackRef_TYPE(_PyStackRef stackref) {
704704
705705// StackRef type checks
706706
707- static inline bool
708- PyStackRef_GenCheck (_PyStackRef stackref )
709- {
710- if (PyStackRef_IsTaggedInt (stackref )) {
711- return false;
707+ #define STACKREF_CHECK_FUNC (T ) \
708+ static inline bool \
709+ PyStackRef_ ## T ## Check(_PyStackRef stackref) { \
710+ if (PyStackRef_IsTaggedInt(stackref)) { \
711+ return false; \
712+ } \
713+ return Py ## T ## _Check(PyStackRef_AsPyObjectBorrow(stackref)); \
712714 }
713- return PyGen_Check (PyStackRef_AsPyObjectBorrow (stackref ));
714- }
715715
716- static inline bool
717- PyStackRef_BoolCheck (_PyStackRef stackref )
718- {
719- if (PyStackRef_IsTaggedInt (stackref )) {
720- return false;
721- }
722- return PyBool_Check (PyStackRef_AsPyObjectBorrow (stackref ));
723- }
716+ STACKREF_CHECK_FUNC (Gen )
717+ STACKREF_CHECK_FUNC (Bool )
718+ STACKREF_CHECK_FUNC (ExceptionInstance )
719+ STACKREF_CHECK_FUNC (Code )
720+ STACKREF_CHECK_FUNC (Function )
724721
725722static inline bool
726723PyStackRef_LongCheck (_PyStackRef stackref )
@@ -731,33 +728,6 @@ PyStackRef_LongCheck(_PyStackRef stackref)
731728 return PyLong_Check (PyStackRef_AsPyObjectBorrow (stackref ));
732729}
733730
734- static inline bool
735- PyStackRef_ExceptionInstanceCheck (_PyStackRef stackref )
736- {
737- if (PyStackRef_IsTaggedInt (stackref )) {
738- return false;
739- }
740- return PyExceptionInstance_Check (PyStackRef_AsPyObjectBorrow (stackref ));
741- }
742-
743- static inline bool
744- PyStackRef_CodeCheck (_PyStackRef stackref )
745- {
746- if (PyStackRef_IsTaggedInt (stackref )) {
747- return false;
748- }
749- return PyCode_Check (PyStackRef_AsPyObjectBorrow (stackref ));
750- }
751-
752- static inline bool
753- PyStackRef_FunctionCheck (_PyStackRef stackref )
754- {
755- if (PyStackRef_IsTaggedInt (stackref )) {
756- return false;
757- }
758- return PyFunction_Check (PyStackRef_AsPyObjectBorrow (stackref ));
759- }
760-
761731static inline void
762732_PyThreadState_PushCStackRef (PyThreadState * tstate , _PyCStackRef * ref )
763733{
0 commit comments