This issue tracker has been migrated to GitHub, and is currently read-only.
For more information, see the GitHub FAQs in the Python's Developer Guide.

Author vstinner
Recipients python-dev, serhiy.storchaka, vstinner
Date 2017-01-10.23:22:57
SpamBayes Score -1.0
Marked as misclassified Yes
Message-id <1484090577.91.0.180682367255.issue29233@psf.upfronthosting.co.za>
In-reply-to
Content
Full commit message:

changeset:   106081:b9404639a18c
tag:         tip
user:        Victor Stinner <victor.stinner@gmail.com>
date:        Wed Jan 11 00:07:40 2017 +0100
files:       Include/abstract.h Objects/abstract.c Objects/typeobject.c
description:
call_method() now uses _PyObject_FastCall()

Issue #29233: Replace the inefficient _PyObject_VaCallFunctionObjArgs() with
_PyObject_FastCall() in call_method() and call_maybe().

Only a few functions call call_method() and call it with a fixed number of
arguments. Avoid the complex and expensive _PyObject_VaCallFunctionObjArgs()
function, replace it with an array allocated on the stack with the exact number
of argumlents.

It reduces the stack consumption, bytes per call, before => after:

test_python_call: 1168 => 1152 (-16 B)
test_python_getitem: 1344 => 1008 (-336 B)
test_python_iterator: 1568 => 1232 (-336 B)

Remove the _PyObject_VaCallFunctionObjArgs() function which became useless.
Rename it to object_vacall() and make it private.
History
Date User Action Args
2017-01-10 23:22:57vstinnersetrecipients: + vstinner, python-dev, serhiy.storchaka
2017-01-10 23:22:57vstinnersetmessageid: <1484090577.91.0.180682367255.issue29233@psf.upfronthosting.co.za>
2017-01-10 23:22:57vstinnerlinkissue29233 messages
2017-01-10 23:22:57vstinnercreate