Commit 188ca7f9 authored by Stefan Behnel's avatar Stefan Behnel

Add __Pyx_IS_TYPE() macro to mimic the new "Py_IS_TYPE()" macro in CPython 3.9...

Add __Pyx_IS_TYPE() macro to mimic the new "Py_IS_TYPE()" macro in CPython 3.9 that replaces the "Py_TYPE() == …" type check pattern.
parent e7ff9bb5
...@@ -5166,7 +5166,7 @@ class CClassDefNode(ClassDefNode): ...@@ -5166,7 +5166,7 @@ class CClassDefNode(ClassDefNode):
func.name, func.name,
code.error_goto_if_null('wrapper', entry.pos))) code.error_goto_if_null('wrapper', entry.pos)))
code.putln( code.putln(
"if (Py_TYPE(wrapper) == &PyWrapperDescr_Type) {") "if (__Pyx_IS_TYPE(wrapper, &PyWrapperDescr_Type)) {")
code.putln( code.putln(
"%s = *((PyWrapperDescrObject *)wrapper)->d_base;" % ( "%s = *((PyWrapperDescrObject *)wrapper)->d_base;" % (
func.wrapperbase_cname)) func.wrapperbase_cname))
......
...@@ -19,11 +19,11 @@ static PyTypeObject *__pyx__PyAsyncGenASendType = 0; ...@@ -19,11 +19,11 @@ static PyTypeObject *__pyx__PyAsyncGenASendType = 0;
static PyTypeObject *__pyx__PyAsyncGenAThrowType = 0; static PyTypeObject *__pyx__PyAsyncGenAThrowType = 0;
static PyTypeObject *__pyx_AsyncGenType = 0; static PyTypeObject *__pyx_AsyncGenType = 0;
#define __Pyx_AsyncGen_CheckExact(obj) (Py_TYPE(obj) == __pyx_AsyncGenType) #define __Pyx_AsyncGen_CheckExact(obj) __Pyx_IS_TYPE(obj, __pyx_AsyncGenType)
#define __pyx_PyAsyncGenASend_CheckExact(o) \ #define __pyx_PyAsyncGenASend_CheckExact(o) \
(Py_TYPE(o) == __pyx__PyAsyncGenASendType) __Pyx_IS_TYPE(o, __pyx__PyAsyncGenASendType)
#define __pyx_PyAsyncGenAThrow_CheckExact(o) \ #define __pyx_PyAsyncGenAThrow_CheckExact(o) \
(Py_TYPE(o) == __pyx__PyAsyncGenAThrowType) __Pyx_IS_TYPE(o, __pyx__PyAsyncGenAThrowType)
static PyObject *__Pyx_async_gen_anext(PyObject *o); static PyObject *__Pyx_async_gen_anext(PyObject *o);
static CYTHON_INLINE PyObject *__Pyx_async_gen_asend_iternext(PyObject *o); static CYTHON_INLINE PyObject *__Pyx_async_gen_asend_iternext(PyObject *o);
...@@ -182,7 +182,7 @@ static __pyx_PyAsyncGenASend *__Pyx_ag_asend_freelist[_PyAsyncGen_MAXFREELIST]; ...@@ -182,7 +182,7 @@ static __pyx_PyAsyncGenASend *__Pyx_ag_asend_freelist[_PyAsyncGen_MAXFREELIST];
static int __Pyx_ag_asend_freelist_free = 0; static int __Pyx_ag_asend_freelist_free = 0;
#define __pyx__PyAsyncGenWrappedValue_CheckExact(o) \ #define __pyx__PyAsyncGenWrappedValue_CheckExact(o) \
(Py_TYPE(o) == __pyx__PyAsyncGenWrappedValueType) __Pyx_IS_TYPE(o, __pyx__PyAsyncGenWrappedValueType)
static int static int
...@@ -449,7 +449,7 @@ __Pyx_PyAsyncGen_ClearFreeLists(void) ...@@ -449,7 +449,7 @@ __Pyx_PyAsyncGen_ClearFreeLists(void)
while (__Pyx_ag_asend_freelist_free) { while (__Pyx_ag_asend_freelist_free) {
__pyx_PyAsyncGenASend *o; __pyx_PyAsyncGenASend *o;
o = __Pyx_ag_asend_freelist[--__Pyx_ag_asend_freelist_free]; o = __Pyx_ag_asend_freelist[--__Pyx_ag_asend_freelist_free];
assert(Py_TYPE(o) == __pyx__PyAsyncGenASendType); assert(__Pyx_IS_TYPE(o, __pyx__PyAsyncGenASendType));
PyObject_GC_Del(o); PyObject_GC_Del(o);
} }
......
...@@ -440,10 +440,10 @@ static CYTHON_INLINE void __Pyx_Coroutine_ResetFrameBackpointer(__Pyx_ExcInfoStr ...@@ -440,10 +440,10 @@ static CYTHON_INLINE void __Pyx_Coroutine_ResetFrameBackpointer(__Pyx_ExcInfoStr
#define __Pyx_Coroutine_USED #define __Pyx_Coroutine_USED
static PyTypeObject *__pyx_CoroutineType = 0; static PyTypeObject *__pyx_CoroutineType = 0;
static PyTypeObject *__pyx_CoroutineAwaitType = 0; static PyTypeObject *__pyx_CoroutineAwaitType = 0;
#define __Pyx_Coroutine_CheckExact(obj) (Py_TYPE(obj) == __pyx_CoroutineType) #define __Pyx_Coroutine_CheckExact(obj) __Pyx_IS_TYPE(obj, __pyx_CoroutineType)
// __Pyx_Coroutine_Check(obj): see override for IterableCoroutine below // __Pyx_Coroutine_Check(obj): see override for IterableCoroutine below
#define __Pyx_Coroutine_Check(obj) __Pyx_Coroutine_CheckExact(obj) #define __Pyx_Coroutine_Check(obj) __Pyx_Coroutine_CheckExact(obj)
#define __Pyx_CoroutineAwait_CheckExact(obj) (Py_TYPE(obj) == __pyx_CoroutineAwaitType) #define __Pyx_CoroutineAwait_CheckExact(obj) __Pyx_IS_TYPE(obj, __pyx_CoroutineAwaitType)
#define __Pyx_Coroutine_New(body, code, closure, name, qualname, module_name) \ #define __Pyx_Coroutine_New(body, code, closure, name, qualname, module_name) \
__Pyx__Coroutine_New(__pyx_CoroutineType, body, code, closure, name, qualname, module_name) __Pyx__Coroutine_New(__pyx_CoroutineType, body, code, closure, name, qualname, module_name)
...@@ -464,7 +464,7 @@ static PyObject *__Pyx_CoroutineAwait_Throw(__pyx_CoroutineAwaitObject *self, Py ...@@ -464,7 +464,7 @@ static PyObject *__Pyx_CoroutineAwait_Throw(__pyx_CoroutineAwaitObject *self, Py
#define __Pyx_Generator_USED #define __Pyx_Generator_USED
static PyTypeObject *__pyx_GeneratorType = 0; static PyTypeObject *__pyx_GeneratorType = 0;
#define __Pyx_Generator_CheckExact(obj) (Py_TYPE(obj) == __pyx_GeneratorType) #define __Pyx_Generator_CheckExact(obj) __Pyx_IS_TYPE(obj, __pyx_GeneratorType)
#define __Pyx_Generator_New(body, code, closure, name, qualname, module_name) \ #define __Pyx_Generator_New(body, code, closure, name, qualname, module_name) \
__Pyx__Coroutine_New(__pyx_GeneratorType, body, code, closure, name, qualname, module_name) __Pyx__Coroutine_New(__pyx_GeneratorType, body, code, closure, name, qualname, module_name)
...@@ -522,7 +522,7 @@ static int __Pyx_PyGen__FetchStopIterationValue(CYTHON_UNUSED PyThreadState *$lo ...@@ -522,7 +522,7 @@ static int __Pyx_PyGen__FetchStopIterationValue(CYTHON_UNUSED PyThreadState *$lo
value = Py_None; value = Py_None;
} }
#if PY_VERSION_HEX >= 0x030300A0 #if PY_VERSION_HEX >= 0x030300A0
else if (Py_TYPE(ev) == (PyTypeObject*)PyExc_StopIteration) { else if (__Pyx_IS_TYPE(ev, (PyTypeObject*)PyExc_StopIteration)) {
value = ((PyStopIterationObject *)ev)->value; value = ((PyStopIterationObject *)ev)->value;
Py_INCREF(value); Py_INCREF(value);
Py_DECREF(ev); Py_DECREF(ev);
...@@ -1715,7 +1715,7 @@ static int __pyx_Coroutine_init(void) { ...@@ -1715,7 +1715,7 @@ static int __pyx_Coroutine_init(void) {
static PyTypeObject *__pyx_IterableCoroutineType = 0; static PyTypeObject *__pyx_IterableCoroutineType = 0;
#undef __Pyx_Coroutine_Check #undef __Pyx_Coroutine_Check
#define __Pyx_Coroutine_Check(obj) (__Pyx_Coroutine_CheckExact(obj) || (Py_TYPE(obj) == __pyx_IterableCoroutineType)) #define __Pyx_Coroutine_Check(obj) (__Pyx_Coroutine_CheckExact(obj) || __Pyx_IS_TYPE(obj, __pyx_IterableCoroutineType))
#define __Pyx_IterableCoroutine_New(body, code, closure, name, qualname, module_name) \ #define __Pyx_IterableCoroutine_New(body, code, closure, name, qualname, module_name) \
__Pyx__Coroutine_New(__pyx_IterableCoroutineType, body, code, closure, name, qualname, module_name) __Pyx__Coroutine_New(__pyx_IterableCoroutineType, body, code, closure, name, qualname, module_name)
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
#define __Pyx_ArgTypeTest(obj, type, none_allowed, name, exact) \ #define __Pyx_ArgTypeTest(obj, type, none_allowed, name, exact) \
((likely((Py_TYPE(obj) == type) | (none_allowed && (obj == Py_None)))) ? 1 : \ ((likely(__Pyx_IS_TYPE(obj, type) | (none_allowed && (obj == Py_None)))) ? 1 : \
__Pyx__ArgTypeTest(obj, type, name, exact)) __Pyx__ArgTypeTest(obj, type, name, exact))
static int __Pyx__ArgTypeTest(PyObject *obj, PyTypeObject *type, const char *name, int exact); /*proto*/ static int __Pyx__ArgTypeTest(PyObject *obj, PyTypeObject *type, const char *name, int exact); /*proto*/
......
...@@ -484,6 +484,12 @@ class __Pyx_FakeReference { ...@@ -484,6 +484,12 @@ class __Pyx_FakeReference {
#endif #endif
#endif #endif
#if PY_VERSION_HEX >= 0x030900A4 || defined(Py_IS_TYPE)
#define __Pyx_IS_TYPE(ob, type) Py_IS_TYPE(ob, type)
#else
#define __Pyx_IS_TYPE(ob, type) (((const PyObject*)ob)->ob_type == (type))
#endif
#ifndef Py_TPFLAGS_CHECKTYPES #ifndef Py_TPFLAGS_CHECKTYPES
#define Py_TPFLAGS_CHECKTYPES 0 #define Py_TPFLAGS_CHECKTYPES 0
#endif #endif
...@@ -775,7 +781,7 @@ static CYTHON_INLINE PyObject * __Pyx_PyDict_GetItemStrWithError(PyObject *dict, ...@@ -775,7 +781,7 @@ static CYTHON_INLINE PyObject * __Pyx_PyDict_GetItemStrWithError(PyObject *dict,
#endif #endif
#ifndef PySet_CheckExact #ifndef PySet_CheckExact
#define PySet_CheckExact(obj) (Py_TYPE(obj) == &PySet_Type) #define PySet_CheckExact(obj) __Pyx_IS_TYPE(obj, &PySet_Type)
#endif #endif
#if CYTHON_ASSUME_SAFE_MACROS #if CYTHON_ASSUME_SAFE_MACROS
......
...@@ -1571,9 +1571,9 @@ static int __Pyx_PyObject_GetMethod(PyObject *obj, PyObject *name, PyObject **me ...@@ -1571,9 +1571,9 @@ static int __Pyx_PyObject_GetMethod(PyObject *obj, PyObject *name, PyObject **me
#elif PY_MAJOR_VERSION >= 3 #elif PY_MAJOR_VERSION >= 3
// Repeating the condition below accommodates for MSVC's inability to test macros inside of macro expansions. // Repeating the condition below accommodates for MSVC's inability to test macros inside of macro expansions.
#ifdef __Pyx_CyFunction_USED #ifdef __Pyx_CyFunction_USED
if (likely(PyFunction_Check(descr) || (Py_TYPE(descr) == &PyMethodDescr_Type) || __Pyx_CyFunction_Check(descr))) if (likely(PyFunction_Check(descr) || __Pyx_IS_TYPE(descr, &PyMethodDescr_Type) || __Pyx_CyFunction_Check(descr)))
#else #else
if (likely(PyFunction_Check(descr) || (Py_TYPE(descr) == &PyMethodDescr_Type))) if (likely(PyFunction_Check(descr) || __Pyx_IS_TYPE(descr, &PyMethodDescr_Type)))
#endif #endif
#else #else
// "PyMethodDescr_Type" is not part of the C-API in Py2. // "PyMethodDescr_Type" is not part of the C-API in Py2.
...@@ -1936,7 +1936,7 @@ static CYTHON_INLINE PyObject* __Pyx_PyObject_FastCall(PyObject *func, PyObject ...@@ -1936,7 +1936,7 @@ static CYTHON_INLINE PyObject* __Pyx_PyObject_FastCall(PyObject *func, PyObject
if (PyCFunction_Check(func)) { if (PyCFunction_Check(func)) {
return _PyCFunction_FastCallKeywords(func, args, nargs, NULL); return _PyCFunction_FastCallKeywords(func, args, nargs, NULL);
} }
if (Py_TYPE(func) == &PyMethodDescr_Type) { if (__Pyx_IS_TYPE(func, &PyMethodDescr_Type)) {
return _PyMethodDescr_FastCallKeywords(func, args, nargs, NULL); return _PyMethodDescr_FastCallKeywords(func, args, nargs, NULL);
} }
#elif CYTHON_FAST_PYCCALL #elif CYTHON_FAST_PYCCALL
...@@ -1958,7 +1958,7 @@ static CYTHON_INLINE PyObject* __Pyx_PyObject_FastCall(PyObject *func, PyObject ...@@ -1958,7 +1958,7 @@ static CYTHON_INLINE PyObject* __Pyx_PyObject_FastCall(PyObject *func, PyObject
} }
#elif __Pyx_CyFunction_USED && CYTHON_BACKPORT_VECTORCALL #elif __Pyx_CyFunction_USED && CYTHON_BACKPORT_VECTORCALL
// exclude fused functions for now // exclude fused functions for now
if (Py_TYPE(func) == __pyx_CyFunctionType) { if (__Pyx_IS_TYPE(func, __pyx_CyFunctionType)) {
__pyx_vectorcallfunc f = __Pyx_CyFunction_func_vectorcall(func); __pyx_vectorcallfunc f = __Pyx_CyFunction_func_vectorcall(func);
if (f) return f(func, args, nargs, NULL); if (f) return f(func, args, nargs, NULL);
} }
......
...@@ -94,7 +94,7 @@ static CYTHON_INLINE PyObject* __Pyx_PyList_Pop(PyObject* L); /*proto*/ ...@@ -94,7 +94,7 @@ static CYTHON_INLINE PyObject* __Pyx_PyList_Pop(PyObject* L); /*proto*/
//@requires: ObjectHandling.c::PyObjectCallMethod0 //@requires: ObjectHandling.c::PyObjectCallMethod0
static CYTHON_INLINE PyObject* __Pyx__PyObject_Pop(PyObject* L) { static CYTHON_INLINE PyObject* __Pyx__PyObject_Pop(PyObject* L) {
if (Py_TYPE(L) == &PySet_Type) { if (__Pyx_IS_TYPE(L, &PySet_Type)) {
return PySet_Pop(L); return PySet_Pop(L);
} }
return __Pyx_PyObject_CallMethod0(L, PYIDENT("pop")); return __Pyx_PyObject_CallMethod0(L, PYIDENT("pop"));
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment