• Victor Stinner's avatar
    call_method() now uses _PyObject_FastCall() · 434723f9
    Victor Stinner yazdı
    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.
    434723f9
abstract.h 39 KB