[Python-checkins] GH-93429: Document `LOAD_METHOD` removal (GH-93803)

Fidget-Spinner webhook-mailer at python.org
Tue Jun 14 09:43:38 EDT 2022


https://github.com/python/cpython/commit/38a7f787d8613b31b81774e780cd9b7e83039d25
commit: 38a7f787d8613b31b81774e780cd9b7e83039d25
branch: main
author: Ken Jin <kenjin4096 at gmail.com>
committer: Fidget-Spinner <kenjin at python.org>
date: 2022-06-14T21:43:28+08:00
summary:

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

files:
M Doc/library/dis.rst
M Doc/whatsnew/3.12.rst

diff --git a/Doc/library/dis.rst b/Doc/library/dis.rst
index 9163d1a4421a8..a6574c4ec1030 100644
--- a/Doc/library/dis.rst
+++ b/Doc/library/dis.rst
@@ -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.
diff --git a/Doc/whatsnew/3.12.rst b/Doc/whatsnew/3.12.rst
index 5e295f0c469ec..59eb4348cdca4 100644
--- a/Doc/whatsnew/3.12.rst
+++ b/Doc/whatsnew/3.12.rst
@@ -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
 ==========
 



More information about the Python-checkins mailing list