nothing special done if keyword arguments were present, so test for
that earlier and fall through to the normal case if there are any.
This ought to slow down CFunction calls with keyword args, but I don't
care; it's a tiny (1%) improvement for pystone.
these are presumed to be the most frequent
callable object.
*/
- if (PyCFunction_Check(func)) {
+ if (PyCFunction_Check(func) && nk == 0) {
int flags = PyCFunction_GET_FLAGS(func);
- if (nk != 0 || (flags & METH_KEYWORDS))
- x = do_call(func, &stack_pointer,
- na, nk);
- else if (flags == METH_VARARGS) {
+ if (flags & (METH_VARARGS | METH_KEYWORDS)) {
PyObject *callargs;
callargs = load_args(&stack_pointer, na);
x = PyCFunction_Call(func, callargs, NULL);