GH-93429: Document LOAD_METHOD removal (GH-93803)

This commit is contained in:
Ken Jin 2022-06-14 21:43:28 +08:00 committed by GitHub
parent a338e106b6
commit 38a7f787d8
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 23 additions and 13 deletions

View file

@ -887,7 +887,20 @@ iterations of the loop.
.. 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)
@ -1189,18 +1202,6 @@ iterations of the loop.
.. 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
Pushes a ``NULL`` to the stack.

View file

@ -106,6 +106,15 @@ Optimizations
(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
==========