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.
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 {