Commit b525cf34 authored by Stefan Behnel's avatar Stefan Behnel

simplify PyLong unpacking code, knowing that max(digit) << max(long)

parent 7a00b931
...@@ -1412,11 +1412,7 @@ static CYTHON_INLINE %(type)s __Pyx_PyInt_As%(SignWord)s%(TypeName)s(PyObject* x ...@@ -1412,11 +1412,7 @@ static CYTHON_INLINE %(type)s __Pyx_PyInt_As%(SignWord)s%(TypeName)s(PyObject* x
#if CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3 #if CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3
switch (Py_SIZE(x)) { switch (Py_SIZE(x)) {
case 0: return 0; case 0: return 0;
case 1: { case 1: return (%(type)s) ((PyLongObject*)x)->ob_digit[0];
digit d = ((PyLongObject*)x)->ob_digit[0];
if (sizeof(digit) < sizeof(%(type)s) || likely(d == (digit)(%(type)s)d))
return (%(type)s)d;
}
} }
#endif #endif
return (%(type)s)PyLong_AsUnsigned%(TypeName)s(x); return (%(type)s)PyLong_AsUnsigned%(TypeName)s(x);
...@@ -1424,16 +1420,8 @@ static CYTHON_INLINE %(type)s __Pyx_PyInt_As%(SignWord)s%(TypeName)s(PyObject* x ...@@ -1424,16 +1420,8 @@ static CYTHON_INLINE %(type)s __Pyx_PyInt_As%(SignWord)s%(TypeName)s(PyObject* x
#if CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3 #if CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3
switch (Py_SIZE(x)) { switch (Py_SIZE(x)) {
case 0: return 0; case 0: return 0;
case 1: { case 1: return +(%(type)s) ((PyLongObject*)x)->ob_digit[0];
digit d = ((PyLongObject*)x)->ob_digit[0]; case -1: return -(%(type)s) ((PyLongObject*)x)->ob_digit[0];
if (sizeof(digit) < sizeof(%(type)s) || likely((((%(type)s)d) > 0) && (d == (digit)(%(type)s)d)))
return (%(type)s)d;
}
case -1: {
digit d = ((PyLongObject*)x)->ob_digit[0];
if (sizeof(digit) < sizeof(%(type)s) || likely((((%(type)s)d) > 0) && (d == (digit)(%(type)s)d)))
return -(%(type)s)d;
}
} }
#endif #endif
return (%(type)s)PyLong_As%(TypeName)s(x); return (%(type)s)PyLong_As%(TypeName)s(x);
......
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