mirror of
https://github.com/python/cpython.git
synced 2025-08-04 08:59:19 +00:00
GH-125837: Split LOAD_CONST
into three. (GH-125972)
* Add LOAD_CONST_IMMORTAL opcode * Add LOAD_SMALL_INT opcode * Remove RETURN_CONST opcode
This commit is contained in:
parent
67f5c5bd6f
commit
faa3272fb8
33 changed files with 706 additions and 538 deletions
10
Lib/dis.py
10
Lib/dis.py
|
@ -35,9 +35,8 @@ SET_FUNCTION_ATTRIBUTE = opmap['SET_FUNCTION_ATTRIBUTE']
|
|||
FUNCTION_ATTR_FLAGS = ('defaults', 'kwdefaults', 'annotations', 'closure', 'annotate')
|
||||
|
||||
ENTER_EXECUTOR = opmap['ENTER_EXECUTOR']
|
||||
LOAD_CONST = opmap['LOAD_CONST']
|
||||
RETURN_CONST = opmap['RETURN_CONST']
|
||||
LOAD_GLOBAL = opmap['LOAD_GLOBAL']
|
||||
LOAD_SMALL_INT = opmap['LOAD_SMALL_INT']
|
||||
BINARY_OP = opmap['BINARY_OP']
|
||||
JUMP_BACKWARD = opmap['JUMP_BACKWARD']
|
||||
FOR_ITER = opmap['FOR_ITER']
|
||||
|
@ -674,8 +673,10 @@ def _get_const_value(op, arg, co_consts):
|
|||
Otherwise (if it is a LOAD_CONST and co_consts is not
|
||||
provided) returns the dis.UNKNOWN sentinel.
|
||||
"""
|
||||
assert op in hasconst
|
||||
assert op in hasconst or op == LOAD_SMALL_INT
|
||||
|
||||
if op == LOAD_SMALL_INT:
|
||||
return arg
|
||||
argval = UNKNOWN
|
||||
if co_consts is not None:
|
||||
argval = co_consts[arg]
|
||||
|
@ -994,7 +995,8 @@ def _find_imports(co):
|
|||
if op == IMPORT_NAME and i >= 2:
|
||||
from_op = opargs[i-1]
|
||||
level_op = opargs[i-2]
|
||||
if (from_op[0] in hasconst and level_op[0] in hasconst):
|
||||
if (from_op[0] in hasconst and
|
||||
(level_op[0] in hasconst or level_op[0] == LOAD_SMALL_INT)):
|
||||
level = _get_const_value(level_op[0], level_op[1], consts)
|
||||
fromlist = _get_const_value(from_op[0], from_op[1], consts)
|
||||
yield (names[oparg], level, fromlist)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue