From e32adeb3f9564e2cc046092baec038d5c375d7a8 Mon Sep 17 00:00:00 2001 From: Kumar Aditya Date: Fri, 7 Nov 2025 15:40:26 +0530 Subject: [PATCH 1/2] optimize PySet_Contains for frozensets --- Objects/setobject.c | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/Objects/setobject.c b/Objects/setobject.c index 213bd821d8a1b9..fe2a97fa236d10 100644 --- a/Objects/setobject.c +++ b/Objects/setobject.c @@ -2748,11 +2748,7 @@ PySet_Contains(PyObject *anyset, PyObject *key) return -1; } - int rv; - Py_BEGIN_CRITICAL_SECTION(anyset); - rv = set_contains_key((PySetObject *)anyset, key); - Py_END_CRITICAL_SECTION(); - return rv; + return _PySet_Contains(_PySet_CAST(anyset), key); } int From f550bb5c36eee2efad5c8b0a4c6dad3632dafa2e Mon Sep 17 00:00:00 2001 From: Kumar Aditya Date: Fri, 7 Nov 2025 18:11:05 +0530 Subject: [PATCH 2/2] code review --- Objects/setobject.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/Objects/setobject.c b/Objects/setobject.c index fe2a97fa236d10..2401176576eb62 100644 --- a/Objects/setobject.c +++ b/Objects/setobject.c @@ -2747,8 +2747,14 @@ PySet_Contains(PyObject *anyset, PyObject *key) PyErr_BadInternalCall(); return -1; } - - return _PySet_Contains(_PySet_CAST(anyset), key); + if (PyFrozenSet_CheckExact(anyset)) { + return set_contains_key((PySetObject *)anyset, key); + } + int rv; + Py_BEGIN_CRITICAL_SECTION(anyset); + rv = set_contains_key((PySetObject *)anyset, key); + Py_END_CRITICAL_SECTION(); + return rv; } int