]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
GH-93429: Document `LOAD_METHOD` removal (GH-93803)
authorKen Jin <kenjin4096@gmail.com>
Tue, 14 Jun 2022 13:43:28 +0000 (21:43 +0800)
committerGitHub <noreply@github.com>
Tue, 14 Jun 2022 13:43:28 +0000 (21:43 +0800)
Doc/library/dis.rst
Doc/whatsnew/3.12.rst

index 9163d1a4421a8cc92892b3bc3f577d145dd71e26..a6574c4ec1030ba6909774a6bcdae87f76c0a4c0 100644 (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.
index 5e295f0c469eca28892a1596612296f5167d46d8..59eb4348cdca476ef33136751febe9339ec4987b 100644 (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
 ==========