diff options
author | Mark Shannon <mark@hotpy.org> | 2023-05-05 16:53:07 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-05-05 16:53:07 (GMT) |
commit | a0df9ee8fc77443510ab7e9ba8fd830f255a8fec (patch) | |
tree | 2af48b491e6dcd471fd16f04e6ae87a85b1097cd /Python/frame.c | |
parent | 45a9e3834a6ed20ee250e2e5a8583dffcef0eb73 (diff) | |
download | cpython-a0df9ee8fc77443510ab7e9ba8fd830f255a8fec.zip cpython-a0df9ee8fc77443510ab7e9ba8fd830f255a8fec.tar.gz cpython-a0df9ee8fc77443510ab7e9ba8fd830f255a8fec.tar.bz2 |
GH-96803: Add three C-API functions to make _PyInterpreterFrame less opaque for users of PEP 523. (GH-96849)
Diffstat (limited to 'Python/frame.c')
-rw-r--r-- | Python/frame.c | 18 |
1 files changed, 17 insertions, 1 deletions
diff --git a/Python/frame.c b/Python/frame.c index c2c0be3..d792b92 100644 --- a/Python/frame.c +++ b/Python/frame.c @@ -144,8 +144,24 @@ _PyFrame_ClearExceptCode(_PyInterpreterFrame *frame) Py_DECREF(frame->f_funcobj); } +/* Unstable API functions */ + +PyCodeObject * +PyUnstable_InterpreterFrame_GetCode(struct _PyInterpreterFrame *frame) +{ + PyCodeObject *code = frame->f_code; + Py_INCREF(code); + return code; +} + +int +PyUnstable_InterpreterFrame_GetLasti(struct _PyInterpreterFrame *frame) +{ + return _PyInterpreterFrame_LASTI(frame) * sizeof(_Py_CODEUNIT); +} + int -_PyInterpreterFrame_GetLine(_PyInterpreterFrame *frame) +PyUnstable_InterpreterFrame_GetLine(_PyInterpreterFrame *frame) { int addr = _PyInterpreterFrame_LASTI(frame) * sizeof(_Py_CODEUNIT); return PyCode_Addr2Line(frame->f_code, addr); |