From fda6d0acf0cb8e683640e6a3a404a371cb68b145 Mon Sep 17 00:00:00 2001 From: Victor Stinner Date: Tue, 17 Jan 2017 04:09:14 +0100 Subject: [PATCH] next() uses FASTCALL --- Python/bltinmodule.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/Python/bltinmodule.c b/Python/bltinmodule.c index b2699376843..9487a5364ab 100644 --- a/Python/bltinmodule.c +++ b/Python/bltinmodule.c @@ -1303,13 +1303,19 @@ PyTypeObject PyMap_Type = { /* AC: cannot convert yet, as needs PEP 457 group support in inspect */ static PyObject * -builtin_next(PyObject *self, PyObject *args) +builtin_next(PyObject *self, PyObject **args, Py_ssize_t nargs, + PyObject *kwnames) { PyObject *it, *res; PyObject *def = NULL; - if (!PyArg_UnpackTuple(args, "next", 1, 2, &it, &def)) + if (!_PyArg_UnpackStack(args, nargs, "next", 1, 2, &it, &def)) return NULL; + + if (!_PyArg_NoStackKeywords("next", kwnames)) { + return NULL; + } + if (!PyIter_Check(it)) { PyErr_Format(PyExc_TypeError, "'%.200s' object is not an iterator", @@ -2641,7 +2647,7 @@ static PyMethodDef builtin_methods[] = { BUILTIN_LOCALS_METHODDEF {"max", (PyCFunction)builtin_max, METH_VARARGS | METH_KEYWORDS, max_doc}, {"min", (PyCFunction)builtin_min, METH_VARARGS | METH_KEYWORDS, min_doc}, - {"next", (PyCFunction)builtin_next, METH_VARARGS, next_doc}, + {"next", (PyCFunction)builtin_next, METH_FASTCALL, next_doc}, BUILTIN_OCT_METHODDEF BUILTIN_ORD_METHODDEF BUILTIN_POW_METHODDEF