• Victor Stinner's avatar
    PyObject_CallMethodObjArgs() now uses fast call · dd69564c
    Victor Stinner authored
    Issue #27809:
    
    * PyObject_CallMethodObjArgs(), _PyObject_CallMethodIdObjArgs() and
      PyObject_CallFunctionObjArgs() now use fast call to avoid the creation of a
      temporary tuple
    * Rename objargs_mktuple() to objargs_mkstack()
    * objargs_mkstack() now stores objects in a C array using borrowed references,
      instead of storing arguments into a tuple
    
    objargs_mkstack() uses a small buffer allocated on the C stack for 5 arguments
    or less, or allocates a buffer in the heap memory.
    
    Note: this change is different than the change 0e4f26083bbb, I fixed the test
    to decide if the small stack can be used or not. sizeof(PyObject**) was also
    replaced with sizeof(stack[0]) since the sizeof() was wrong (but gave the same
    result).
    dd69564c
abstract.c 75.8 KB