| 12345678910111213141516171819202122232425262728293031323334353637383940 |
- # (C) Copyright 2017, 2020-2021, 2023 by Rocky Bernstein
- """
- CPython 3.3 bytecode opcodes
- This is a like Python 3.3's opcode.py with some classification
- of stack usage.
- """
- import xdis.opcodes.opcode_3x as opcode_3x
- from xdis.opcodes.base import def_op, finalize_opcodes, init_opdata, rm_op, update_pj3
- from xdis.opcodes.format.basic import format_RAISE_VARARGS_older, opcode_arg_fmt_base
- from xdis.opcodes.format.extended import opcode_extended_fmt_base
- from xdis.opcodes.opcode_3x import format_MAKE_FUNCTION_30_35
- version_tuple = (3, 3)
- python_implementation = "CPython"
- loc = locals()
- init_opdata(loc, opcode_3x, version_tuple)
- # Below are opcode changes since Python 3.2
- # fmt: off
- rm_op(loc, "STOP_CODE", 0)
- def_op(loc, "YIELD_FROM", 72, 1, 0)
- # fmt: on
- opcode_extended_fmt = opcode_extended_fmt33 = opcode_extended_fmt_base.copy()
- opcode_arg_fmt = opcode_arg_fmt33 = {
- **opcode_arg_fmt_base,
- **{
- "MAKE_CLOSURE": format_MAKE_FUNCTION_30_35,
- "MAKE_FUNCTION": format_MAKE_FUNCTION_30_35,
- "RAISE_VARARGS": format_RAISE_VARARGS_older,
- },
- }
- update_pj3(globals(), loc)
- finalize_opcodes(loc)
|