diff options
author | Irit Katriel <1055913+iritkatriel@users.noreply.github.com> | 2022-03-31 13:14:15 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-03-31 13:14:15 (GMT) |
commit | a00518d9ad9a8f408a9699191019d75dd8406c32 (patch) | |
tree | cd66e7a9fd60f08e92fd56a183e1996623123da8 /Lib/dis.py | |
parent | b36d222110d0d6d84dc8e973ca87d976c2423f5d (diff) | |
download | cpython-a00518d9ad9a8f408a9699191019d75dd8406c32.zip cpython-a00518d9ad9a8f408a9699191019d75dd8406c32.tar.gz cpython-a00518d9ad9a8f408a9699191019d75dd8406c32.tar.bz2 |
bpo-47120: Replace the JUMP_ABSOLUTE opcode by the relative JUMP_BACKWARD (GH-32115)
Diffstat (limited to 'Lib/dis.py')
-rw-r--r-- | Lib/dis.py | 6 |
1 files changed, 5 insertions, 1 deletions
@@ -30,6 +30,7 @@ MAKE_FUNCTION_FLAGS = ('defaults', 'kwdefaults', 'annotations', 'closure') LOAD_CONST = opmap['LOAD_CONST'] LOAD_GLOBAL = opmap['LOAD_GLOBAL'] BINARY_OP = opmap['BINARY_OP'] +JUMP_BACKWARD = opmap['JUMP_BACKWARD'] CACHE = opmap["CACHE"] @@ -441,7 +442,8 @@ def _get_instructions_bytes(code, varname_from_oparg=None, argval = arg*2 argrepr = "to " + repr(argval) elif op in hasjrel: - argval = offset + 2 + arg*2 + signed_arg = -arg if op == JUMP_BACKWARD else arg + argval = offset + 2 + signed_arg*2 argrepr = "to " + repr(argval) elif op in haslocal or op in hasfree: argval, argrepr = _get_name_info(arg, varname_from_oparg) @@ -566,6 +568,8 @@ def findlabels(code): for offset, op, arg in _unpack_opargs(code): if arg is not None: if op in hasjrel: + if op == JUMP_BACKWARD: + arg = -arg label = offset + 2 + arg*2 elif op in hasjabs: label = arg*2 |