From ef1b88bf57aae93893d55f1b9c9639dbe9cc7786 Mon Sep 17 00:00:00 2001 From: Sergey Fedoseev Date: Thu, 21 Feb 2019 11:51:52 +0500 Subject: bpo-36062: Minor speed-up for list slicing and copying. (GH-11967) --- Objects/listobject.c | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) (limited to 'Objects/listobject.c') diff --git a/Objects/listobject.c b/Objects/listobject.c index e11a3fdd13..a08b3b50dd 100644 --- a/Objects/listobject.c +++ b/Objects/listobject.c @@ -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); } -- cgit v1.2.1