diff options
author | INADA Naoki <songofacandy@gmail.com> | 2017-01-16 17:23:30 +0900 |
---|---|---|
committer | INADA Naoki <songofacandy@gmail.com> | 2017-01-16 17:23:30 +0900 |
commit | fb133ca2ee4decf7f9a30ad020564617783403ce (patch) | |
tree | d0bc0abedf1385588022bebc33bdbc3cf7e32c42 /Doc | |
parent | 235c7606f44905a732b270f114c3e3c24c6d2e43 (diff) | |
download | cpython-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.rst | 22 | ||||
-rw-r--r-- | Doc/whatsnew/3.7.rst | 7 |
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`.) |