From: Victor Stinner Date: Wed, 25 Oct 2017 12:26:17 +0000 (-0700) Subject: bpo-31835: Optimize also FASTCALL using __future__ (#4087) X-Git-Tag: v3.7.0a3~309 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=086c3ae5f0995a62092b9080f32dd118c2923453;p=thirdparty%2FPython%2Fcpython.git bpo-31835: Optimize also FASTCALL using __future__ (#4087) _PyFunction_FastCallDict() and _PyFunction_FastCallKeywords() now also takes the fast path if the code object uses __future__ (CO_FUTURE_xxx flags). --- diff --git a/Objects/call.c b/Objects/call.c index 91e607831177..7b46dbc822ea 100644 --- a/Objects/call.c +++ b/Objects/call.c @@ -315,7 +315,7 @@ _PyFunction_FastCallDict(PyObject *func, PyObject **args, Py_ssize_t nargs, if (co->co_kwonlyargcount == 0 && (kwargs == NULL || PyDict_GET_SIZE(kwargs) == 0) && - co->co_flags == (CO_OPTIMIZED | CO_NEWLOCALS | CO_NOFREE)) + (co->co_flags & ~PyCF_MASK) == (CO_OPTIMIZED | CO_NEWLOCALS | CO_NOFREE)) { /* Fast paths */ if (argdefs == NULL && co->co_argcount == nargs) { @@ -402,7 +402,7 @@ _PyFunction_FastCallKeywords(PyObject *func, PyObject **stack, be unique */ if (co->co_kwonlyargcount == 0 && nkwargs == 0 && - co->co_flags == (CO_OPTIMIZED | CO_NEWLOCALS | CO_NOFREE)) + (co->co_flags & ~PyCF_MASK) == (CO_OPTIMIZED | CO_NEWLOCALS | CO_NOFREE)) { if (argdefs == NULL && co->co_argcount == nargs) { return function_code_fastcall(co, stack, nargs, globals);