bpo-36062: Minor speed-up for list slicing and copying. (GH-11967)

This commit is contained in:
Sergey Fedoseev 2019-02-21 11:51:52 +05:00 committed by Serhiy Storchaka
parent d9bc543cbb
commit ef1b88bf57
1 changed files with 12 additions and 8 deletions

View File

@ -476,14 +476,6 @@ list_slice(PyListObject *a, Py_ssize_t ilow, Py_ssize_t ihigh)
PyListObject *np;
PyObject **src, **dest;
Py_ssize_t i, len;
if (ilow < 0)
ilow = 0;
else if (ilow > Py_SIZE(a))
ilow = Py_SIZE(a);
if (ihigh < ilow)
ihigh = ilow;
else if (ihigh > Py_SIZE(a))
ihigh = Py_SIZE(a);
len = ihigh - ilow;
np = (PyListObject *) list_new_prealloc(len);
if (np == NULL)
@ -507,6 +499,18 @@ PyList_GetSlice(PyObject *a, Py_ssize_t ilow, Py_ssize_t ihigh)
PyErr_BadInternalCall();
return NULL;
}
if (ilow < 0) {
ilow = 0;
}
else if (ilow > Py_SIZE(a)) {
ilow = Py_SIZE(a);
}
if (ihigh < ilow) {
ihigh = ilow;
}
else if (ihigh > Py_SIZE(a)) {
ihigh = Py_SIZE(a);
}
return list_slice((PyListObject *)a, ilow, ihigh);
}