gh-91502: Add a new API to check if a frame is an entry frame (GH-91503)

This commit is contained in:
Pablo Galindo Salgado 2022-04-13 14:06:56 +01:00 committed by GitHub
parent 54f67ad543
commit 37a53fb6bd
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 20 additions and 0 deletions

View File

@ -19,6 +19,16 @@ PyAPI_FUNC(PyFrameObject *) PyFrame_New(PyThreadState *, PyCodeObject *,
PyAPI_FUNC(void) PyFrame_LocalsToFast(PyFrameObject *, int);
/* -- Caveat emptor --
* The concept of entry frames is an implementation detail of the CPython
* interpreter. This API is considered unstable and is provided for the
* convenience of debuggers, profilers and state-inspecting tools. Notice that
* this API can be changed in future minor versions if the underlying frame
* mechanism change or the concept of an 'entry frame' or its semantics becomes
* obsolete or outdated. */
PyAPI_FUNC(int) _PyFrame_IsEntryFrame(PyFrameObject *frame);
PyAPI_FUNC(int) PyFrame_FastToLocalsWithError(PyFrameObject *f);
PyAPI_FUNC(void) PyFrame_FastToLocals(PyFrameObject *);

View File

@ -0,0 +1,2 @@
Add a new :c:func:`_PyFrame_IsEntryFrame` API function, to check if a
:c:type:`PyFrameObject` is an entry frame. Patch by Pablo Galindo.

View File

@ -1104,6 +1104,14 @@ PyFrame_LocalsToFast(PyFrameObject *f, int clear)
}
}
int _PyFrame_IsEntryFrame(PyFrameObject *frame)
{
assert(frame != NULL);
return frame->f_frame->is_entry;
}
PyCodeObject *
PyFrame_GetCode(PyFrameObject *frame)
{