Skip to content

Commit fc84073

Browse files
bpo-44964: Add a note explaining the new semantics of f_last_i in frame objects (GH-28200)
(cherry picked from commit fa2c0b8) Co-authored-by: Pablo Galindo Salgado <[email protected]>
1 parent 608a629 commit fc84073

File tree

2 files changed

+9
-2
lines changed

2 files changed

+9
-2
lines changed

Doc/reference/datamodel.rst

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1034,8 +1034,9 @@ Internal types
10341034
:attr:`f_code` is the code object being executed in this frame; :attr:`f_locals`
10351035
is the dictionary used to look up local variables; :attr:`f_globals` is used for
10361036
global variables; :attr:`f_builtins` is used for built-in (intrinsic) names;
1037-
:attr:`f_lasti` gives the precise instruction (this is an index into the
1038-
bytecode string of the code object).
1037+
:attr:`f_lasti` gives the precise instruction (it represents a wordcode index, which
1038+
means that to get an index into the bytecode string of the code object it needs to be
1039+
multiplied by 2).
10391040

10401041
Accessing ``f_code`` raises an :ref:`auditing event <auditing>`
10411042
``object.__getattr__`` with arguments ``obj`` and ``"f_code"``.

Doc/whatsnew/3.10.rst

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1944,6 +1944,12 @@ Changes in the C API
19441944
source_buf = PyBytes_AsString(source_bytes_object);
19451945
code = Py_CompileString(source_buf, filename, Py_file_input);
19461946
1947+
* For ``FrameObject`` objects, the ``f_lasti`` member now represents a wordcode
1948+
offset instead of a simple offset into the bytecode string. This means that this
1949+
number needs to be multiplied by 2 to be used with APIs that expect a byte offset
1950+
instead (like :c:func:`PyCode_Addr2Line` for example). Notice as well that the
1951+
``f_lasti`` member of ``FrameObject`` objects is not considered stable.
1952+
19471953
CPython bytecode changes
19481954
========================
19491955

0 commit comments

Comments
 (0)