[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 ab4263a82a)

Co-authored-by: Donghee Na <donghee.na@python.org>
This commit is contained in:
Miss Islington (bot) 2024-05-21 16:42:22 +02:00 committed by GitHub
parent 1929b7e2bf
commit dcb8030c53
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
1 changed files with 10 additions and 5 deletions

View File

@ -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;
}