py/qstr: Change qstr hash type from mp_uint_t to size_t.
The hash is either 8 or 16 bits (depending on MICROPY_QSTR_BYTES_IN_HASH)
so will fit in a size_t.
This saves 268 bytes on the unix nanbox build. Non-nanbox configurations
are unchanged because mp_uint_t is the same size as size_t.
Signed-off-by: Damien George <damien@micropython.org>
diff --git a/py/qstr.c b/py/qstr.c
index f9ca106..ea70056 100644
--- a/py/qstr.c
+++ b/py/qstr.c
@@ -60,9 +60,9 @@
#define MICROPY_ALLOC_QSTR_ENTRIES_INIT (10)
// this must match the equivalent function in makeqstrdata.py
-mp_uint_t qstr_compute_hash(const byte *data, size_t len) {
+size_t qstr_compute_hash(const byte *data, size_t len) {
// djb2 algorithm; see http://www.cse.yorku.ca/~oz/hash.html
- mp_uint_t hash = 5381;
+ size_t hash = 5381;
for (const byte *top = data + len; data < top; data++) {
hash = ((hash << 5) + hash) ^ (*data); // hash * 33 ^ data
}
@@ -181,7 +181,7 @@
qstr qstr_find_strn(const char *str, size_t str_len) {
// work out hash of str
- mp_uint_t str_hash = qstr_compute_hash((const byte *)str, str_len);
+ size_t str_hash = qstr_compute_hash((const byte *)str, str_len);
// search pools for the data
for (const qstr_pool_t *pool = MP_STATE_VM(last_pool); pool != NULL; pool = pool->prev) {
@@ -254,7 +254,7 @@
MP_STATE_VM(qstr_last_used) += n_bytes;
// store the interned strings' data
- mp_uint_t hash = qstr_compute_hash((const byte *)str, len);
+ size_t hash = qstr_compute_hash((const byte *)str, len);
memcpy(q_ptr, str, len);
q_ptr[len] = '\0';
q = qstr_add(hash, len, q_ptr);