bpo-43693: Add the MAKE_CELL opcode and interleave fast locals offsets. (gh-26396)

This moves logic out of the frame initialization code and into the compiler and eval loop.  Doing so simplifies the runtime code and allows us to optimize it better.

https://bugs.python.org/issue43693
This commit is contained in:
Eric Snow 2021-06-07 16:52:00 -06:00 committed by GitHub
parent e915db3e9e
commit 631f9938b1
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
16 changed files with 4469 additions and 4234 deletions

View file

@ -1056,6 +1056,14 @@ All of the following opcodes use their arguments.
Deletes local ``co_varnames[var_num]``.
.. opcode:: MAKE_CELL (i)
Creates a new cell in slot ``i``. If that slot is empty then
that value is stored into the new cell.
.. versionadded:: 3.11
.. opcode:: LOAD_CLOSURE (i)
Pushes a reference to the cell contained in slot ``i`` of the "fast locals"