summaryrefslogtreecommitdiffstats
path: root/Python
diff options
context:
space:
mode:
authorVictor Stinner <vstinner@python.org>2020-03-20 16:46:56 (GMT)
committerGitHub <noreply@github.com>2020-03-20 16:46:56 (GMT)
commit6723e933c4d90a408cf3818362a0e4de6d84c932 (patch)
treefd3c18220235a2ad81a97a1a4728cb145c4fe4c8 /Python
parentfd1e1a18fa3befe5b6eeac32e0561e15c7e5164b (diff)
downloadcpython-6723e933c4d90a408cf3818362a0e4de6d84c932.zip
cpython-6723e933c4d90a408cf3818362a0e4de6d84c932.tar.gz
cpython-6723e933c4d90a408cf3818362a0e4de6d84c932.tar.bz2
bpo-39946: Remove _PyThreadState_GetFrame (GH-19094)
Remove _PyRuntime.getframe hook and remove _PyThreadState_GetFrame macro which was an alias to _PyRuntime.getframe. They were only exposed by the internal C API. Remove also PyThreadFrameGetter type.
Diffstat (limited to 'Python')
-rw-r--r--Python/ceval.c17
-rw-r--r--Python/pystate.c16
-rw-r--r--Python/traceback.c2
3 files changed, 7 insertions, 28 deletions
diff --git a/Python/ceval.c b/Python/ceval.c
index c80ee4b..836457d 100644
--- a/Python/ceval.c
+++ b/Python/ceval.c
@@ -4825,25 +4825,18 @@ _PyEval_GetAsyncGenFinalizer(void)
return tstate->async_gen_finalizer;
}
-static PyFrameObject *
-_PyEval_GetFrame(PyThreadState *tstate)
-{
- _PyRuntimeState *runtime = tstate->interp->runtime;
- return runtime->gilstate.getframe(tstate);
-}
-
PyFrameObject *
PyEval_GetFrame(void)
{
PyThreadState *tstate = _PyThreadState_GET();
- return _PyEval_GetFrame(tstate);
+ return tstate->frame;
}
PyObject *
PyEval_GetBuiltins(void)
{
PyThreadState *tstate = _PyThreadState_GET();
- PyFrameObject *current_frame = _PyEval_GetFrame(tstate);
+ PyFrameObject *current_frame = tstate->frame;
if (current_frame == NULL)
return tstate->interp->builtins;
else
@@ -4869,7 +4862,7 @@ PyObject *
PyEval_GetLocals(void)
{
PyThreadState *tstate = _PyThreadState_GET();
- PyFrameObject *current_frame = _PyEval_GetFrame(tstate);
+ PyFrameObject *current_frame = tstate->frame;
if (current_frame == NULL) {
_PyErr_SetString(tstate, PyExc_SystemError, "frame does not exist");
return NULL;
@@ -4887,7 +4880,7 @@ PyObject *
PyEval_GetGlobals(void)
{
PyThreadState *tstate = _PyThreadState_GET();
- PyFrameObject *current_frame = _PyEval_GetFrame(tstate);
+ PyFrameObject *current_frame = tstate->frame;
if (current_frame == NULL) {
return NULL;
}
@@ -4900,7 +4893,7 @@ int
PyEval_MergeCompilerFlags(PyCompilerFlags *cf)
{
PyThreadState *tstate = _PyThreadState_GET();
- PyFrameObject *current_frame = _PyEval_GetFrame(tstate);
+ PyFrameObject *current_frame = tstate->frame;
int result = cf->cf_flags != 0;
if (current_frame != NULL) {
diff --git a/Python/pystate.c b/Python/pystate.c
index eea666b..6331a85 100644
--- a/Python/pystate.c
+++ b/Python/pystate.c
@@ -546,13 +546,6 @@ PyInterpreterState_GetDict(PyInterpreterState *interp)
return interp->dict;
}
-/* Default implementation for _PyThreadState_GetFrame */
-static struct _frame *
-threadstate_getframe(PyThreadState *self)
-{
- return self->frame;
-}
-
static PyThreadState *
new_threadstate(PyInterpreterState *interp, int init)
{
@@ -562,10 +555,6 @@ new_threadstate(PyInterpreterState *interp, int init)
return NULL;
}
- if (_PyThreadState_GetFrame == NULL) {
- _PyThreadState_GetFrame = threadstate_getframe;
- }
-
tstate->interp = interp;
tstate->frame = NULL;
@@ -1000,9 +989,6 @@ PyInterpreterState *
PyThreadState_GetInterpreter(PyThreadState *tstate)
{
assert(tstate != NULL);
- if (tstate == NULL) {
- return NULL;
- }
return tstate->interp;
}
@@ -1011,7 +997,7 @@ struct _frame*
PyThreadState_GetFrame(PyThreadState *tstate)
{
assert(tstate != NULL);
- return _PyThreadState_GetFrame(tstate);
+ return tstate->frame;
}
diff --git a/Python/traceback.c b/Python/traceback.c
index 8aaee12..f88ba1d 100644
--- a/Python/traceback.c
+++ b/Python/traceback.c
@@ -801,7 +801,7 @@ dump_traceback(int fd, PyThreadState *tstate, int write_header)
PUTS(fd, "Stack (most recent call first):\n");
}
- frame = _PyThreadState_GetFrame(tstate);
+ frame = tstate->frame;
if (frame == NULL) {
PUTS(fd, "<no Python frame>\n");
return;