summaryrefslogtreecommitdiff
path: root/Doc
diff options
context:
space:
mode:
authorINADA Naoki <songofacandy@gmail.com>2017-01-16 17:23:30 +0900
committerINADA Naoki <songofacandy@gmail.com>2017-01-16 17:23:30 +0900
commitfb133ca2ee4decf7f9a30ad020564617783403ce (patch)
treed0bc0abedf1385588022bebc33bdbc3cf7e32c42 /Doc
parent235c7606f44905a732b270f114c3e3c24c6d2e43 (diff)
downloadcpython-fb133ca2ee4decf7f9a30ad020564617783403ce.tar.gz
Issue #26110: Add document for LOAD_METHOD and CALL_METHOD opcode.
Changed stack layout bit for "easy to explain."
Diffstat (limited to 'Doc')
-rw-r--r--Doc/library/dis.rst22
-rw-r--r--Doc/whatsnew/3.7.rst7
2 files changed, 29 insertions, 0 deletions
diff --git a/Doc/library/dis.rst b/Doc/library/dis.rst
index a15690ba48..694d5642fb 100644
--- a/Doc/library/dis.rst
+++ b/Doc/library/dis.rst
@@ -957,6 +957,28 @@ All of the following opcodes use their arguments.
value.
+.. opcode:: LOAD_METHOD (namei)
+
+ Loads a method named ``co_names[namei]`` from TOS object. TOS is popped and
+ method and TOS are pushed when interpreter can call unbound method directly.
+ TOS will be uesd as the first argument (``self``) by :opcode:`CALL_METHOD`.
+ Otherwise, ``NULL`` and method is pushed (method is bound method or
+ something else).
+
+ .. versionadded:: 3.7
+
+
+.. opcode:: CALL_METHOD (argc)
+
+ Calls a method. *argc* is number of positional arguments.
+ Keyword arguments are not supported. This opcode is designed to be used
+ with :opcode:`LOAD_METHOD`. Positional arguments are on top of the stack.
+ Below them, two items described in :opcode:`LOAD_METHOD` on the stack.
+ All of them are popped and return value is pushed.
+
+ .. versionadded:: 3.7
+
+
.. opcode:: MAKE_FUNCTION (argc)
Pushes a new function object on the stack. From bottom to top, the consumed
diff --git a/Doc/whatsnew/3.7.rst b/Doc/whatsnew/3.7.rst
index ca7c2c5381..fe03defa65 100644
--- a/Doc/whatsnew/3.7.rst
+++ b/Doc/whatsnew/3.7.rst
@@ -170,3 +170,10 @@ Changes in the Python API
Assigning to them was deprecated in Python 3.5.
Use the :meth:`~http.cookies.Morsel.set` method for setting them.
(Contributed by Serhiy Storchaka in :issue:`29192`.)
+
+
+CPython bytecode changes
+------------------------
+
+* Added two new opcodes: :opcode:`LOAD_METHOD`` and :opcode:`CALL_METHOD`.
+ (Contributed by Yury Selivanov and INADA Naoki in :issue:`26110`.)