Skip to content

Commit c6b7551

Browse files
committed
gh-145481: Optimize frozendict lookup in free threading
1 parent 671a953 commit c6b7551

1 file changed

Lines changed: 8 additions & 2 deletions

File tree

Objects/dictobject.c

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1518,13 +1518,19 @@ dictkeys_generic_lookup_threadsafe(PyDictObject *mp, PyDictKeysObject* dk, PyObj
15181518
Py_ssize_t
15191519
_Py_dict_lookup_threadsafe(PyDictObject *mp, PyObject *key, Py_hash_t hash, PyObject **value_addr)
15201520
{
1521+
ensure_shared_on_read(mp);
1522+
1523+
if (PyFrozenDict_CheckExact(mp)) {
1524+
Py_ssize_t ix = _Py_dict_lookup(mp, key, hash, value_addr);
1525+
Py_XNewRef(*value_addr);
1526+
return ix;
1527+
}
1528+
15211529
PyDictKeysObject *dk;
15221530
DictKeysKind kind;
15231531
Py_ssize_t ix;
15241532
PyObject *value;
15251533

1526-
ensure_shared_on_read(mp);
1527-
15281534
dk = _Py_atomic_load_ptr(&mp->ma_keys);
15291535
kind = dk->dk_kind;
15301536

0 commit comments

Comments
 (0)