mirror of https://github.com/python/cpython
Revert last change. Found an application that was worse off with resize
exact turned on. The tiny space savings wasn't worth the additional time and code.
This commit is contained in:
parent
0bc3d9857f
commit
d4ff741e78
|
@ -9,7 +9,7 @@
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
static int
|
static int
|
||||||
list_resize(PyListObject *self, int newsize, int exact)
|
list_resize(PyListObject *self, int newsize)
|
||||||
{
|
{
|
||||||
PyObject **items;
|
PyObject **items;
|
||||||
size_t _new_size;
|
size_t _new_size;
|
||||||
|
@ -33,10 +33,7 @@ list_resize(PyListObject *self, int newsize, int exact)
|
||||||
* system realloc().
|
* system realloc().
|
||||||
* The growth pattern is: 0, 4, 8, 16, 25, 35, 46, 58, 72, 88, ...
|
* The growth pattern is: 0, 4, 8, 16, 25, 35, 46, 58, 72, 88, ...
|
||||||
*/
|
*/
|
||||||
if (exact)
|
_new_size = (newsize >> 3) + (self->ob_size < 8 ? 3 : 6) + newsize;
|
||||||
_new_size = newsize;
|
|
||||||
else
|
|
||||||
_new_size = (newsize>>3) + (self->ob_size < 8 ? 3 : 6) + newsize;
|
|
||||||
items = self->ob_item;
|
items = self->ob_item;
|
||||||
if (_new_size <= ((~(size_t)0) / sizeof(PyObject *)))
|
if (_new_size <= ((~(size_t)0) / sizeof(PyObject *)))
|
||||||
PyMem_RESIZE(items, PyObject *, _new_size);
|
PyMem_RESIZE(items, PyObject *, _new_size);
|
||||||
|
@ -155,7 +152,7 @@ ins1(PyListObject *self, int where, PyObject *v)
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (list_resize(self, n+1, 0) == -1)
|
if (list_resize(self, n+1) == -1)
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
if (where < 0) {
|
if (where < 0) {
|
||||||
|
@ -521,13 +518,13 @@ list_ass_slice(PyListObject *a, int ilow, int ihigh, PyObject *v)
|
||||||
if (d < 0) {
|
if (d < 0) {
|
||||||
memmove(&item[ihigh+d], &item[ihigh],
|
memmove(&item[ihigh+d], &item[ihigh],
|
||||||
(a->ob_size - ihigh)*sizeof(PyObject *));
|
(a->ob_size - ihigh)*sizeof(PyObject *));
|
||||||
list_resize(a, a->ob_size + d, 1);
|
list_resize(a, a->ob_size + d);
|
||||||
item = a->ob_item;
|
item = a->ob_item;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else { /* Insert d items; recycle ihigh-ilow items */
|
else { /* Insert d items; recycle ihigh-ilow items */
|
||||||
s = a->ob_size;
|
s = a->ob_size;
|
||||||
if (list_resize(a, s+d, 1) == -1) {
|
if (list_resize(a, s+d) == -1) {
|
||||||
if (recycle != NULL)
|
if (recycle != NULL)
|
||||||
PyMem_DEL(recycle);
|
PyMem_DEL(recycle);
|
||||||
return -1;
|
return -1;
|
||||||
|
@ -591,7 +588,7 @@ list_inplace_repeat(PyListObject *self, int n)
|
||||||
return (PyObject *)self;
|
return (PyObject *)self;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (list_resize(self, size*n, 1) == -1)
|
if (list_resize(self, size*n) == -1)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
p = size;
|
p = size;
|
||||||
|
@ -683,7 +680,7 @@ listextend_internal(PyListObject *self, PyObject *b)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (list_resize(self, selflen + blen, 0) == -1) {
|
if (list_resize(self, selflen + blen) == -1) {
|
||||||
Py_DECREF(b);
|
Py_DECREF(b);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
@ -736,7 +733,7 @@ listextend(PyListObject *self, PyObject *b)
|
||||||
}
|
}
|
||||||
m = self->ob_size;
|
m = self->ob_size;
|
||||||
mn = m + n;
|
mn = m + n;
|
||||||
if (list_resize(self, mn, 0) == -1)
|
if (list_resize(self, mn) == -1)
|
||||||
goto error;
|
goto error;
|
||||||
memset(&(self->ob_item[m]), 0, sizeof(*self->ob_item) * n);
|
memset(&(self->ob_item[m]), 0, sizeof(*self->ob_item) * n);
|
||||||
|
|
||||||
|
@ -821,7 +818,7 @@ listpop(PyListObject *self, PyObject *args)
|
||||||
}
|
}
|
||||||
v = self->ob_item[i];
|
v = self->ob_item[i];
|
||||||
if (i == self->ob_size - 1) {
|
if (i == self->ob_size - 1) {
|
||||||
if (list_resize(self, self->ob_size - 1, 0) == -1)
|
if (list_resize(self, self->ob_size - 1) == -1)
|
||||||
return NULL;
|
return NULL;
|
||||||
return v;
|
return v;
|
||||||
}
|
}
|
||||||
|
@ -2520,7 +2517,7 @@ list_ass_subscript(PyListObject* self, PyObject* item, PyObject* value)
|
||||||
}
|
}
|
||||||
|
|
||||||
self->ob_size -= slicelength;
|
self->ob_size -= slicelength;
|
||||||
list_resize(self, self->ob_size, 1);
|
list_resize(self, self->ob_size);
|
||||||
|
|
||||||
for (i = 0; i < slicelength; i++) {
|
for (i = 0; i < slicelength; i++) {
|
||||||
Py_DECREF(garbage[i]);
|
Py_DECREF(garbage[i]);
|
||||||
|
|
Loading…
Reference in New Issue