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

@ -181,14 +181,16 @@ def_op('CALL_FUNCTION', 131) # #args
def_op('MAKE_FUNCTION', 132) # Flags
def_op('BUILD_SLICE', 133) # Number of items
def_op('LOAD_CLOSURE', 135)
def_op('MAKE_CELL', 135)
hasfree.append(135)
def_op('LOAD_DEREF', 136)
def_op('LOAD_CLOSURE', 136)
hasfree.append(136)
def_op('STORE_DEREF', 137)
def_op('LOAD_DEREF', 137)
hasfree.append(137)
def_op('DELETE_DEREF', 138)
def_op('STORE_DEREF', 138)
hasfree.append(138)
def_op('DELETE_DEREF', 139)
hasfree.append(139)
def_op('CALL_FUNCTION_KW', 141) # #args + #kwargs
def_op('CALL_FUNCTION_EX', 142) # Flags