[Python-checkins] cpython: Hoist constant expression out of an inner loop

raymond.hettinger python-checkins at python.org
Sat Sep 19 08:21:39 CEST 2015


https://hg.python.org/cpython/rev/fb9d0fffb494
changeset:   98065:fb9d0fffb494
user:        Raymond Hettinger <python at rcn.com>
date:        Sat Sep 19 00:21:33 2015 -0600
summary:
  Hoist constant expression out of an inner loop

files:
  Modules/_collectionsmodule.c |  8 ++++++--
  1 files changed, 6 insertions(+), 2 deletions(-)


diff --git a/Modules/_collectionsmodule.c b/Modules/_collectionsmodule.c
--- a/Modules/_collectionsmodule.c
+++ b/Modules/_collectionsmodule.c
@@ -371,6 +371,7 @@
 deque_extend(dequeobject *deque, PyObject *iterable)
 {
     PyObject *it, *item;
+    int trim = (deque->maxlen != -1);
 
     /* Handle case where id(deque) == id(iterable) */
     if ((PyObject *)deque == iterable) {
@@ -417,7 +418,8 @@
         Py_SIZE(deque)++;
         deque->rightindex++;
         deque->rightblock->data[deque->rightindex] = item;
-        deque_trim_left(deque);
+        if (trim)
+            deque_trim_left(deque);
     }
     if (PyErr_Occurred()) {
         Py_DECREF(it);
@@ -434,6 +436,7 @@
 deque_extendleft(dequeobject *deque, PyObject *iterable)
 {
     PyObject *it, *item;
+    int trim = (deque->maxlen != -1);
 
     /* Handle case where id(deque) == id(iterable) */
     if ((PyObject *)deque == iterable) {
@@ -480,7 +483,8 @@
         Py_SIZE(deque)++;
         deque->leftindex--;
         deque->leftblock->data[deque->leftindex] = item;
-        deque_trim_right(deque);
+        if (trim)
+            deque_trim_right(deque);
     }
     if (PyErr_Occurred()) {
         Py_DECREF(it);

-- 
Repository URL: https://hg.python.org/cpython


More information about the Python-checkins mailing list