Would it be worth adding a comment that the block of code is an inlined
copy of deque_append()? Or maybe even turn the append() function into a
macro so you minimize code duplication?

On Sat, 12 Sep 2015 at 08:00 raymond.hettinger <python-check...@python.org>
wrote:

> https://hg.python.org/cpython/rev/cb96ffe6ff10
> changeset:   97943:cb96ffe6ff10
> parent:      97941:b8f3a01937be
> user:        Raymond Hettinger <pyt...@rcn.com>
> date:        Sat Sep 12 11:00:20 2015 -0400
> summary:
>   In-line the append operations inside deque_inplace_repeat().
>
> files:
>   Modules/_collectionsmodule.c |  22 ++++++++++++++++++----
>   1 files changed, 18 insertions(+), 4 deletions(-)
>
>
> diff --git a/Modules/_collectionsmodule.c b/Modules/_collectionsmodule.c
> --- a/Modules/_collectionsmodule.c
> +++ b/Modules/_collectionsmodule.c
> @@ -567,12 +567,26 @@
>          if (n > MAX_DEQUE_LEN)
>              return PyErr_NoMemory();
>
> +        deque->state++;
>          for (i = 0 ; i < n-1 ; i++) {
> -            rv = deque_append(deque, item);
> -            if (rv == NULL)
> -                return NULL;
> -            Py_DECREF(rv);
> +            if (deque->rightindex == BLOCKLEN - 1) {
> +                block *b = newblock(Py_SIZE(deque) + i);
> +                if (b == NULL) {
> +                    Py_SIZE(deque) += i;
> +                    return NULL;
> +                }
> +                b->leftlink = deque->rightblock;
> +                CHECK_END(deque->rightblock->rightlink);
> +                deque->rightblock->rightlink = b;
> +                deque->rightblock = b;
> +                MARK_END(b->rightlink);
> +                deque->rightindex = -1;
> +            }
> +            deque->rightindex++;
> +            Py_INCREF(item);
> +            deque->rightblock->data[deque->rightindex] = item;
>          }
> +        Py_SIZE(deque) += i;
>          Py_INCREF(deque);
>          return (PyObject *)deque;
>      }
>
> --
> Repository URL: https://hg.python.org/cpython
> _______________________________________________
> Python-checkins mailing list
> python-check...@python.org
> https://mail.python.org/mailman/listinfo/python-checkins
>
_______________________________________________
Python-Dev mailing list
Python-Dev@python.org
https://mail.python.org/mailman/listinfo/python-dev
Unsubscribe: 
https://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com

Reply via email to