In-line the append operations inside deque_inplace_repeat().
This commit is contained in:
parent
233cdb3e9c
commit
67c78b5421
|
@ -567,12 +567,26 @@ deque_inplace_repeat(dequeobject *deque, Py_ssize_t n)
|
||||||
if (n > MAX_DEQUE_LEN)
|
if (n > MAX_DEQUE_LEN)
|
||||||
return PyErr_NoMemory();
|
return PyErr_NoMemory();
|
||||||
|
|
||||||
|
deque->state++;
|
||||||
for (i = 0 ; i < n-1 ; i++) {
|
for (i = 0 ; i < n-1 ; i++) {
|
||||||
rv = deque_append(deque, item);
|
if (deque->rightindex == BLOCKLEN - 1) {
|
||||||
if (rv == NULL)
|
block *b = newblock(Py_SIZE(deque) + i);
|
||||||
return NULL;
|
if (b == NULL) {
|
||||||
Py_DECREF(rv);
|
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);
|
Py_INCREF(deque);
|
||||||
return (PyObject *)deque;
|
return (PyObject *)deque;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue