Streamline the fast track for CFunction calls a bit more: there was

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.
This commit is contained in:
Guido van Rossum 2002-08-16 16:14:00 +00:00
parent 49931887d7
commit c13f724af0
1 changed files with 2 additions and 5 deletions

View File

@ -1975,12 +1975,9 @@ eval_frame(PyFrameObject *f)
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);