]> granicus.if.org Git - python/commit
PyObject_CallMethodObjArgs() now uses fast call
authorVictor Stinner <victor.stinner@gmail.com>
Tue, 23 Aug 2016 23:14:54 +0000 (01:14 +0200)
committerVictor Stinner <victor.stinner@gmail.com>
Tue, 23 Aug 2016 23:14:54 +0000 (01:14 +0200)
commitdd69564c38de21f2ede269c55fce6db24bb27941
tree4ca7943d6efaf2a1a30190233403095b50cee1ae
parentd48af09043e3f84bc8d3d0e2d9adb4f0be2a70fd
PyObject_CallMethodObjArgs() now uses fast call

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).
Objects/abstract.c