mirror of https://github.com/python/cpython
[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:
parent
1929b7e2bf
commit
dcb8030c53
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue