From 438f9134cfb7a3b68cff9de9f730f42f68c2cc94 Mon Sep 17 00:00:00 2001 From: Raymond Hettinger Date: Mon, 9 Feb 2015 06:48:29 -0600 Subject: [PATCH] Mirco-optimizations to reduce register spills and reloads observed on CLANG and GCC. --- Objects/setobject.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) 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; } } -- 2.40.0