From eb698fe68c38bf7d2eb0bebbccdcef5dfa0eccfd Mon Sep 17 00:00:00 2001 From: Yury Selivanov Date: Tue, 2 Jun 2015 22:30:31 -0400 Subject: Issue 24342: No need to use PyAPI_FUNC for _PyEval_ApplyCoroutineWrapper --- Include/ceval.h | 1 - Python/ceval.c | 58 +++++++++++++++++++++++++++++---------------------------- 2 files changed, 30 insertions(+), 29 deletions(-) diff --git a/Include/ceval.h b/Include/ceval.h index 9f4d3f1..ec62571 100644 --- a/Include/ceval.h +++ b/Include/ceval.h @@ -25,7 +25,6 @@ PyAPI_FUNC(void) PyEval_SetProfile(Py_tracefunc, PyObject *); PyAPI_FUNC(void) PyEval_SetTrace(Py_tracefunc, PyObject *); PyAPI_FUNC(void) _PyEval_SetCoroutineWrapper(PyObject *); PyAPI_FUNC(PyObject *) _PyEval_GetCoroutineWrapper(void); -PyAPI_FUNC(PyObject *) _PyEval_ApplyCoroutineWrapper(PyObject *); #endif struct _frame; /* Avoid including frameobject.h */ diff --git a/Python/ceval.c b/Python/ceval.c index 2a1db17..96ed6ed 100644 --- a/Python/ceval.c +++ b/Python/ceval.c @@ -146,6 +146,8 @@ static void format_exc_unbound(PyCodeObject *co, int oparg); static PyObject * unicode_concatenate(PyObject *, PyObject *, PyFrameObject *, unsigned char *); static PyObject * special_lookup(PyObject *, _Py_Identifier *); +static PyObject * apply_coroutine_wrapper(PyObject *); + #define NAME_ERROR_MSG \ "name '%.200s' is not defined" @@ -3935,7 +3937,7 @@ _PyEval_EvalCodeWithName(PyObject *_co, PyObject *globals, PyObject *locals, return NULL; if (co->co_flags & (CO_COROUTINE | CO_ITERABLE_COROUTINE)) - return _PyEval_ApplyCoroutineWrapper(gen); + return apply_coroutine_wrapper(gen); return gen; } @@ -4402,33 +4404,6 @@ _PyEval_GetCoroutineWrapper(void) } PyObject * -_PyEval_ApplyCoroutineWrapper(PyObject *gen) -{ - PyObject *wrapped; - PyThreadState *tstate = PyThreadState_GET(); - PyObject *wrapper = tstate->coroutine_wrapper; - - if (tstate->in_coroutine_wrapper) { - assert(wrapper != NULL); - PyErr_Format(PyExc_RuntimeError, - "coroutine wrapper %.150R attempted " - "to recursively wrap %.150R", - wrapper, - gen); - return NULL; - } - - if (wrapper == NULL) { - return gen; - } - - tstate->in_coroutine_wrapper = 1; - wrapped = PyObject_CallFunction(wrapper, "N", gen); - tstate->in_coroutine_wrapper = 0; - return wrapped; -} - -PyObject * PyEval_GetBuiltins(void) { PyFrameObject *current_frame = PyEval_GetFrame(); @@ -5257,6 +5232,33 @@ unicode_concatenate(PyObject *v, PyObject *w, return res; } +static PyObject * +apply_coroutine_wrapper(PyObject *gen) +{ + PyObject *wrapped; + PyThreadState *tstate = PyThreadState_GET(); + PyObject *wrapper = tstate->coroutine_wrapper; + + if (tstate->in_coroutine_wrapper) { + assert(wrapper != NULL); + PyErr_Format(PyExc_RuntimeError, + "coroutine wrapper %.200R attempted " + "to recursively wrap %.200R", + wrapper, + gen); + return NULL; + } + + if (wrapper == NULL) { + return gen; + } + + tstate->in_coroutine_wrapper = 1; + wrapped = PyObject_CallFunction(wrapper, "N", gen); + tstate->in_coroutine_wrapper = 0; + return wrapped; +} + #ifdef DYNAMIC_EXECUTION_PROFILE static PyObject * -- cgit v0.12