@@ -95,10 +95,16 @@ PyStackRef_IsNone(_PyStackRef ref)
95
95
return _Py_stackref_get_object (ref ) == Py_None ;
96
96
}
97
97
98
+ static inline bool
99
+ PyStackRef_IsTaggedInt (_PyStackRef ref )
100
+ {
101
+ return (ref .index & 1 ) == 1 ;
102
+ }
103
+
98
104
static inline PyObject *
99
105
_PyStackRef_AsPyObjectBorrow (_PyStackRef ref , const char * filename , int linenumber )
100
106
{
101
- assert ((ref . index & 1 ) == 0 );
107
+ assert (! PyStackRef_IsTaggedInt (ref ) );
102
108
_Py_stackref_record_borrow (ref , filename , linenumber );
103
109
return _Py_stackref_get_object (ref );
104
110
}
@@ -135,12 +141,6 @@ _PyStackRef_FromPyObjectImmortal(PyObject *obj, const char *filename, int linenu
135
141
}
136
142
#define PyStackRef_FromPyObjectImmortal (obj ) _PyStackRef_FromPyObjectImmortal(_PyObject_CAST(obj), __FILE__, __LINE__)
137
143
138
- static inline bool
139
- PyStackRef_IsTaggedInt (_PyStackRef ref )
140
- {
141
- return (ref .index & 1 ) == 1 ;
142
- }
143
-
144
144
static inline void
145
145
_PyStackRef_CLOSE (_PyStackRef ref , const char * filename , int linenumber )
146
146
{
@@ -256,7 +256,7 @@ PyStackRef_TagInt(intptr_t i)
256
256
static inline intptr_t
257
257
PyStackRef_UntagInt (_PyStackRef i )
258
258
{
259
- assert (( i . bits & Py_INT_TAG ) == Py_INT_TAG );
259
+ assert (PyStackRef_IsTaggedInt ( i ) );
260
260
intptr_t val = (intptr_t )i .bits ;
261
261
return Py_ARITHMETIC_RIGHT_SHIFT (intptr_t , val , 2 );
262
262
}
@@ -286,6 +286,7 @@ static const _PyStackRef PyStackRef_NULL = { .bits = Py_TAG_DEFERRED};
286
286
static inline PyObject *
287
287
PyStackRef_AsPyObjectBorrow (_PyStackRef stackref )
288
288
{
289
+ assert (!PyStackRef_IsTaggedInt (stackref ));
289
290
PyObject * cleared = ((PyObject * )((stackref ).bits & (~Py_TAG_BITS )));
290
291
return cleared ;
291
292
}
0 commit comments