File tree 2 files changed +9
-2
lines changed
2 files changed +9
-2
lines changed Original file line number Diff line number Diff line change @@ -1069,8 +1069,9 @@ Internal types
1069
1069
:attr: `f_code ` is the code object being executed in this frame; :attr: `f_locals `
1070
1070
is the dictionary used to look up local variables; :attr: `f_globals ` is used for
1071
1071
global variables; :attr: `f_builtins ` is used for built-in (intrinsic) names;
1072
- :attr: `f_lasti ` gives the precise instruction (this is an index into the
1073
- bytecode string of the code object).
1072
+ :attr: `f_lasti ` gives the precise instruction (it represents a wordcode index, which
1073
+ means that to get an index into the bytecode string of the code object it needs to be
1074
+ multiplied by 2).
1074
1075
1075
1076
Accessing ``f_code `` raises an :ref: `auditing event <auditing >`
1076
1077
``object.__getattr__ `` with arguments ``obj `` and ``"f_code" ``.
Original file line number Diff line number Diff line change @@ -1948,6 +1948,12 @@ Changes in the C API
1948
1948
source_buf = PyBytes_AsString(source_bytes_object);
1949
1949
code = Py_CompileString(source_buf, filename, Py_file_input);
1950
1950
1951
+ * For `` FrameObject`` objects, the `` f_lasti`` member now represents a wordcode
1952
+ offset instead of a simple offset into the bytecode string. This means that this
1953
+ number needs to be multiplied by 2 to be used with APIs that expect a byte offset
1954
+ instead (like :c:func:`PyCode_Addr2Line` for example). Notice as well that the
1955
+ `` f_lasti`` member of `` FrameObject`` objects is not considered stable.
1956
+
1951
1957
CPython bytecode changes
1952
1958
========================
1953
1959
You can’t perform that action at this time.
0 commit comments