@@ -236,7 +236,7 @@ set_add_entry(PySetObject *so, PyObject *key, Py_hash_t hash)
236
236
entry -> hash = hash ;
237
237
if ((size_t )so -> fill * 3 < mask * 2 )
238
238
return 0 ;
239
- return set_table_resize (so , so -> used );
239
+ return set_table_resize (so , so -> used > 50000 ? so -> used * 2 : so -> used * 4 );
240
240
241
241
found_active :
242
242
Py_DECREF (key );
@@ -304,7 +304,6 @@ set_table_resize(PySetObject *so, Py_ssize_t minused)
304
304
setentry small_copy [PySet_MINSIZE ];
305
305
306
306
assert (minused >= 0 );
307
- minused = (minused > 50000 ) ? minused * 2 : minused * 4 ;
308
307
309
308
/* Find the smallest table size > minused. */
310
309
/* XXX speed-up with intrinsics */
@@ -646,8 +645,8 @@ set_merge(PySetObject *so, PyObject *otherset)
646
645
* that there will be no (or few) overlapping keys.
647
646
*/
648
647
if ((so -> fill + other -> used )* 3 >= so -> mask * 2 ) {
649
- if (set_table_resize (so , so -> used + other -> used ) != 0 )
650
- return -1 ;
648
+ if (set_table_resize (so , ( so -> used + other -> used ) * 2 ) != 0 )
649
+ return -1 ;
651
650
}
652
651
so_entry = so -> table ;
653
652
other_entry = other -> table ;
@@ -990,7 +989,7 @@ set_update_internal(PySetObject *so, PyObject *other)
990
989
if (dictsize < 0 )
991
990
return -1 ;
992
991
if ((so -> fill + dictsize )* 3 >= so -> mask * 2 ) {
993
- if (set_table_resize (so , so -> used + dictsize ) != 0 )
992
+ if (set_table_resize (so , ( so -> used + dictsize ) * 2 ) != 0 )
994
993
return -1 ;
995
994
}
996
995
while (_PyDict_Next (other , & pos , & key , & value , & hash )) {
@@ -1511,7 +1510,7 @@ set_difference_update_internal(PySetObject *so, PyObject *other)
1511
1510
/* If more than 1/4th are dummies, then resize them away. */
1512
1511
if ((size_t )(so -> fill - so -> used ) <= (size_t )so -> mask / 4 )
1513
1512
return 0 ;
1514
- return set_table_resize (so , so -> used );
1513
+ return set_table_resize (so , so -> used > 50000 ? so -> used * 2 : so -> used * 4 );
1515
1514
}
1516
1515
1517
1516
static PyObject *
0 commit comments