Mercurial > hg-stable
changeset 33777:5866ba5e9c48
cext: move _dict_new_presized() to header
Prepares for splitting encoding functions from parsers.c.
author | Yuya Nishihara <yuya@tcha.org> |
---|---|
date | Mon, 31 Jul 2017 22:12:24 +0900 |
parents | a0e28577f7d4 |
children | e9996bd7203f |
files | mercurial/cext/parsers.c mercurial/cext/util.h |
diffstat | 2 files changed, 12 insertions(+), 12 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial/cext/parsers.c Fri Jun 30 03:43:31 2017 +0200 +++ b/mercurial/cext/parsers.c Mon Jul 31 22:12:24 2017 +0900 @@ -155,18 +155,6 @@ return _asciitransform(str_obj, uppertable, NULL); } -static inline PyObject *_dict_new_presized(Py_ssize_t expected_size) -{ - /* _PyDict_NewPresized expects a minused parameter, but it actually - creates a dictionary that's the nearest power of two bigger than the - parameter. For example, with the initial minused = 1000, the - dictionary created has size 1024. Of course in a lot of cases that - can be greater than the maximum load factor Python's dict object - expects (= 2/3), so as soon as we cross the threshold we'll resize - anyway. So create a dictionary that's at least 3/2 the size. */ - return _PyDict_NewPresized(((1 + expected_size) / 2) * 3); -} - static PyObject *dict_new_presized(PyObject *self, PyObject *args) { Py_ssize_t expected_size;
--- a/mercurial/cext/util.h Fri Jun 30 03:43:31 2017 +0200 +++ b/mercurial/cext/util.h Mon Jul 31 22:12:24 2017 +0900 @@ -42,6 +42,18 @@ #include <stdbool.h> #endif +static inline PyObject *_dict_new_presized(Py_ssize_t expected_size) +{ + /* _PyDict_NewPresized expects a minused parameter, but it actually + creates a dictionary that's the nearest power of two bigger than the + parameter. For example, with the initial minused = 1000, the + dictionary created has size 1024. Of course in a lot of cases that + can be greater than the maximum load factor Python's dict object + expects (= 2/3), so as soon as we cross the threshold we'll resize + anyway. So create a dictionary that's at least 3/2 the size. */ + return _PyDict_NewPresized(((1 + expected_size) / 2) * 3); +} + static const int8_t hextable[256] = { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,