summaryrefslogtreecommitdiff
path: root/Python/ceval.c
diff options
context:
space:
mode:
authorVictor Stinner <vstinner@python.org>2019-11-14 12:20:46 +0100
committerGitHub <noreply@github.com>2019-11-14 12:20:46 +0100
commitb9e681261cd5ce6db0a79461c58d7cc52cfa4902 (patch)
treef7ae0bd04938d34e7af64b9c7a02f2d0318aa558 /Python/ceval.c
parent3ccdd9b180f9a3f29c8ddc8ad1b331fe8df26519 (diff)
downloadcpython-git-b9e681261cd5ce6db0a79461c58d7cc52cfa4902.tar.gz
bpo-38644: Add _PyEval_EvalFrame() with tstate (GH-17131)
Add _PyEval_EvalFrame() static inline function to get eval_frame from tstate->interp.
Diffstat (limited to 'Python/ceval.c')
-rw-r--r--Python/ceval.c12
1 files changed, 7 insertions, 5 deletions
diff --git a/Python/ceval.c b/Python/ceval.c
index 4d8f1b913c..046cd69151 100644
--- a/Python/ceval.c
+++ b/Python/ceval.c
@@ -722,18 +722,20 @@ PyEval_EvalCode(PyObject *co, PyObject *globals, PyObject *locals)
/* Interpreter main loop */
PyObject *
-PyEval_EvalFrame(PyFrameObject *f) {
+PyEval_EvalFrame(PyFrameObject *f)
+{
/* This is for backward compatibility with extension modules that
used this API; core interpreter code should call
PyEval_EvalFrameEx() */
- return PyEval_EvalFrameEx(f, 0);
+ PyThreadState *tstate = _PyThreadState_GET();
+ return _PyEval_EvalFrame(tstate, f, 0);
}
PyObject *
PyEval_EvalFrameEx(PyFrameObject *f, int throwflag)
{
- PyInterpreterState *interp = _PyInterpreterState_GET_UNSAFE();
- return interp->eval_frame(f, throwflag);
+ PyThreadState *tstate = _PyThreadState_GET();
+ return _PyEval_EvalFrame(tstate, f, throwflag);
}
PyObject* _Py_HOT_FUNCTION
@@ -4295,7 +4297,7 @@ _PyEval_EvalCodeWithName(PyObject *_co, PyObject *globals, PyObject *locals,
return gen;
}
- retval = PyEval_EvalFrameEx(f,0);
+ retval = _PyEval_EvalFrame(tstate, f, 0);
fail: /* Jump here from prelude on failure */