8000 bpo-41922: Use PEP 590 vectorcall to speed up reversed() (GH-22523) · python/cpython@d646e91 · GitHub
[go: up one dir, main page]

Skip to content

Commit d646e91

Browse files
authored
bpo-41922: Use PEP 590 vectorcall to speed up reversed() (GH-22523)
1 parent 3fe6148 commit d646e91

File tree

2 files changed

+21
-0
lines changed

2 files changed

+21
-0
lines changed
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
Speed up calls to ``reversed()`` by using the :pep:`590` ``vectorcall``
2+
calling convention. Patch by Dong-hee Na.

Objects/enumobject.c

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -314,6 +314,24 @@ reversed_new_impl(PyTypeObject *type, PyObject *seq)
314314
return (PyObject *)ro;
315315
}
316316

317+
static PyObject *
318+
reversed_vectorcall(PyObject *type, PyObject * const*args,
319+
size_t nargsf, PyObject *kwnames)
320+
{
321+
assert(PyType_Check(type));
322+
323+
if (!_PyArg_NoKwnames("reversed", kwnames)) {
324+
return NULL;
325+
}
326+
327+
Py_ssize_t nargs = PyVectorcall_NARGS(nargsf);
328+
if (!_PyArg_CheckPositional("reversed", nargs, 1, 1)) {
329+
return NULL;
330+
}
331+
332+
return reversed_new_impl((PyTypeObject *)type, args[0]);
333+
}
334+
317335
static void
318336
reversed_dealloc(reversedobject *ro)
319337
{
@@ -445,4 +463,5 @@ PyTypeObject PyReversed_Type = {
445463
PyType_GenericAlloc, /* tp_alloc */
446464
reversed_new, /* tp_new */
447465
PyObject_GC_Del, /* tp_free */
466+
.tp_vectorcall = (vectorcallfunc)reversed_vectorcall,
448467
};

0 commit comments

Comments
 (0)
0