mirror of
https://github.com/python/cpython.git
synced 2025-09-30 12:21:51 +00:00
bpo-28810: Document remaining bytecode changes in 3.6 (GH-651) (GH-808)
(cherry picked from commit 8f9e1bbf2d
)
This commit is contained in:
parent
8c8785b2f8
commit
74bfcc314b
1 changed files with 16 additions and 2 deletions
|
@ -20,6 +20,10 @@ interpreter.
|
||||||
between versions of Python. Use of this module should not be considered to
|
between versions of Python. Use of this module should not be considered to
|
||||||
work across Python VMs or Python releases.
|
work across Python VMs or Python releases.
|
||||||
|
|
||||||
|
.. versionchanged:: 3.6
|
||||||
|
Use 2 bytes for each instruction. Previously the number of bytes varied
|
||||||
|
by instruction.
|
||||||
|
|
||||||
|
|
||||||
Example: Given the function :func:`myfunc`::
|
Example: Given the function :func:`myfunc`::
|
||||||
|
|
||||||
|
@ -210,6 +214,11 @@ operation is being performed, so the intermediate analysis object isn't useful:
|
||||||
This generator function uses the ``co_firstlineno`` and ``co_lnotab``
|
This generator function uses the ``co_firstlineno`` and ``co_lnotab``
|
||||||
attributes of the code object *code* to find the offsets which are starts of
|
attributes of the code object *code* to find the offsets which are starts of
|
||||||
lines in the source code. They are generated as ``(offset, lineno)`` pairs.
|
lines in the source code. They are generated as ``(offset, lineno)`` pairs.
|
||||||
|
See :source:`Objects/lnotab_notes.txt` for the ``co_lnotab`` format and
|
||||||
|
how to decode it.
|
||||||
|
|
||||||
|
.. versionchanged:: 3.6
|
||||||
|
Line numbers can be decreasing. Before, they were always increasing.
|
||||||
|
|
||||||
|
|
||||||
.. function:: findlabels(code)
|
.. function:: findlabels(code)
|
||||||
|
@ -1105,8 +1114,13 @@ All of the following opcodes use their arguments.
|
||||||
.. opcode:: HAVE_ARGUMENT
|
.. opcode:: HAVE_ARGUMENT
|
||||||
|
|
||||||
This is not really an opcode. It identifies the dividing line between
|
This is not really an opcode. It identifies the dividing line between
|
||||||
opcodes which don't take arguments ``< HAVE_ARGUMENT`` and those which do
|
opcodes which don't use their argument and those that do
|
||||||
``>= HAVE_ARGUMENT``.
|
(``< HAVE_ARGUMENT`` and ``>= HAVE_ARGUMENT``, respectively).
|
||||||
|
|
||||||
|
.. versionchanged:: 3.6
|
||||||
|
Now every instruction has an argument, but opcodes ``< HAVE_ARGUMENT``
|
||||||
|
ignore it. Before, only opcodes ``>= HAVE_ARGUMENT`` had an argument.
|
||||||
|
|
||||||
|
|
||||||
.. _opcode_collections:
|
.. _opcode_collections:
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue