From: Raymond Hettinger Date: Mon, 9 Feb 2015 12:48:29 +0000 (-0600) Subject: Mirco-optimizations to reduce register spills and reloads observed on CLANG and GCC. X-Git-Tag: v3.5.0a2~178 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=438f9134cfb7a3b68cff9de9f730f42f68c2cc94;p=python Mirco-optimizations to reduce register spills and reloads observed on CLANG and GCC. --- diff --git a/Objects/setobject.c b/Objects/setobject.c index 23ab95c715..8197cd914a 100644 --- a/Objects/setobject.c +++ b/Objects/setobject.c @@ -84,8 +84,9 @@ set_lookkey(PySetObject *so, PyObject *key, Py_hash_t hash) return set_lookkey(so, key, hash); if (cmp > 0) /* likely */ return entry; + mask = so->mask; /* help avoid a register spill */ } - if (entry->key == dummy && freeslot == NULL) + if (entry->hash == -1 && freeslot == NULL) freeslot = entry; if (i + LINEAR_PROBES <= mask) { @@ -111,8 +112,9 @@ set_lookkey(PySetObject *so, PyObject *key, Py_hash_t hash) return set_lookkey(so, key, hash); if (cmp > 0) return entry; + mask = so->mask; } - if (entry->key == dummy && freeslot == NULL) + if (entry->hash == -1 && freeslot == NULL) freeslot = entry; } }