summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorIrit Katriel <1055913+iritkatriel@users.noreply.github.com>2023-11-24 18:13:25 (GMT)
committerGitHub <noreply@github.com>2023-11-24 18:13:25 (GMT)
commit9eb3b35dd7d72ff73005abf20266a618215b9ae0 (patch)
treeffe2481004f23931ac155e3dee3da0ef3fa8d92d
parentfafae08cc7caa25f2bd6b29106b50ef76c3e296f (diff)
downloadcpython-9eb3b35dd7d72ff73005abf20266a618215b9ae0.zip
cpython-9eb3b35dd7d72ff73005abf20266a618215b9ae0.tar.gz
cpython-9eb3b35dd7d72ff73005abf20266a618215b9ae0.tar.bz2
gh-112355: fix calculation of jump target of ENTER_EXECUTOR in dis (#112377)
-rw-r--r--Lib/dis.py7
1 files changed, 6 insertions, 1 deletions
diff --git a/Lib/dis.py b/Lib/dis.py
index c8313ac..e08e9a9 100644
--- a/Lib/dis.py
+++ b/Lib/dis.py
@@ -30,6 +30,7 @@ CONVERT_VALUE = opmap['CONVERT_VALUE']
SET_FUNCTION_ATTRIBUTE = opmap['SET_FUNCTION_ATTRIBUTE']
FUNCTION_ATTR_FLAGS = ('defaults', 'kwdefaults', 'annotations', 'closure')
+ENTER_EXECUTOR = opmap['ENTER_EXECUTOR']
LOAD_CONST = opmap['LOAD_CONST']
RETURN_CONST = opmap['RETURN_CONST']
LOAD_GLOBAL = opmap['LOAD_GLOBAL']
@@ -373,6 +374,8 @@ class Instruction(_Instruction):
argval = offset + 2 + signed_arg*2
caches = _get_cache_size(_all_opname[deop])
argval += 2 * caches
+ if deop == ENTER_EXECUTOR:
+ argval += 2
argrepr = f"to L{labels_map[argval]}"
elif deop in (LOAD_FAST_LOAD_FAST, STORE_FAST_LOAD_FAST, STORE_FAST_STORE_FAST):
arg1 = arg >> 4
@@ -605,7 +608,9 @@ def _parse_exception_table(code):
return entries
def _is_backward_jump(op):
- return 'JUMP_BACKWARD' in opname[op]
+ return opname[op] in ('JUMP_BACKWARD',
+ 'JUMP_BACKWARD_NO_INTERRUPT',
+ 'ENTER_EXECUTOR')
def _get_instructions_bytes(code, varname_from_oparg=None,
names=None, co_consts=None,