mirror of
https://github.com/python/cpython.git
synced 2025-09-26 18:29:57 +00:00
GH-93429: Document LOAD_METHOD
removal (GH-93803)
This commit is contained in:
parent
a338e106b6
commit
38a7f787d8
2 changed files with 23 additions and 13 deletions
|
@ -887,7 +887,20 @@ iterations of the loop.
|
||||||
|
|
||||||
.. opcode:: LOAD_ATTR (namei)
|
.. opcode:: LOAD_ATTR (namei)
|
||||||
|
|
||||||
Replaces TOS with ``getattr(TOS, co_names[namei])``.
|
If the low bit of ``namei`` is not set, this replaces TOS with
|
||||||
|
``getattr(TOS, co_names[namei>>1])``.
|
||||||
|
|
||||||
|
If the low bit of ``namei`` is set, this will attempt to load a method named
|
||||||
|
``co_names[namei>>1]`` from the TOS object. TOS is popped.
|
||||||
|
This bytecode distinguishes two cases: if TOS has a method with the correct
|
||||||
|
name, the bytecode pushes the unbound method and TOS. TOS will be used as
|
||||||
|
the first argument (``self``) by :opcode:`CALL` when calling the
|
||||||
|
unbound method. Otherwise, ``NULL`` and the object return by the attribute
|
||||||
|
lookup are pushed.
|
||||||
|
|
||||||
|
.. versionchanged:: 3.11
|
||||||
|
If the low bit of ``namei`` is set, then a ``NULL`` or ``self`` is
|
||||||
|
pushed to the stack before the attribute or unbound method respectively.
|
||||||
|
|
||||||
|
|
||||||
.. opcode:: COMPARE_OP (opname)
|
.. opcode:: COMPARE_OP (opname)
|
||||||
|
@ -1189,18 +1202,6 @@ iterations of the loop.
|
||||||
.. versionadded:: 3.6
|
.. versionadded:: 3.6
|
||||||
|
|
||||||
|
|
||||||
.. opcode:: LOAD_METHOD (namei)
|
|
||||||
|
|
||||||
Loads a method named ``co_names[namei]`` from the TOS object. TOS is popped.
|
|
||||||
This bytecode distinguishes two cases: if TOS has a method with the correct
|
|
||||||
name, the bytecode pushes the unbound method and TOS. TOS will be used as
|
|
||||||
the first argument (``self``) by :opcode:`CALL` when calling the
|
|
||||||
unbound method. Otherwise, ``NULL`` and the object return by the attribute
|
|
||||||
lookup are pushed.
|
|
||||||
|
|
||||||
.. versionadded:: 3.7
|
|
||||||
|
|
||||||
|
|
||||||
.. opcode:: PUSH_NULL
|
.. opcode:: PUSH_NULL
|
||||||
|
|
||||||
Pushes a ``NULL`` to the stack.
|
Pushes a ``NULL`` to the stack.
|
||||||
|
|
|
@ -106,6 +106,15 @@ Optimizations
|
||||||
(Contributed by Inada Naoki in :gh:`92536`.)
|
(Contributed by Inada Naoki in :gh:`92536`.)
|
||||||
|
|
||||||
|
|
||||||
|
CPython bytecode changes
|
||||||
|
========================
|
||||||
|
|
||||||
|
* Removed the :opcode:`LOAD_METHOD` instruction. It has been merged into
|
||||||
|
:opcode:`LOAD_ATTR`. :opcode:`LOAD_ATTR` will now behave like the old
|
||||||
|
:opcode:`LOAD_METHOD` instruction if the low bit of its oparg is set.
|
||||||
|
(Contributed by Ken Jin in :gh:`93429`.)
|
||||||
|
|
||||||
|
|
||||||
Deprecated
|
Deprecated
|
||||||
==========
|
==========
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue