return _Py_stackref_get_object(ref) == Py_None;
}
+static inline bool
+PyStackRef_IsTaggedInt(_PyStackRef ref)
+{
+ return (ref.index & 1) == 1;
+}
+
static inline PyObject *
_PyStackRef_AsPyObjectBorrow(_PyStackRef ref, const char *filename, int linenumber)
{
- assert((ref.index & 1) == 0);
+ assert(!PyStackRef_IsTaggedInt(ref));
_Py_stackref_record_borrow(ref, filename, linenumber);
return _Py_stackref_get_object(ref);
}
}
#define PyStackRef_FromPyObjectImmortal(obj) _PyStackRef_FromPyObjectImmortal(_PyObject_CAST(obj), __FILE__, __LINE__)
-static inline bool
-PyStackRef_IsTaggedInt(_PyStackRef ref)
-{
- return (ref.index & 1) == 1;
-}
-
static inline void
_PyStackRef_CLOSE(_PyStackRef ref, const char *filename, int linenumber)
{
static inline intptr_t
PyStackRef_UntagInt(_PyStackRef i)
{
- assert((i.bits & Py_INT_TAG) == Py_INT_TAG);
+ assert(PyStackRef_IsTaggedInt(i));
intptr_t val = (intptr_t)i.bits;
return Py_ARITHMETIC_RIGHT_SHIFT(intptr_t, val, 2);
}
static inline PyObject *
PyStackRef_AsPyObjectBorrow(_PyStackRef stackref)
{
+ assert(!PyStackRef_IsTaggedInt(stackref));
PyObject *cleared = ((PyObject *)((stackref).bits & (~Py_TAG_BITS)));
return cleared;
}