]> granicus.if.org Git - python/commit
Replace PyObject_CallFunctionObjArgs() with fastcall
authorVictor Stinner <victor.stinner@gmail.com>
Thu, 1 Dec 2016 13:43:22 +0000 (14:43 +0100)
committerVictor Stinner <victor.stinner@gmail.com>
Thu, 1 Dec 2016 13:43:22 +0000 (14:43 +0100)
commit27580c1fb5e8cb756304f523006d832d2e3532e7
treef25f5c8e7a05f3d3d4049050459fecd7e81a5b46
parent8be1c39eb3416e9d85c7e3ccd4794969588c8030
Replace PyObject_CallFunctionObjArgs() with fastcall

* PyObject_CallFunctionObjArgs(func, NULL) => _PyObject_CallNoArg(func)
* PyObject_CallFunctionObjArgs(func, arg, NULL) => _PyObject_CallArg1(func, arg)

PyObject_CallFunctionObjArgs() allocates 40 bytes on the C stack and requires
extra work to "parse" C arguments to build a C array of PyObject*.

_PyObject_CallNoArg() and _PyObject_CallArg1() are simpler and don't allocate
memory on the C stack.

This change is part of the fastcall project. The change on listsort() is
related to the issue #23507.
33 files changed:
Modules/_asynciomodule.c
Modules/_csv.c
Modules/_elementtree.c
Modules/_json.c
Modules/_ssl.c
Modules/_struct.c
Modules/_testbuffer.c
Modules/gcmodule.c
Modules/itertoolsmodule.c
Modules/mathmodule.c
Modules/posixmodule.c
Objects/abstract.c
Objects/bytearrayobject.c
Objects/bytesobject.c
Objects/complexobject.c
Objects/descrobject.c
Objects/dictobject.c
Objects/enumobject.c
Objects/floatobject.c
Objects/genobject.c
Objects/listobject.c
Objects/longobject.c
Objects/memoryobject.c
Objects/object.c
Objects/odictobject.c
Objects/typeobject.c
Objects/unicodeobject.c
Objects/weakrefobject.c
Python/_warnings.c
Python/bltinmodule.c
Python/ceval.c
Python/import.c
Python/sysmodule.c