def finalize_opcodes(l):
# Not sure why, but opcode.py address has opcode.EXTENDED_ARG
# as well as opmap['EXTENDED_ARG']
l['EXTENDED_ARG'] = l['opmap']['EXTENDED_ARG']
# In Python 3.6+ this is 8, but we expect
# those opcodes to set that
if 'EXTENDED_ARG_SHIFT' not in l:
l['EXTENDED_ARG_SHIFT'] = 16
l['ARG_MAX_VALUE'] = (1 << l['EXTENDED_ARG_SHIFT']) - 1
l['EXTENDED_ARG'] = l['opmap']['EXTENDED_ARG']
l['opmap'] = fix_opcode_names(l['opmap'])
# Now add in the attributes into the module
for op in l['opmap']:
l[op] = l['opmap'][op]
l['JUMP_OPs'] = frozenset(l['hasjrel'] + l['hasjabs'])
l['NOFOLLOW'] = frozenset(l['nofollow'])
opcode_check(l)
return
评论列表
文章目录