]> granicus.if.org Git - python/commitdiff
Since the index is always non-negative, use faster unsigned division and modulo.
authorRaymond Hettinger <python@rcn.com>
Fri, 27 Feb 2015 20:42:54 +0000 (12:42 -0800)
committerRaymond Hettinger <python@rcn.com>
Fri, 27 Feb 2015 20:42:54 +0000 (12:42 -0800)
Modules/_collectionsmodule.c

index 0df35d959c832a8a68e33408918ad1d9a1b76f16..0bc0e98ed886de53ac27a3395480a433e10a968f 100644 (file)
@@ -142,7 +142,7 @@ typedef struct {
 
 static PyTypeObject deque_type;
 
-/* XXX Todo: 
+/* XXX Todo:
    If aligned memory allocations become available, make the
    deque object 64 byte aligned so that all of the fields
    can be retrieved or updated in a single cache line.
@@ -780,7 +780,9 @@ deque_item(dequeobject *deque, Py_ssize_t i)
         b = deque->rightblock;
     } else {
         i += deque->leftindex;
-        n = i / BLOCKLEN;
+        assert(i >= 0);
+        n = (Py_ssize_t)((unsigned) i / BLOCKLEN);
+        i = (Py_ssize_t)((unsigned) i % BLOCKLEN);
         i %= BLOCKLEN;
         if (index < (Py_SIZE(deque) >> 1)) {
             b = deque->leftblock;
@@ -1848,7 +1850,7 @@ _count_elements(PyObject *self, PyObject *args)
                 (hash = ((PyASCIIObject *) key)->hash) == -1)
             {
                 hash = PyObject_Hash(key);
-                if (hash == -1) 
+                if (hash == -1)
                     goto done;
             }