https://github.com/python/cpython/commit/dcb8030c535343973c963814ad7b1ffe60751453
commit: dcb8030c535343973c963814ad7b1ffe60751453
branch: 3.13
author: Miss Islington (bot) <[email protected]>
committer: corona10 <[email protected]>
date: 2024-05-21T14:42:22Z
summary:

[3.13] gh-119053: Implement the fast path for list.__getitem__ (gh-119112) 
(gh-119309)

gh-119053: Implement the fast path for list.__getitem__ (gh-119112)
(cherry picked from commit ab4263a82abe8b684d8ad1edf7c7c6ec286ff756)

Co-authored-by: Donghee Na <[email protected]>

files:
M Objects/listobject.c

diff --git a/Objects/listobject.c b/Objects/listobject.c
index 7070165014f137..d09bb6391034d1 100644
--- a/Objects/listobject.c
+++ b/Objects/listobject.c
@@ -351,7 +351,11 @@ list_item_impl(PyListObject *self, Py_ssize_t idx)
     if (!valid_index(idx, size)) {
         goto exit;
     }
+#ifdef Py_GIL_DISABLED
+    item = _Py_NewRefWithLock(self->ob_item[idx]);
+#else
     item = Py_NewRef(self->ob_item[idx]);
+#endif
 exit:
     Py_END_CRITICAL_SECTION();
     return item;
@@ -656,14 +660,15 @@ list_item(PyObject *aa, Py_ssize_t i)
         return NULL;
     }
     PyObject *item;
-    Py_BEGIN_CRITICAL_SECTION(a);
 #ifdef Py_GIL_DISABLED
-    if (!_Py_IsOwnedByCurrentThread((PyObject *)a) && 
!_PyObject_GC_IS_SHARED(a)) {
-        _PyObject_GC_SET_SHARED(a);
+    item = list_get_item_ref(a, i);
+    if (item == NULL) {
+        PyErr_SetObject(PyExc_IndexError, &_Py_STR(list_err));
+        return NULL;
     }
-#endif
+#else
     item = Py_NewRef(a->ob_item[i]);
-    Py_END_CRITICAL_SECTION();
+#endif
     return item;
 }
 

_______________________________________________
Python-checkins mailing list -- [email protected]
To unsubscribe send an email to [email protected]
https://mail.python.org/mailman3/lists/python-checkins.python.org/
Member address: [email protected]

Reply via email to