]> granicus.if.org Git - python/commitdiff
Divisions-by-two for a positive Py_ssize_t compile more cleanly with >>1 than /2.
authorRaymond Hettinger <python@rcn.com>
Mon, 20 Jul 2015 04:25:50 +0000 (00:25 -0400)
committerRaymond Hettinger <python@rcn.com>
Mon, 20 Jul 2015 04:25:50 +0000 (00:25 -0400)
Modules/_collectionsmodule.c
Modules/_heapqmodule.c

index c1fd8b9d9b12cbfe4afc1a493ceafed62d1027b2..47db46f86b75e174936b65c0743b6bed3927d7d8 100644 (file)
@@ -788,7 +788,7 @@ deque_reverse(dequeobject *deque, PyObject *unused)
     block *rightblock = deque->rightblock;
     Py_ssize_t leftindex = deque->leftindex;
     Py_ssize_t rightindex = deque->rightindex;
-    Py_ssize_t n = Py_SIZE(deque) / 2;
+    Py_ssize_t n = Py_SIZE(deque) >> 1;
     Py_ssize_t i;
     PyObject *tmp;
 
index c343862b8cc1fb43956d30edab7e89a1848189a3..28604afee9593b939b00cdde6bb75aa74c633150 100644 (file)
@@ -66,7 +66,7 @@ siftup(PyListObject *heap, Py_ssize_t pos)
 
     /* Bubble up the smaller child until hitting a leaf. */
     arr = _PyList_ITEMS(heap);
-    limit = endpos / 2;          /* smallest pos that has no child */
+    limit = endpos >> 1;         /* smallest pos that has no child */
     while (pos < limit) {
         /* Set childpos to index of smaller child.   */
         childpos = 2*pos + 1;    /* leftmost child position  */
@@ -347,7 +347,7 @@ heapify_internal(PyObject *heap, int siftup_func(PyListObject *, Py_ssize_t))
        n is odd = 2*j+1, this is (2*j+1-1)/2 = j so j-1 is the largest,
        and that's again n//2-1.
     */
-    for (i = n/2 - 1 ; i >= 0 ; i--)
+    for (i = (n >> 1) - 1 ; i >= 0 ; i--)
         if (siftup_func((PyListObject *)heap, i))
             return NULL;
     Py_RETURN_NONE;
@@ -420,7 +420,7 @@ siftup_max(PyListObject *heap, Py_ssize_t pos)
 
     /* Bubble up the smaller child until hitting a leaf. */
     arr = _PyList_ITEMS(heap);
-    limit = endpos / 2;          /* smallest pos that has no child */
+    limit = endpos >> 1;         /* smallest pos that has no child */
     while (pos < limit) {
         /* Set childpos to index of smaller child.   */
         childpos = 2*pos + 1;    /* leftmost child position  */