From: Raymond Hettinger Date: Sat, 6 Jul 2013 21:58:09 +0000 (-1000) Subject: Refactor deque_traverse(). X-Git-Tag: v3.4.0a1~317^2 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=5bfa8671bcce1fbac3964f13f5f93489f2be7da9;p=python Refactor deque_traverse(). Hoist conditional expression out of the loop. Use rightblock as the guard instead of checking for NULL. --- diff --git a/Modules/_collectionsmodule.c b/Modules/_collectionsmodule.c index 376a8e6770..0a98e01a3a 100644 --- a/Modules/_collectionsmodule.c +++ b/Modules/_collectionsmodule.c @@ -805,17 +805,17 @@ deque_traverse(dequeobject *deque, visitproc visit, void *arg) Py_ssize_t index; Py_ssize_t indexlo = deque->leftindex; - for (b = deque->leftblock; b != NULL; b = b->rightlink) { - const Py_ssize_t indexhi = b == deque->rightblock ? - deque->rightindex : - BLOCKLEN - 1; - - for (index = indexlo; index <= indexhi; ++index) { + for (b = deque->leftblock; b != deque->rightblock; b = b->rightlink) { + for (index = indexlo; index < BLOCKLEN ; index++) { item = b->data[index]; Py_VISIT(item); } indexlo = 0; } + for (index = indexlo; index <= deque->rightindex; index++) { + item = b->data[index]; + Py_VISIT(item); + } return 0; }