Skip to content

[3.6] bpo-26213: Document _UNPACK bytecodes and BUILD_MAP changes #440

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Mar 3, 2017
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
55 changes: 53 additions & 2 deletions Doc/library/dis.rst
Original file line number Diff line number Diff line change
Expand Up @@ -772,8 +772,13 @@ All of the following opcodes use their arguments.

.. opcode:: BUILD_MAP (count)

Pushes a new dictionary object onto the stack. The dictionary is pre-sized
to hold *count* entries.
Pushes a new dictionary object onto the stack. Pops ``2 * count`` items
so that the dictionary holds *count* entries:
``{..., TOS3: TOS2, TOS1: TOS}``.

.. versionchanged:: 3.5
The dictionary is created from stack items instead of creating an
empty dictionary pre-sized to hold *count* items.


.. opcode:: BUILD_CONST_KEY_MAP (count)
Expand All @@ -793,6 +798,52 @@ All of the following opcodes use their arguments.
.. versionadded:: 3.6


.. opcode:: BUILD_TUPLE_UNPACK (count)

Pops *count* iterables from the stack, joins them in a single tuple,
and pushes the result. Implements iterable unpacking in tuple
displays ``(*x, *y, *z)``.

.. versionadded:: 3.5


.. opcode:: BUILD_LIST_UNPACK (count)

This is similar to :opcode:`BUILD_TUPLE_UNPACK`, but pushes a list
instead of tuple. Implements iterable unpacking in list
displays ``[*x, *y, *z]``.

.. versionadded:: 3.5


.. opcode:: BUILD_SET_UNPACK (count)

This is similar to :opcode:`BUILD_TUPLE_UNPACK`, but pushes a set
instead of tuple. Implements iterable unpacking in set
displays ``{*x, *y, *z}``.

.. versionadded:: 3.5


.. opcode:: BUILD_MAP_UNPACK (count)

Pops *count* mappings from the stack, merges them into a single dictionary,
and pushes the result. Implements dictionary unpacking in dictionary
displays ``{**x, **y, **z}``.

.. versionadded:: 3.5


.. opcode:: BUILD_MAP_UNPACK_WITH_CALL (oparg)

This is similar to :opcode:`BUILD_MAP_UNPACK`,
but is used for ``f(**x, **y, **z)`` call syntax. The lowest byte of
*oparg* is the count of mappings, the relative position of the
corresponding callable ``f`` is encoded in the second byte of *oparg*.

.. versionadded:: 3.5


.. opcode:: LOAD_ATTR (namei)

Replaces TOS with ``getattr(TOS, co_names[namei])``.
Expand Down