Commit c13f724a authored by Guido van Rossum's avatar Guido van Rossum

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.
parent 49931887
......@@ -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);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment