diff options
author | Matti Picus <matti.picus@gmail.com> | 2021-12-21 22:49:37 +0200 |
---|---|---|
committer | Stefan Behnel <stefan_ml@behnel.de> | 2021-12-21 21:55:11 +0100 |
commit | af5b1ce600f096bffda790c75b89a99e55b78522 (patch) | |
tree | ed658e5bddd3bba770350b137897922192469dfe | |
parent | 3028e8c7ac296bc848d996e397c3354b3dbbd431 (diff) | |
download | cython-af5b1ce600f096bffda790c75b89a99e55b78522.tar.gz |
Guard uses of tp_pypy_flags and tp_vectorcall on PyPy (GH-4509)
For PyPy3.8 (the current release is 7.3.7)
* PyPy<7.3.8 declares a struct with the last fields tp_finalize, tp_print, tp_pypy_flags
* PyPy>=7.3.8 will declare a struct with the last fields tp_finalize, tp_vectorcall, tp_print
PyPy3.9 (not yet released) will declare a struct with the last fields tp_finalize, tp_vectorcall, tp_pypy_flags
See https://foss.heptapod.net/pypy/pypy/-/issues/3618
-rw-r--r-- | Cython/Compiler/TypeSlots.py | 4 | ||||
-rw-r--r-- | Cython/Utility/AsyncGen.c | 16 | ||||
-rw-r--r-- | Cython/Utility/Coroutine.c | 16 | ||||
-rw-r--r-- | Cython/Utility/CythonFunction.c | 8 |
4 files changed, 22 insertions, 22 deletions
diff --git a/Cython/Compiler/TypeSlots.py b/Cython/Compiler/TypeSlots.py index ce945b589..d28d9644f 100644 --- a/Cython/Compiler/TypeSlots.py +++ b/Cython/Compiler/TypeSlots.py @@ -888,10 +888,10 @@ slot_table = ( EmptySlot("tp_del"), EmptySlot("tp_version_tag"), EmptySlot("tp_finalize", ifdef="PY_VERSION_HEX >= 0x030400a1"), - EmptySlot("tp_vectorcall", ifdef="PY_VERSION_HEX >= 0x030800b1"), + EmptySlot("tp_vectorcall", ifdef="PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)"), EmptySlot("tp_print", ifdef="PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000"), # PyPy specific extension - only here to avoid C compiler warnings. - EmptySlot("tp_pypy_flags", ifdef="CYTHON_COMPILING_IN_PYPY && PYPY_VERSION_NUM+0 >= 0x06000000"), + EmptySlot("tp_pypy_flags", ifdef="CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX > 0x03080000"), ) #------------------------------------------------------------------------------------------ diff --git a/Cython/Utility/AsyncGen.c b/Cython/Utility/AsyncGen.c index 8165008fe..6c6f11321 100644 --- a/Cython/Utility/AsyncGen.c +++ b/Cython/Utility/AsyncGen.c @@ -421,13 +421,13 @@ static PyTypeObject __pyx_AsyncGenType_type = { #elif PY_VERSION_HEX >= 0x030400a1 0, /* tp_finalize */ #endif -#if PY_VERSION_HEX >= 0x030800b1 +#if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) 0, /*tp_vectorcall*/ #endif #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000 0, /*tp_print*/ #endif -#if CYTHON_COMPILING_IN_PYPY && PYPY_VERSION_NUM+0 >= 0x06000000 +#if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX > 0x03080000 0, /*tp_pypy_flags*/ #endif }; @@ -659,13 +659,13 @@ static PyTypeObject __pyx__PyAsyncGenASendType_type = { #if PY_VERSION_HEX >= 0x030400a1 0, /* tp_finalize */ #endif -#if PY_VERSION_HEX >= 0x030800b1 +#if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) 0, /*tp_vectorcall*/ #endif #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000 0, /*tp_print*/ #endif -#if CYTHON_COMPILING_IN_PYPY && PYPY_VERSION_NUM+0 >= 0x06000000 +#if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX > 0x03080000 0, /*tp_pypy_flags*/ #endif }; @@ -777,13 +777,13 @@ static PyTypeObject __pyx__PyAsyncGenWrappedValueType_type = { #if PY_VERSION_HEX >= 0x030400a1 0, /* tp_finalize */ #endif -#if PY_VERSION_HEX >= 0x030800b1 +#if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) 0, /*tp_vectorcall*/ #endif #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000 0, /*tp_print*/ #endif -#if CYTHON_COMPILING_IN_PYPY && PYPY_VERSION_NUM+0 >= 0x06000000 +#if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX > 0x03080000 0, /*tp_pypy_flags*/ #endif }; @@ -1065,13 +1065,13 @@ static PyTypeObject __pyx__PyAsyncGenAThrowType_type = { #if PY_VERSION_HEX >= 0x030400a1 0, /* tp_finalize */ #endif -#if PY_VERSION_HEX >= 0x030800b1 +#if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) 0, /*tp_vectorcall*/ #endif #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000 0, /*tp_print*/ #endif -#if CYTHON_COMPILING_IN_PYPY && PYPY_VERSION_NUM+0 >= 0x06000000 +#if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX > 0x03080000 0, /*tp_pypy_flags*/ #endif }; diff --git a/Cython/Utility/Coroutine.c b/Cython/Utility/Coroutine.c index 812f9a1b3..a428ea92c 100644 --- a/Cython/Utility/Coroutine.c +++ b/Cython/Utility/Coroutine.c @@ -1557,13 +1557,13 @@ static PyTypeObject __pyx_CoroutineAwaitType_type = { #if PY_VERSION_HEX >= 0x030400a1 0, /*tp_finalize*/ #endif -#if PY_VERSION_HEX >= 0x030800b1 +#if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) 0, /*tp_vectorcall*/ #endif #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000 0, /*tp_print*/ #endif -#if CYTHON_COMPILING_IN_PYPY && PYPY_VERSION_NUM+0 >= 0x06000000 +#if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX > 0x03080000 0, /*tp_pypy_flags*/ #endif }; @@ -1717,13 +1717,13 @@ static PyTypeObject __pyx_CoroutineType_type = { #elif PY_VERSION_HEX >= 0x030400a1 0, /*tp_finalize*/ #endif -#if PY_VERSION_HEX >= 0x030800b1 +#if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) 0, /*tp_vectorcall*/ #endif #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000 0, /*tp_print*/ #endif -#if CYTHON_COMPILING_IN_PYPY && PYPY_VERSION_NUM+0 >= 0x06000000 +#if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX > 0x03080000 0, /*tp_pypy_flags*/ #endif }; @@ -1831,13 +1831,13 @@ static PyTypeObject __pyx_IterableCoroutineType_type = { #if PY_VERSION_HEX >= 0x030400a1 __Pyx_Coroutine_del, /*tp_finalize*/ #endif -#if PY_VERSION_HEX >= 0x030800b1 +#if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) 0, /*tp_vectorcall*/ #endif #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000 0, /*tp_print*/ #endif -#if CYTHON_COMPILING_IN_PYPY && PYPY_VERSION_NUM+0 >= 0x06000000 +#if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX > 0x03080000 0, /*tp_pypy_flags*/ #endif }; @@ -1942,13 +1942,13 @@ static PyTypeObject __pyx_GeneratorType_type = { #elif PY_VERSION_HEX >= 0x030400a1 0, /*tp_finalize*/ #endif -#if PY_VERSION_HEX >= 0x030800b1 +#if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) 0, /*tp_vectorcall*/ #endif #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000 0, /*tp_print*/ #endif -#if CYTHON_COMPILING_IN_PYPY && PYPY_VERSION_NUM+0 >= 0x06000000 +#if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX > 0x03080000 0, /*tp_pypy_flags*/ #endif }; diff --git a/Cython/Utility/CythonFunction.c b/Cython/Utility/CythonFunction.c index 09064cf97..9ea62b4e2 100644 --- a/Cython/Utility/CythonFunction.c +++ b/Cython/Utility/CythonFunction.c @@ -730,13 +730,13 @@ static PyTypeObject __pyx_CyFunctionType_type = { #if PY_VERSION_HEX >= 0x030400a1 0, /*tp_finalize*/ #endif -#if PY_VERSION_HEX >= 0x030800b1 +#if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) 0, /*tp_vectorcall*/ #endif #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000 0, /*tp_print*/ #endif -#if CYTHON_COMPILING_IN_PYPY && PYPY_VERSION_NUM+0 >= 0x06000000 +#if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX > 0x03080000 0, /*tp_pypy_flags*/ #endif }; @@ -1262,13 +1262,13 @@ static PyTypeObject __pyx_FusedFunctionType_type = { #if PY_VERSION_HEX >= 0x030400a1 0, /*tp_finalize*/ #endif -#if PY_VERSION_HEX >= 0x030800b1 +#if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) 0, /*tp_vectorcall*/ #endif #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000 0, /*tp_print*/ #endif -#if CYTHON_COMPILING_IN_PYPY && PYPY_VERSION_NUM+0 >= 0x06000000 +#if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX > 0x03080000 0, /*tp_pypy_flags*/ #endif }; |