diff options
author | Sergey Fedoseev <fedoseev.sergey@gmail.com> | 2019-02-21 06:51:52 (GMT) |
---|---|---|
committer | Serhiy Storchaka <storchaka@gmail.com> | 2019-02-21 06:51:52 (GMT) |
commit | ef1b88bf57aae93893d55f1b9c9639dbe9cc7786 (patch) | |
tree | 8eba1fccd1929209ff0c97067b550e7c6f2d12ad | |
parent | d9bc543cbb9681f77d94864d05e2ba2d353e6de9 (diff) | |
download | cpython-ef1b88bf57aae93893d55f1b9c9639dbe9cc7786.zip cpython-ef1b88bf57aae93893d55f1b9c9639dbe9cc7786.tar.gz cpython-ef1b88bf57aae93893d55f1b9c9639dbe9cc7786.tar.bz2 |
bpo-36062: Minor speed-up for list slicing and copying. (GH-11967)
-rw-r--r-- | Objects/listobject.c | 20 |
1 files changed, 12 insertions, 8 deletions
diff --git a/Objects/listobject.c b/Objects/listobject.c index e11a3fd..a08b3b5 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); } |