mirror of https://github.com/python/cpython
gh-112087: Update list.{pop,clear,reverse,remove} to use CS (gh-113764)
This commit is contained in:
parent
10d3f04aec
commit
a023bc252d
|
@ -7,6 +7,7 @@ preserve
|
|||
# include "pycore_runtime.h" // _Py_ID()
|
||||
#endif
|
||||
#include "pycore_abstract.h" // _PyNumber_Index()
|
||||
#include "pycore_critical_section.h"// Py_BEGIN_CRITICAL_SECTION()
|
||||
#include "pycore_modsupport.h" // _PyArg_CheckPositional()
|
||||
|
||||
PyDoc_STRVAR(list_insert__doc__,
|
||||
|
@ -44,7 +45,9 @@ list_insert(PyListObject *self, PyObject *const *args, Py_ssize_t nargs)
|
|||
index = ival;
|
||||
}
|
||||
object = args[1];
|
||||
Py_BEGIN_CRITICAL_SECTION(self);
|
||||
return_value = list_insert_impl(self, index, object);
|
||||
Py_END_CRITICAL_SECTION();
|
||||
|
||||
exit:
|
||||
return return_value;
|
||||
|
@ -65,7 +68,13 @@ py_list_clear_impl(PyListObject *self);
|
|||
static PyObject *
|
||||
py_list_clear(PyListObject *self, PyObject *Py_UNUSED(ignored))
|
||||
{
|
||||
return py_list_clear_impl(self);
|
||||
PyObject *return_value = NULL;
|
||||
|
||||
Py_BEGIN_CRITICAL_SECTION(self);
|
||||
return_value = py_list_clear_impl(self);
|
||||
Py_END_CRITICAL_SECTION();
|
||||
|
||||
return return_value;
|
||||
}
|
||||
|
||||
PyDoc_STRVAR(list_copy__doc__,
|
||||
|
@ -143,7 +152,9 @@ list_pop(PyListObject *self, PyObject *const *args, Py_ssize_t nargs)
|
|||
index = ival;
|
||||
}
|
||||
skip_optional:
|
||||
Py_BEGIN_CRITICAL_SECTION(self);
|
||||
return_value = list_pop_impl(self, index);
|
||||
Py_END_CRITICAL_SECTION();
|
||||
|
||||
exit:
|
||||
return return_value;
|
||||
|
@ -242,7 +253,13 @@ list_reverse_impl(PyListObject *self);
|
|||
static PyObject *
|
||||
list_reverse(PyListObject *self, PyObject *Py_UNUSED(ignored))
|
||||
{
|
||||
return list_reverse_impl(self);
|
||||
PyObject *return_value = NULL;
|
||||
|
||||
Py_BEGIN_CRITICAL_SECTION(self);
|
||||
return_value = list_reverse_impl(self);
|
||||
Py_END_CRITICAL_SECTION();
|
||||
|
||||
return return_value;
|
||||
}
|
||||
|
||||
PyDoc_STRVAR(list_index__doc__,
|
||||
|
@ -311,6 +328,21 @@ PyDoc_STRVAR(list_remove__doc__,
|
|||
#define LIST_REMOVE_METHODDEF \
|
||||
{"remove", (PyCFunction)list_remove, METH_O, list_remove__doc__},
|
||||
|
||||
static PyObject *
|
||||
list_remove_impl(PyListObject *self, PyObject *value);
|
||||
|
||||
static PyObject *
|
||||
list_remove(PyListObject *self, PyObject *value)
|
||||
{
|
||||
PyObject *return_value = NULL;
|
||||
|
||||
Py_BEGIN_CRITICAL_SECTION(self);
|
||||
return_value = list_remove_impl(self, value);
|
||||
Py_END_CRITICAL_SECTION();
|
||||
|
||||
return return_value;
|
||||
}
|
||||
|
||||
PyDoc_STRVAR(list___init____doc__,
|
||||
"list(iterable=(), /)\n"
|
||||
"--\n"
|
||||
|
@ -384,4 +416,4 @@ list___reversed__(PyListObject *self, PyObject *Py_UNUSED(ignored))
|
|||
{
|
||||
return list___reversed___impl(self);
|
||||
}
|
||||
/*[clinic end generated code: output=f2d7b63119464ff4 input=a9049054013a1b77]*/
|
||||
/*[clinic end generated code: output=3c9f24fd3212b18b input=a9049054013a1b77]*/
|
||||
|
|
|
@ -798,6 +798,7 @@ list_ass_item(PyObject *aa, Py_ssize_t i, PyObject *v)
|
|||
}
|
||||
|
||||
/*[clinic input]
|
||||
@critical_section
|
||||
list.insert
|
||||
|
||||
index: Py_ssize_t
|
||||
|
@ -809,7 +810,7 @@ Insert object before index.
|
|||
|
||||
static PyObject *
|
||||
list_insert_impl(PyListObject *self, Py_ssize_t index, PyObject *object)
|
||||
/*[clinic end generated code: output=7f35e32f60c8cb78 input=858514cf894c7eab]*/
|
||||
/*[clinic end generated code: output=7f35e32f60c8cb78 input=b1987ca998a4ae2d]*/
|
||||
{
|
||||
if (ins1(self, index, object) == 0)
|
||||
Py_RETURN_NONE;
|
||||
|
@ -817,6 +818,7 @@ list_insert_impl(PyListObject *self, Py_ssize_t index, PyObject *object)
|
|||
}
|
||||
|
||||
/*[clinic input]
|
||||
@critical_section
|
||||
list.clear as py_list_clear
|
||||
|
||||
Remove all items from list.
|
||||
|
@ -824,7 +826,7 @@ Remove all items from list.
|
|||
|
||||
static PyObject *
|
||||
py_list_clear_impl(PyListObject *self)
|
||||
/*[clinic end generated code: output=83726743807e3518 input=378711e10f545c53]*/
|
||||
/*[clinic end generated code: output=83726743807e3518 input=e285b7f09051a9ba]*/
|
||||
{
|
||||
list_clear(self);
|
||||
Py_RETURN_NONE;
|
||||
|
@ -1062,6 +1064,7 @@ list_inplace_concat(PyObject *_self, PyObject *other)
|
|||
}
|
||||
|
||||
/*[clinic input]
|
||||
@critical_section
|
||||
list.pop
|
||||
|
||||
index: Py_ssize_t = -1
|
||||
|
@ -1074,7 +1077,7 @@ Raises IndexError if list is empty or index is out of range.
|
|||
|
||||
static PyObject *
|
||||
list_pop_impl(PyListObject *self, Py_ssize_t index)
|
||||
/*[clinic end generated code: output=6bd69dcb3f17eca8 input=b83675976f329e6f]*/
|
||||
/*[clinic end generated code: output=6bd69dcb3f17eca8 input=c269141068ae4b8f]*/
|
||||
{
|
||||
PyObject *v;
|
||||
int status;
|
||||
|
@ -2593,6 +2596,7 @@ PyList_Sort(PyObject *v)
|
|||
}
|
||||
|
||||
/*[clinic input]
|
||||
@critical_section
|
||||
list.reverse
|
||||
|
||||
Reverse *IN PLACE*.
|
||||
|
@ -2600,7 +2604,7 @@ Reverse *IN PLACE*.
|
|||
|
||||
static PyObject *
|
||||
list_reverse_impl(PyListObject *self)
|
||||
/*[clinic end generated code: output=482544fc451abea9 input=eefd4c3ae1bc9887]*/
|
||||
/*[clinic end generated code: output=482544fc451abea9 input=04ac8e0c6a66e4d9]*/
|
||||
{
|
||||
if (Py_SIZE(self) > 1)
|
||||
reverse_slice(self->ob_item, self->ob_item + Py_SIZE(self));
|
||||
|
@ -2730,6 +2734,7 @@ list_count(PyListObject *self, PyObject *value)
|
|||
}
|
||||
|
||||
/*[clinic input]
|
||||
@critical_section
|
||||
list.remove
|
||||
|
||||
value: object
|
||||
|
@ -2741,8 +2746,8 @@ Raises ValueError if the value is not present.
|
|||
[clinic start generated code]*/
|
||||
|
||||
static PyObject *
|
||||
list_remove(PyListObject *self, PyObject *value)
|
||||
/*[clinic end generated code: output=f087e1951a5e30d1 input=2dc2ba5bb2fb1f82]*/
|
||||
list_remove_impl(PyListObject *self, PyObject *value)
|
||||
/*[clinic end generated code: output=b9b76a6633b18778 input=26c813dbb95aa93b]*/
|
||||
{
|
||||
Py_ssize_t i;
|
||||
|
||||
|
|
Loading…
Reference in New Issue