summaryrefslogtreecommitdiffstats
path: root/Python/ceval.c
diff options
context:
space:
mode:
authorMark Shannon <mark@hotpy.org>2021-10-11 10:34:02 (GMT)
committerGitHub <noreply@github.com>2021-10-11 10:34:02 (GMT)
commitfcb3d2ff633f3e9a826888d8b29c305a3959ff54 (patch)
tree5d9367bbe6e235521f32c5163df69404cc840a51 /Python/ceval.c
parent9883ca498d654a4792d530bd8d6d64fef4dc971c (diff)
downloadcpython-fcb3d2ff633f3e9a826888d8b29c305a3959ff54.zip
cpython-fcb3d2ff633f3e9a826888d8b29c305a3959ff54.tar.gz
cpython-fcb3d2ff633f3e9a826888d8b29c305a3959ff54.tar.bz2
Restore PEP 523 functionality. (GH-28871)
Diffstat (limited to 'Python/ceval.c')
-rw-r--r--Python/ceval.c6
1 files changed, 2 insertions, 4 deletions
diff --git a/Python/ceval.c b/Python/ceval.c
index df435bf..a63b803 100644
--- a/Python/ceval.c
+++ b/Python/ceval.c
@@ -4612,7 +4612,7 @@ check_eval_breaker:
// Check if the call can be inlined or not
PyObject *function = PEEK(oparg + 1);
- if (Py_TYPE(function) == &PyFunction_Type) {
+ if (Py_TYPE(function) == &PyFunction_Type && tstate->interp->eval_frame == NULL) {
int code_flags = ((PyCodeObject*)PyFunction_GET_CODE(function))->co_flags;
PyObject *locals = code_flags & CO_OPTIMIZED ? NULL : PyFunction_GET_GLOBALS(function);
int is_generator = code_flags & (CO_GENERATOR | CO_COROUTINE | CO_ASYNC_GENERATOR);
@@ -4630,7 +4630,6 @@ check_eval_breaker:
}
STACK_SHRINK(oparg + 1);
- assert(tstate->interp->eval_frame != NULL);
// The frame has stolen all the arguments from the stack,
// so there is no need to clean them up.
Py_DECREF(function);
@@ -5687,7 +5686,7 @@ _PyEvalFramePushAndInit(PyThreadState *tstate, PyFrameConstructor *con,
if (steal_args) {
// If we failed to initialize locals, make sure the caller still own all the
// arguments. Notice that we only need to increase the reference count of the
- // *valid* arguments (i.e. the ones that fit into the frame).
+ // *valid* arguments (i.e. the ones that fit into the frame).
PyCodeObject *co = (PyCodeObject*)con->fc_code;
const size_t total_args = co->co_argcount + co->co_kwonlyargcount;
for (size_t i = 0; i < Py_MIN(argcount, total_args); i++) {
@@ -5734,7 +5733,6 @@ _PyEval_Vector(PyThreadState *tstate, PyFrameConstructor *con,
if (frame == NULL) {
return NULL;
}
- assert (tstate->interp->eval_frame != NULL);
PyObject *retval = _PyEval_EvalFrame(tstate, frame, 0);
assert(_PyFrame_GetStackPointer(frame) == _PyFrame_Stackbase(frame));
if (_PyEvalFrameClearAndPop(tstate, frame)) {