mirror of
https://github.com/python/cpython.git
synced 2025-10-16 03:40:58 +00:00
bpo-43693: Compute deref offsets in compiler (gh-25152)
Merges locals and cells into a single array. Saves a pointer in the interpreter and means that we don't need the LOAD_CLOSURE opcode any more https://bugs.python.org/issue43693
This commit is contained in:
parent
35002aa8f6
commit
b2bf2bc1ec
11 changed files with 222 additions and 209 deletions
|
@ -1058,16 +1058,24 @@ All of the following opcodes use their arguments.
|
|||
|
||||
.. opcode:: LOAD_CLOSURE (i)
|
||||
|
||||
Pushes a reference to the cell contained in slot *i* of the cell and free
|
||||
variable storage. The name of the variable is
|
||||
``co_fastlocalnames[i + len(co_varnames)]``.
|
||||
Pushes a reference to the cell contained in slot ``i`` of the "fast locals"
|
||||
storage. The name of the variable is ``co_fastlocalnames[i]``.
|
||||
|
||||
Note that ``LOAD_CLOSURE`` is effectively an alias for ``LOAD_FAST``.
|
||||
It exists to keep bytecode a little more readable.
|
||||
|
||||
.. versionchanged:: 3.11
|
||||
``i`` is no longer offset by the length of ``co_varnames``.
|
||||
|
||||
|
||||
.. opcode:: LOAD_DEREF (i)
|
||||
|
||||
Loads the cell contained in slot *i* of the cell and free variable storage.
|
||||
Loads the cell contained in slot ``i`` of the "fast locals" storage.
|
||||
Pushes a reference to the object the cell contains on the stack.
|
||||
|
||||
.. versionchanged:: 3.11
|
||||
``i`` is no longer offset by the length of ``co_varnames``.
|
||||
|
||||
|
||||
.. opcode:: LOAD_CLASSDEREF (i)
|
||||
|
||||
|
@ -1077,20 +1085,29 @@ All of the following opcodes use their arguments.
|
|||
|
||||
.. versionadded:: 3.4
|
||||
|
||||
.. versionchanged:: 3.11
|
||||
``i`` is no longer offset by the length of ``co_varnames``.
|
||||
|
||||
|
||||
.. opcode:: STORE_DEREF (i)
|
||||
|
||||
Stores TOS into the cell contained in slot *i* of the cell and free variable
|
||||
Stores TOS into the cell contained in slot ``i`` of the "fast locals"
|
||||
storage.
|
||||
|
||||
.. versionchanged:: 3.11
|
||||
``i`` is no longer offset by the length of ``co_varnames``.
|
||||
|
||||
|
||||
.. opcode:: DELETE_DEREF (i)
|
||||
|
||||
Empties the cell contained in slot *i* of the cell and free variable storage.
|
||||
Empties the cell contained in slot ``i`` of the "fast locals" storage.
|
||||
Used by the :keyword:`del` statement.
|
||||
|
||||
.. versionadded:: 3.2
|
||||
|
||||
.. versionchanged:: 3.11
|
||||
``i`` is no longer offset by the length of ``co_varnames``.
|
||||
|
||||
|
||||
.. opcode:: RAISE_VARARGS (argc)
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue