]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
Backport Jeremy's checkin 2.244:
authorThomas Wouters <thomas@python.org>
Wed, 27 Jun 2001 13:09:44 +0000 (13:09 +0000)
committerThomas Wouters <thomas@python.org>
Wed, 27 Jun 2001 13:09:44 +0000 (13:09 +0000)
Add a second special case to the inline function call code in eval_code2().

If we have a PyCFunction (builtin) and it is METH_VARARGS only, load
the args and dispatch to call_cfunction() directly.  This provides a
small speedup for perhaps the most common function calls -- builtins.

Python/ceval.c

index b6686b6e1bf8648fdc6fcb382215ac5cabef09c7..64dbf983c8aa7e217e593bc01043bc9911397827 100644 (file)
@@ -1941,7 +1941,13 @@ eval_code2(PyCodeObject *co, PyObject *globals, PyObject *locals,
                       callable object.
                    */
                    if (PyCFunction_Check(func)) {
-                           if (PyCFunction_GET_FLAGS(func) == 0) {
+                           int flags = PyCFunction_GET_FLAGS(func);
+                           if (flags == METH_VARARGS) {
+                                   PyObject *callargs;
+                                   callargs = load_args(&stack_pointer, na);
+                                   x = call_cfunction(func, callargs, NULL);
+                                   Py_XDECREF(callargs); 
+                           } else if (flags == 0) {
                                    x = fast_cfunction(func,
                                                       &stack_pointer, na);
                            } else {