mirror of
https://github.com/python/cpython.git
synced 2026-01-06 15:32:22 +00:00
bpo-47057: Use FASTCALL convention for FutureIter.throw() (GH-31973)
Co-authored-by: Kumar Aditya <59607654+kumaraditya303@users.noreply.github.com>
This commit is contained in:
parent
7747384643
commit
0a8b8e0d26
2 changed files with 15 additions and 9 deletions
|
|
@ -0,0 +1 @@
|
|||
Use FASTCALL convention for ``FutureIter.throw()``
|
||||
|
|
@ -1637,18 +1637,23 @@ FutureIter_send(futureiterobject *self, PyObject *unused)
|
|||
}
|
||||
|
||||
static PyObject *
|
||||
FutureIter_throw(futureiterobject *self, PyObject *args)
|
||||
FutureIter_throw(futureiterobject *self, PyObject *const *args, Py_ssize_t nargs)
|
||||
{
|
||||
PyObject *type, *val = NULL, *tb = NULL;
|
||||
if (!PyArg_ParseTuple(args, "O|OO", &type, &val, &tb))
|
||||
if (!_PyArg_CheckPositional("throw", nargs, 1, 3)) {
|
||||
return NULL;
|
||||
|
||||
if (val == Py_None) {
|
||||
val = NULL;
|
||||
}
|
||||
if (tb == Py_None) {
|
||||
tb = NULL;
|
||||
} else if (tb != NULL && !PyTraceBack_Check(tb)) {
|
||||
|
||||
type = args[0];
|
||||
if (nargs == 3) {
|
||||
val = args[1];
|
||||
tb = args[2];
|
||||
}
|
||||
else if (nargs == 2) {
|
||||
val = args[1];
|
||||
}
|
||||
|
||||
if (tb != NULL && !PyTraceBack_Check(tb)) {
|
||||
PyErr_SetString(PyExc_TypeError, "throw() third argument must be a traceback");
|
||||
return NULL;
|
||||
}
|
||||
|
|
@ -1708,7 +1713,7 @@ FutureIter_traverse(futureiterobject *it, visitproc visit, void *arg)
|
|||
|
||||
static PyMethodDef FutureIter_methods[] = {
|
||||
{"send", (PyCFunction)FutureIter_send, METH_O, NULL},
|
||||
{"throw", (PyCFunction)FutureIter_throw, METH_VARARGS, NULL},
|
||||
{"throw", (PyCFunction)(void(*)(void))FutureIter_throw, METH_FASTCALL, NULL},
|
||||
{"close", (PyCFunction)FutureIter_close, METH_NOARGS, NULL},
|
||||
{NULL, NULL} /* Sentinel */
|
||||
};
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue