[Python-checkins] bpo-31835: Optimize also FASTCALL using __future__ (#4087)

Victor Stinner webhook-mailer at python.org
Wed Oct 25 08:26:20 EDT 2017


https://github.com/python/cpython/commit/086c3ae5f0995a62092b9080f32dd118c2923453
commit: 086c3ae5f0995a62092b9080f32dd118c2923453
branch: master
author: Victor Stinner <victor.stinner at gmail.com>
committer: GitHub <noreply at github.com>
date: 2017-10-25T05:26:17-07:00
summary:

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

files:
M Objects/call.c

diff --git a/Objects/call.c b/Objects/call.c
index 91e60783117..7b46dbc822e 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);



More information about the Python-checkins mailing list