bpo-40421: Add PyFrame_GetCode() function (GH-19757)

PyFrame_GetCode(frame): return a borrowed reference to the frame
code.

Replace frame->f_code with PyFrame_GetCode(frame) in most code,
except in frameobject.c, genobject.c and ceval.c.

Also add PyFrame_GetLineNumber() to the limited C API.
This commit is contained in:
Victor Stinner 2020-04-28 19:01:31 +02:00 committed by GitHub
parent b8f704d219
commit a42ca74fa3
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
12 changed files with 58 additions and 25 deletions

View file

@ -1074,8 +1074,10 @@ All of the following functions must be called after :c:func:`Py_Initialize`.
.. c:function:: PyFrameObject* PyThreadState_GetFrame(PyThreadState *tstate)
Get the current frame of the Python thread state *tstate*. It can be
``NULL`` if no frame is currently executing.
Get a borrowed reference to the current frame of the Python thread state
*tstate*.
Return ``NULL`` if no frame is currently executing.
See also :c:func:`PyEval_GetFrame`.

View file

@ -31,6 +31,15 @@ Reflection
See also :c:func:`PyThreadState_GetFrame`.
.. c:function:: int PyFrame_GetCode(PyFrameObject *frame)
Return a borrowed reference to the *frame* code.
*frame* must not be ``NULL``.
.. versionadded:: 3.9
.. c:function:: int PyFrame_GetLineNumber(PyFrameObject *frame)
Return the line number that *frame* is currently executing.