]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
gh-109256: allocate opcode IDs for internal opcodes in their own range (#109269)
authorIrit Katriel <1055913+iritkatriel@users.noreply.github.com>
Tue, 12 Sep 2023 10:36:17 +0000 (11:36 +0100)
committerGitHub <noreply@github.com>
Tue, 12 Sep 2023 10:36:17 +0000 (10:36 +0000)
Doc/library/dis.rst
Include/internal/pycore_opcode_metadata.h
Include/opcode_ids.h
Lib/_opcode_metadata.py
Lib/importlib/_bootstrap_external.py
Lib/test/test_dis.py
Misc/NEWS.d/next/Core and Builtins/2023-09-11-15-11-03.gh-issue-109256.6mfhvF.rst [new file with mode: 0644]
Programs/test_frozenmain.h
Python/opcode_targets.h
Tools/build/deepfreeze.py
Tools/cases_generator/generate_cases.py

index 6cd5f181c8433a6d7171f3330e6acc7e4942e6cc..d929242ede743d4b82aa86c9dcae0ad08021cefd 100644 (file)
@@ -1611,8 +1611,8 @@ iterations of the loop.
    opcodes in the range [0,255] which don't use their argument and those
    that do (``< HAVE_ARGUMENT`` and ``>= HAVE_ARGUMENT``, respectively).
 
-   If your application uses pseudo instructions, use the :data:`hasarg`
-   collection instead.
+   If your application uses pseudo instructions or specialized instructions,
+   use the :data:`hasarg` collection instead.
 
    .. versionchanged:: 3.6
       Now every instruction has an argument, but opcodes ``< HAVE_ARGUMENT``
index 05dee089b381602ba8601bdc1063fd4091a94dfa..4086b309375778f1f31d782214b4eaf4da5c8d17 100644 (file)
@@ -1664,21 +1664,9 @@ const char *const _PyOpcode_OpName[268] = {
     [RESUME] = "RESUME",
     [BEFORE_ASYNC_WITH] = "BEFORE_ASYNC_WITH",
     [BEFORE_WITH] = "BEFORE_WITH",
-    [BINARY_OP_ADD_FLOAT] = "BINARY_OP_ADD_FLOAT",
-    [BINARY_OP_ADD_INT] = "BINARY_OP_ADD_INT",
-    [BINARY_OP_ADD_UNICODE] = "BINARY_OP_ADD_UNICODE",
     [BINARY_OP_INPLACE_ADD_UNICODE] = "BINARY_OP_INPLACE_ADD_UNICODE",
-    [BINARY_OP_MULTIPLY_FLOAT] = "BINARY_OP_MULTIPLY_FLOAT",
-    [BINARY_OP_MULTIPLY_INT] = "BINARY_OP_MULTIPLY_INT",
-    [BINARY_OP_SUBTRACT_FLOAT] = "BINARY_OP_SUBTRACT_FLOAT",
-    [BINARY_OP_SUBTRACT_INT] = "BINARY_OP_SUBTRACT_INT",
     [BINARY_SLICE] = "BINARY_SLICE",
     [BINARY_SUBSCR] = "BINARY_SUBSCR",
-    [BINARY_SUBSCR_DICT] = "BINARY_SUBSCR_DICT",
-    [BINARY_SUBSCR_GETITEM] = "BINARY_SUBSCR_GETITEM",
-    [BINARY_SUBSCR_LIST_INT] = "BINARY_SUBSCR_LIST_INT",
-    [BINARY_SUBSCR_STR_INT] = "BINARY_SUBSCR_STR_INT",
-    [BINARY_SUBSCR_TUPLE_INT] = "BINARY_SUBSCR_TUPLE_INT",
     [CHECK_EG_MATCH] = "CHECK_EG_MATCH",
     [CHECK_EXC_MATCH] = "CHECK_EXC_MATCH",
     [CLEANUP_THROW] = "CLEANUP_THROW",
@@ -1707,23 +1695,12 @@ const char *const _PyOpcode_OpName[268] = {
     [POP_TOP] = "POP_TOP",
     [PUSH_EXC_INFO] = "PUSH_EXC_INFO",
     [PUSH_NULL] = "PUSH_NULL",
-    [RESUME_CHECK] = "RESUME_CHECK",
     [RETURN_GENERATOR] = "RETURN_GENERATOR",
     [RETURN_VALUE] = "RETURN_VALUE",
     [SETUP_ANNOTATIONS] = "SETUP_ANNOTATIONS",
-    [STORE_ATTR_INSTANCE_VALUE] = "STORE_ATTR_INSTANCE_VALUE",
-    [STORE_ATTR_SLOT] = "STORE_ATTR_SLOT",
     [STORE_SLICE] = "STORE_SLICE",
     [STORE_SUBSCR] = "STORE_SUBSCR",
-    [STORE_SUBSCR_DICT] = "STORE_SUBSCR_DICT",
-    [STORE_SUBSCR_LIST_INT] = "STORE_SUBSCR_LIST_INT",
     [TO_BOOL] = "TO_BOOL",
-    [TO_BOOL_ALWAYS_TRUE] = "TO_BOOL_ALWAYS_TRUE",
-    [TO_BOOL_BOOL] = "TO_BOOL_BOOL",
-    [TO_BOOL_INT] = "TO_BOOL_INT",
-    [TO_BOOL_LIST] = "TO_BOOL_LIST",
-    [TO_BOOL_NONE] = "TO_BOOL_NONE",
-    [TO_BOOL_STR] = "TO_BOOL_STR",
     [UNARY_INVERT] = "UNARY_INVERT",
     [UNARY_NEGATIVE] = "UNARY_NEGATIVE",
     [UNARY_NOT] = "UNARY_NOT",
@@ -1737,31 +1714,10 @@ const char *const _PyOpcode_OpName[268] = {
     [BUILD_STRING] = "BUILD_STRING",
     [BUILD_TUPLE] = "BUILD_TUPLE",
     [CALL] = "CALL",
-    [CALL_BOUND_METHOD_EXACT_ARGS] = "CALL_BOUND_METHOD_EXACT_ARGS",
-    [CALL_BUILTIN_CLASS] = "CALL_BUILTIN_CLASS",
-    [CALL_BUILTIN_FAST_WITH_KEYWORDS] = "CALL_BUILTIN_FAST_WITH_KEYWORDS",
     [CALL_FUNCTION_EX] = "CALL_FUNCTION_EX",
     [CALL_INTRINSIC_1] = "CALL_INTRINSIC_1",
     [CALL_INTRINSIC_2] = "CALL_INTRINSIC_2",
-    [CALL_METHOD_DESCRIPTOR_FAST_WITH_KEYWORDS] = "CALL_METHOD_DESCRIPTOR_FAST_WITH_KEYWORDS",
-    [CALL_NO_KW_ALLOC_AND_ENTER_INIT] = "CALL_NO_KW_ALLOC_AND_ENTER_INIT",
-    [CALL_NO_KW_BUILTIN_FAST] = "CALL_NO_KW_BUILTIN_FAST",
-    [CALL_NO_KW_BUILTIN_O] = "CALL_NO_KW_BUILTIN_O",
-    [CALL_NO_KW_ISINSTANCE] = "CALL_NO_KW_ISINSTANCE",
-    [CALL_NO_KW_LEN] = "CALL_NO_KW_LEN",
-    [CALL_NO_KW_LIST_APPEND] = "CALL_NO_KW_LIST_APPEND",
-    [CALL_NO_KW_METHOD_DESCRIPTOR_FAST] = "CALL_NO_KW_METHOD_DESCRIPTOR_FAST",
-    [CALL_NO_KW_METHOD_DESCRIPTOR_NOARGS] = "CALL_NO_KW_METHOD_DESCRIPTOR_NOARGS",
-    [CALL_NO_KW_METHOD_DESCRIPTOR_O] = "CALL_NO_KW_METHOD_DESCRIPTOR_O",
-    [CALL_NO_KW_STR_1] = "CALL_NO_KW_STR_1",
-    [CALL_NO_KW_TUPLE_1] = "CALL_NO_KW_TUPLE_1",
-    [CALL_NO_KW_TYPE_1] = "CALL_NO_KW_TYPE_1",
-    [CALL_PY_EXACT_ARGS] = "CALL_PY_EXACT_ARGS",
-    [CALL_PY_WITH_DEFAULTS] = "CALL_PY_WITH_DEFAULTS",
     [COMPARE_OP] = "COMPARE_OP",
-    [COMPARE_OP_FLOAT] = "COMPARE_OP_FLOAT",
-    [COMPARE_OP_INT] = "COMPARE_OP_INT",
-    [COMPARE_OP_STR] = "COMPARE_OP_STR",
     [CONTAINS_OP] = "CONTAINS_OP",
     [CONVERT_VALUE] = "CONVERT_VALUE",
     [COPY] = "COPY",
@@ -1776,10 +1732,6 @@ const char *const _PyOpcode_OpName[268] = {
     [ENTER_EXECUTOR] = "ENTER_EXECUTOR",
     [EXTENDED_ARG] = "EXTENDED_ARG",
     [FOR_ITER] = "FOR_ITER",
-    [FOR_ITER_GEN] = "FOR_ITER_GEN",
-    [FOR_ITER_LIST] = "FOR_ITER_LIST",
-    [FOR_ITER_RANGE] = "FOR_ITER_RANGE",
-    [FOR_ITER_TUPLE] = "FOR_ITER_TUPLE",
     [GET_AWAITABLE] = "GET_AWAITABLE",
     [IMPORT_FROM] = "IMPORT_FROM",
     [IMPORT_NAME] = "IMPORT_NAME",
@@ -1791,18 +1743,6 @@ const char *const _PyOpcode_OpName[268] = {
     [LIST_APPEND] = "LIST_APPEND",
     [LIST_EXTEND] = "LIST_EXTEND",
     [LOAD_ATTR] = "LOAD_ATTR",
-    [LOAD_ATTR_CLASS] = "LOAD_ATTR_CLASS",
-    [LOAD_ATTR_GETATTRIBUTE_OVERRIDDEN] = "LOAD_ATTR_GETATTRIBUTE_OVERRIDDEN",
-    [LOAD_ATTR_INSTANCE_VALUE] = "LOAD_ATTR_INSTANCE_VALUE",
-    [LOAD_ATTR_METHOD_LAZY_DICT] = "LOAD_ATTR_METHOD_LAZY_DICT",
-    [LOAD_ATTR_METHOD_NO_DICT] = "LOAD_ATTR_METHOD_NO_DICT",
-    [LOAD_ATTR_METHOD_WITH_VALUES] = "LOAD_ATTR_METHOD_WITH_VALUES",
-    [LOAD_ATTR_MODULE] = "LOAD_ATTR_MODULE",
-    [LOAD_ATTR_NONDESCRIPTOR_NO_DICT] = "LOAD_ATTR_NONDESCRIPTOR_NO_DICT",
-    [LOAD_ATTR_NONDESCRIPTOR_WITH_VALUES] = "LOAD_ATTR_NONDESCRIPTOR_WITH_VALUES",
-    [LOAD_ATTR_PROPERTY] = "LOAD_ATTR_PROPERTY",
-    [LOAD_ATTR_SLOT] = "LOAD_ATTR_SLOT",
-    [LOAD_ATTR_WITH_HINT] = "LOAD_ATTR_WITH_HINT",
     [LOAD_CONST] = "LOAD_CONST",
     [LOAD_DEREF] = "LOAD_DEREF",
     [LOAD_FAST] = "LOAD_FAST",
@@ -1812,12 +1752,8 @@ const char *const _PyOpcode_OpName[268] = {
     [LOAD_FROM_DICT_OR_DEREF] = "LOAD_FROM_DICT_OR_DEREF",
     [LOAD_FROM_DICT_OR_GLOBALS] = "LOAD_FROM_DICT_OR_GLOBALS",
     [LOAD_GLOBAL] = "LOAD_GLOBAL",
-    [LOAD_GLOBAL_BUILTIN] = "LOAD_GLOBAL_BUILTIN",
-    [LOAD_GLOBAL_MODULE] = "LOAD_GLOBAL_MODULE",
     [LOAD_NAME] = "LOAD_NAME",
     [LOAD_SUPER_ATTR] = "LOAD_SUPER_ATTR",
-    [LOAD_SUPER_ATTR_ATTR] = "LOAD_SUPER_ATTR_ATTR",
-    [LOAD_SUPER_ATTR_METHOD] = "LOAD_SUPER_ATTR_METHOD",
     [MAKE_CELL] = "MAKE_CELL",
     [MAP_ADD] = "MAP_ADD",
     [MATCH_CLASS] = "MATCH_CLASS",
@@ -1829,12 +1765,10 @@ const char *const _PyOpcode_OpName[268] = {
     [RERAISE] = "RERAISE",
     [RETURN_CONST] = "RETURN_CONST",
     [SEND] = "SEND",
-    [SEND_GEN] = "SEND_GEN",
     [SET_ADD] = "SET_ADD",
     [SET_FUNCTION_ATTRIBUTE] = "SET_FUNCTION_ATTRIBUTE",
     [SET_UPDATE] = "SET_UPDATE",
     [STORE_ATTR] = "STORE_ATTR",
-    [STORE_ATTR_WITH_HINT] = "STORE_ATTR_WITH_HINT",
     [STORE_DEREF] = "STORE_DEREF",
     [STORE_FAST] = "STORE_FAST",
     [STORE_FAST_LOAD_FAST] = "STORE_FAST_LOAD_FAST",
@@ -1844,10 +1778,76 @@ const char *const _PyOpcode_OpName[268] = {
     [SWAP] = "SWAP",
     [UNPACK_EX] = "UNPACK_EX",
     [UNPACK_SEQUENCE] = "UNPACK_SEQUENCE",
+    [YIELD_VALUE] = "YIELD_VALUE",
+    [BINARY_OP_ADD_FLOAT] = "BINARY_OP_ADD_FLOAT",
+    [BINARY_OP_ADD_INT] = "BINARY_OP_ADD_INT",
+    [BINARY_OP_ADD_UNICODE] = "BINARY_OP_ADD_UNICODE",
+    [BINARY_OP_MULTIPLY_FLOAT] = "BINARY_OP_MULTIPLY_FLOAT",
+    [BINARY_OP_MULTIPLY_INT] = "BINARY_OP_MULTIPLY_INT",
+    [BINARY_OP_SUBTRACT_FLOAT] = "BINARY_OP_SUBTRACT_FLOAT",
+    [BINARY_OP_SUBTRACT_INT] = "BINARY_OP_SUBTRACT_INT",
+    [BINARY_SUBSCR_DICT] = "BINARY_SUBSCR_DICT",
+    [BINARY_SUBSCR_GETITEM] = "BINARY_SUBSCR_GETITEM",
+    [BINARY_SUBSCR_LIST_INT] = "BINARY_SUBSCR_LIST_INT",
+    [BINARY_SUBSCR_STR_INT] = "BINARY_SUBSCR_STR_INT",
+    [BINARY_SUBSCR_TUPLE_INT] = "BINARY_SUBSCR_TUPLE_INT",
+    [CALL_BOUND_METHOD_EXACT_ARGS] = "CALL_BOUND_METHOD_EXACT_ARGS",
+    [CALL_BUILTIN_CLASS] = "CALL_BUILTIN_CLASS",
+    [CALL_BUILTIN_FAST_WITH_KEYWORDS] = "CALL_BUILTIN_FAST_WITH_KEYWORDS",
+    [CALL_METHOD_DESCRIPTOR_FAST_WITH_KEYWORDS] = "CALL_METHOD_DESCRIPTOR_FAST_WITH_KEYWORDS",
+    [CALL_NO_KW_ALLOC_AND_ENTER_INIT] = "CALL_NO_KW_ALLOC_AND_ENTER_INIT",
+    [CALL_NO_KW_BUILTIN_FAST] = "CALL_NO_KW_BUILTIN_FAST",
+    [CALL_NO_KW_BUILTIN_O] = "CALL_NO_KW_BUILTIN_O",
+    [CALL_NO_KW_ISINSTANCE] = "CALL_NO_KW_ISINSTANCE",
+    [CALL_NO_KW_LEN] = "CALL_NO_KW_LEN",
+    [CALL_NO_KW_LIST_APPEND] = "CALL_NO_KW_LIST_APPEND",
+    [CALL_NO_KW_METHOD_DESCRIPTOR_FAST] = "CALL_NO_KW_METHOD_DESCRIPTOR_FAST",
+    [CALL_NO_KW_METHOD_DESCRIPTOR_NOARGS] = "CALL_NO_KW_METHOD_DESCRIPTOR_NOARGS",
+    [CALL_NO_KW_METHOD_DESCRIPTOR_O] = "CALL_NO_KW_METHOD_DESCRIPTOR_O",
+    [CALL_NO_KW_STR_1] = "CALL_NO_KW_STR_1",
+    [CALL_NO_KW_TUPLE_1] = "CALL_NO_KW_TUPLE_1",
+    [CALL_NO_KW_TYPE_1] = "CALL_NO_KW_TYPE_1",
+    [CALL_PY_EXACT_ARGS] = "CALL_PY_EXACT_ARGS",
+    [CALL_PY_WITH_DEFAULTS] = "CALL_PY_WITH_DEFAULTS",
+    [COMPARE_OP_FLOAT] = "COMPARE_OP_FLOAT",
+    [COMPARE_OP_INT] = "COMPARE_OP_INT",
+    [COMPARE_OP_STR] = "COMPARE_OP_STR",
+    [FOR_ITER_GEN] = "FOR_ITER_GEN",
+    [FOR_ITER_LIST] = "FOR_ITER_LIST",
+    [FOR_ITER_RANGE] = "FOR_ITER_RANGE",
+    [FOR_ITER_TUPLE] = "FOR_ITER_TUPLE",
+    [LOAD_ATTR_CLASS] = "LOAD_ATTR_CLASS",
+    [LOAD_ATTR_GETATTRIBUTE_OVERRIDDEN] = "LOAD_ATTR_GETATTRIBUTE_OVERRIDDEN",
+    [LOAD_ATTR_INSTANCE_VALUE] = "LOAD_ATTR_INSTANCE_VALUE",
+    [LOAD_ATTR_METHOD_LAZY_DICT] = "LOAD_ATTR_METHOD_LAZY_DICT",
+    [LOAD_ATTR_METHOD_NO_DICT] = "LOAD_ATTR_METHOD_NO_DICT",
+    [LOAD_ATTR_METHOD_WITH_VALUES] = "LOAD_ATTR_METHOD_WITH_VALUES",
+    [LOAD_ATTR_MODULE] = "LOAD_ATTR_MODULE",
+    [LOAD_ATTR_NONDESCRIPTOR_NO_DICT] = "LOAD_ATTR_NONDESCRIPTOR_NO_DICT",
+    [LOAD_ATTR_NONDESCRIPTOR_WITH_VALUES] = "LOAD_ATTR_NONDESCRIPTOR_WITH_VALUES",
+    [LOAD_ATTR_PROPERTY] = "LOAD_ATTR_PROPERTY",
+    [LOAD_ATTR_SLOT] = "LOAD_ATTR_SLOT",
+    [LOAD_ATTR_WITH_HINT] = "LOAD_ATTR_WITH_HINT",
+    [LOAD_GLOBAL_BUILTIN] = "LOAD_GLOBAL_BUILTIN",
+    [LOAD_GLOBAL_MODULE] = "LOAD_GLOBAL_MODULE",
+    [LOAD_SUPER_ATTR_ATTR] = "LOAD_SUPER_ATTR_ATTR",
+    [LOAD_SUPER_ATTR_METHOD] = "LOAD_SUPER_ATTR_METHOD",
+    [RESUME_CHECK] = "RESUME_CHECK",
+    [SEND_GEN] = "SEND_GEN",
+    [STORE_ATTR_INSTANCE_VALUE] = "STORE_ATTR_INSTANCE_VALUE",
+    [STORE_ATTR_SLOT] = "STORE_ATTR_SLOT",
+    [STORE_ATTR_WITH_HINT] = "STORE_ATTR_WITH_HINT",
+    [STORE_SUBSCR_DICT] = "STORE_SUBSCR_DICT",
+    [STORE_SUBSCR_LIST_INT] = "STORE_SUBSCR_LIST_INT",
+    [TO_BOOL_ALWAYS_TRUE] = "TO_BOOL_ALWAYS_TRUE",
+    [TO_BOOL_BOOL] = "TO_BOOL_BOOL",
+    [TO_BOOL_INT] = "TO_BOOL_INT",
+    [TO_BOOL_LIST] = "TO_BOOL_LIST",
+    [TO_BOOL_NONE] = "TO_BOOL_NONE",
+    [TO_BOOL_STR] = "TO_BOOL_STR",
     [UNPACK_SEQUENCE_LIST] = "UNPACK_SEQUENCE_LIST",
     [UNPACK_SEQUENCE_TUPLE] = "UNPACK_SEQUENCE_TUPLE",
     [UNPACK_SEQUENCE_TWO_TUPLE] = "UNPACK_SEQUENCE_TWO_TUPLE",
-    [YIELD_VALUE] = "YIELD_VALUE",
     [INSTRUMENTED_RESUME] = "INSTRUMENTED_RESUME",
     [INSTRUMENTED_END_FOR] = "INSTRUMENTED_END_FOR",
     [INSTRUMENTED_END_SEND] = "INSTRUMENTED_END_SEND",
@@ -2119,36 +2119,36 @@ const uint8_t _PyOpcode_Deopt[256] = {
 #endif // NEED_OPCODE_METADATA
 
 #define EXTRA_CASES \
-    case 189: \
-    case 190: \
-    case 191: \
-    case 192: \
-    case 193: \
-    case 194: \
-    case 195: \
-    case 196: \
-    case 197: \
-    case 198: \
-    case 199: \
-    case 200: \
-    case 201: \
-    case 202: \
-    case 203: \
-    case 204: \
-    case 205: \
-    case 206: \
-    case 207: \
-    case 208: \
-    case 209: \
-    case 210: \
-    case 211: \
-    case 212: \
-    case 213: \
-    case 214: \
-    case 215: \
-    case 216: \
-    case 217: \
-    case 218: \
+    case 119: \
+    case 120: \
+    case 121: \
+    case 122: \
+    case 123: \
+    case 124: \
+    case 125: \
+    case 126: \
+    case 127: \
+    case 128: \
+    case 129: \
+    case 130: \
+    case 131: \
+    case 132: \
+    case 133: \
+    case 134: \
+    case 135: \
+    case 136: \
+    case 137: \
+    case 138: \
+    case 139: \
+    case 140: \
+    case 141: \
+    case 142: \
+    case 143: \
+    case 144: \
+    case 145: \
+    case 146: \
+    case 147: \
+    case 148: \
     case 219: \
     case 220: \
     case 221: \
index eabdf4bc020ef7dc9a7962028c6bdbbca40641a9..8af9684ebb18c16b3c548bcd62dd7bb9e253bef9 100644 (file)
@@ -13,193 +13,193 @@ extern "C" {
 #define CACHE                                    0
 #define BEFORE_ASYNC_WITH                        1
 #define BEFORE_WITH                              2
-#define BINARY_OP_ADD_FLOAT                      3
-#define BINARY_OP_ADD_INT                        4
-#define BINARY_OP_ADD_UNICODE                    5
-#define BINARY_OP_INPLACE_ADD_UNICODE            6
-#define BINARY_OP_MULTIPLY_FLOAT                 7
-#define BINARY_OP_MULTIPLY_INT                   8
-#define BINARY_OP_SUBTRACT_FLOAT                 9
-#define BINARY_OP_SUBTRACT_INT                  10
-#define BINARY_SLICE                            11
-#define BINARY_SUBSCR                           12
-#define BINARY_SUBSCR_DICT                      13
-#define BINARY_SUBSCR_GETITEM                   14
-#define BINARY_SUBSCR_LIST_INT                  15
-#define BINARY_SUBSCR_STR_INT                   16
+#define BINARY_OP_INPLACE_ADD_UNICODE            3
+#define BINARY_SLICE                             4
+#define BINARY_SUBSCR                            5
+#define CHECK_EG_MATCH                           6
+#define CHECK_EXC_MATCH                          7
+#define CLEANUP_THROW                            8
+#define DELETE_SUBSCR                            9
+#define END_ASYNC_FOR                           10
+#define END_FOR                                 11
+#define END_SEND                                12
+#define EXIT_INIT_CHECK                         13
+#define FORMAT_SIMPLE                           14
+#define FORMAT_WITH_SPEC                        15
+#define GET_AITER                               16
 #define RESERVED                                17
-#define BINARY_SUBSCR_TUPLE_INT                 18
-#define CHECK_EG_MATCH                          19
-#define CHECK_EXC_MATCH                         20
-#define CLEANUP_THROW                           21
-#define DELETE_SUBSCR                           22
-#define END_ASYNC_FOR                           23
-#define END_FOR                                 24
-#define END_SEND                                25
-#define EXIT_INIT_CHECK                         26
-#define FORMAT_SIMPLE                           27
-#define FORMAT_WITH_SPEC                        28
-#define GET_AITER                               29
-#define GET_ANEXT                               30
-#define GET_ITER                                31
-#define GET_LEN                                 32
-#define GET_YIELD_FROM_ITER                     33
-#define INTERPRETER_EXIT                        34
-#define LOAD_ASSERTION_ERROR                    35
-#define LOAD_BUILD_CLASS                        36
-#define LOAD_LOCALS                             37
-#define MAKE_FUNCTION                           38
-#define MATCH_KEYS                              39
-#define MATCH_MAPPING                           40
-#define MATCH_SEQUENCE                          41
-#define NOP                                     42
-#define POP_EXCEPT                              43
-#define POP_TOP                                 44
-#define PUSH_EXC_INFO                           45
-#define PUSH_NULL                               46
-#define RESUME_CHECK                            47
-#define RETURN_GENERATOR                        48
-#define RETURN_VALUE                            49
-#define SETUP_ANNOTATIONS                       50
-#define STORE_ATTR_INSTANCE_VALUE               51
-#define STORE_ATTR_SLOT                         52
-#define STORE_SLICE                             53
-#define STORE_SUBSCR                            54
-#define STORE_SUBSCR_DICT                       55
-#define STORE_SUBSCR_LIST_INT                   56
-#define TO_BOOL                                 57
-#define TO_BOOL_ALWAYS_TRUE                     58
-#define TO_BOOL_BOOL                            59
-#define TO_BOOL_INT                             60
-#define TO_BOOL_LIST                            61
-#define TO_BOOL_NONE                            62
-#define TO_BOOL_STR                             63
-#define UNARY_INVERT                            64
-#define UNARY_NEGATIVE                          65
-#define UNARY_NOT                               66
-#define WITH_EXCEPT_START                       67
-#define HAVE_ARGUMENT                           68
-#define BINARY_OP                               68
-#define BUILD_CONST_KEY_MAP                     69
-#define BUILD_LIST                              70
-#define BUILD_MAP                               71
-#define BUILD_SET                               72
-#define BUILD_SLICE                             73
-#define BUILD_STRING                            74
-#define BUILD_TUPLE                             75
-#define CALL                                    76
-#define CALL_BOUND_METHOD_EXACT_ARGS            77
-#define CALL_BUILTIN_CLASS                      78
-#define CALL_BUILTIN_FAST_WITH_KEYWORDS         79
-#define CALL_FUNCTION_EX                        80
-#define CALL_INTRINSIC_1                        81
-#define CALL_INTRINSIC_2                        82
-#define CALL_METHOD_DESCRIPTOR_FAST_WITH_KEYWORDS  83
-#define CALL_NO_KW_ALLOC_AND_ENTER_INIT         84
-#define CALL_NO_KW_BUILTIN_FAST                 85
-#define CALL_NO_KW_BUILTIN_O                    86
-#define CALL_NO_KW_ISINSTANCE                   87
-#define CALL_NO_KW_LEN                          88
-#define CALL_NO_KW_LIST_APPEND                  89
-#define CALL_NO_KW_METHOD_DESCRIPTOR_FAST       90
-#define CALL_NO_KW_METHOD_DESCRIPTOR_NOARGS     91
-#define CALL_NO_KW_METHOD_DESCRIPTOR_O          92
-#define CALL_NO_KW_STR_1                        93
-#define CALL_NO_KW_TUPLE_1                      94
-#define CALL_NO_KW_TYPE_1                       95
-#define CALL_PY_EXACT_ARGS                      96
-#define CALL_PY_WITH_DEFAULTS                   97
-#define COMPARE_OP                              98
-#define COMPARE_OP_FLOAT                        99
-#define COMPARE_OP_INT                         100
-#define COMPARE_OP_STR                         101
-#define CONTAINS_OP                            102
-#define CONVERT_VALUE                          103
-#define COPY                                   104
-#define COPY_FREE_VARS                         105
-#define DELETE_ATTR                            106
-#define DELETE_DEREF                           107
-#define DELETE_FAST                            108
-#define DELETE_GLOBAL                          109
-#define DELETE_NAME                            110
-#define DICT_MERGE                             111
-#define DICT_UPDATE                            112
-#define ENTER_EXECUTOR                         113
-#define EXTENDED_ARG                           114
-#define FOR_ITER                               115
-#define FOR_ITER_GEN                           116
-#define FOR_ITER_LIST                          117
-#define FOR_ITER_RANGE                         118
-#define FOR_ITER_TUPLE                         119
-#define GET_AWAITABLE                          120
-#define IMPORT_FROM                            121
-#define IMPORT_NAME                            122
-#define IS_OP                                  123
-#define JUMP_BACKWARD                          124
-#define JUMP_BACKWARD_NO_INTERRUPT             125
-#define JUMP_FORWARD                           126
-#define KW_NAMES                               127
-#define LIST_APPEND                            128
-#define LIST_EXTEND                            129
-#define LOAD_ATTR                              130
-#define LOAD_ATTR_CLASS                        131
-#define LOAD_ATTR_GETATTRIBUTE_OVERRIDDEN      132
-#define LOAD_ATTR_INSTANCE_VALUE               133
-#define LOAD_ATTR_METHOD_LAZY_DICT             134
-#define LOAD_ATTR_METHOD_NO_DICT               135
-#define LOAD_ATTR_METHOD_WITH_VALUES           136
-#define LOAD_ATTR_MODULE                       137
-#define LOAD_ATTR_NONDESCRIPTOR_NO_DICT        138
-#define LOAD_ATTR_NONDESCRIPTOR_WITH_VALUES    139
-#define LOAD_ATTR_PROPERTY                     140
-#define LOAD_ATTR_SLOT                         141
-#define LOAD_ATTR_WITH_HINT                    142
-#define LOAD_CONST                             143
-#define LOAD_DEREF                             144
-#define LOAD_FAST                              145
-#define LOAD_FAST_AND_CLEAR                    146
-#define LOAD_FAST_CHECK                        147
-#define LOAD_FAST_LOAD_FAST                    148
-#define LOAD_FROM_DICT_OR_DEREF                149
-#define LOAD_FROM_DICT_OR_GLOBALS              150
-#define LOAD_GLOBAL                            151
-#define LOAD_GLOBAL_BUILTIN                    152
-#define LOAD_GLOBAL_MODULE                     153
-#define LOAD_NAME                              154
-#define LOAD_SUPER_ATTR                        155
-#define LOAD_SUPER_ATTR_ATTR                   156
-#define LOAD_SUPER_ATTR_METHOD                 157
-#define MAKE_CELL                              158
-#define MAP_ADD                                159
-#define MATCH_CLASS                            160
-#define POP_JUMP_IF_FALSE                      161
-#define POP_JUMP_IF_NONE                       162
-#define POP_JUMP_IF_NOT_NONE                   163
-#define POP_JUMP_IF_TRUE                       164
-#define RAISE_VARARGS                          165
-#define RESUME                                 166
-#define RERAISE                                167
-#define RETURN_CONST                           168
-#define SEND                                   169
-#define SEND_GEN                               170
-#define SET_ADD                                171
-#define SET_FUNCTION_ATTRIBUTE                 172
-#define SET_UPDATE                             173
-#define STORE_ATTR                             174
-#define STORE_ATTR_WITH_HINT                   175
-#define STORE_DEREF                            176
-#define STORE_FAST                             177
-#define STORE_FAST_LOAD_FAST                   178
-#define STORE_FAST_STORE_FAST                  179
-#define STORE_GLOBAL                           180
-#define STORE_NAME                             181
-#define SWAP                                   182
-#define UNPACK_EX                              183
-#define UNPACK_SEQUENCE                        184
-#define UNPACK_SEQUENCE_LIST                   185
-#define UNPACK_SEQUENCE_TUPLE                  186
-#define UNPACK_SEQUENCE_TWO_TUPLE              187
-#define YIELD_VALUE                            188
+#define GET_ANEXT                               18
+#define GET_ITER                                19
+#define GET_LEN                                 20
+#define GET_YIELD_FROM_ITER                     21
+#define INTERPRETER_EXIT                        22
+#define LOAD_ASSERTION_ERROR                    23
+#define LOAD_BUILD_CLASS                        24
+#define LOAD_LOCALS                             25
+#define MAKE_FUNCTION                           26
+#define MATCH_KEYS                              27
+#define MATCH_MAPPING                           28
+#define MATCH_SEQUENCE                          29
+#define NOP                                     30
+#define POP_EXCEPT                              31
+#define POP_TOP                                 32
+#define PUSH_EXC_INFO                           33
+#define PUSH_NULL                               34
+#define RETURN_GENERATOR                        35
+#define RETURN_VALUE                            36
+#define SETUP_ANNOTATIONS                       37
+#define STORE_SLICE                             38
+#define STORE_SUBSCR                            39
+#define TO_BOOL                                 40
+#define UNARY_INVERT                            41
+#define UNARY_NEGATIVE                          42
+#define UNARY_NOT                               43
+#define WITH_EXCEPT_START                       44
+#define HAVE_ARGUMENT                           45
+#define BINARY_OP                               45
+#define BUILD_CONST_KEY_MAP                     46
+#define BUILD_LIST                              47
+#define BUILD_MAP                               48
+#define BUILD_SET                               49
+#define BUILD_SLICE                             50
+#define BUILD_STRING                            51
+#define BUILD_TUPLE                             52
+#define CALL                                    53
+#define CALL_FUNCTION_EX                        54
+#define CALL_INTRINSIC_1                        55
+#define CALL_INTRINSIC_2                        56
+#define COMPARE_OP                              57
+#define CONTAINS_OP                             58
+#define CONVERT_VALUE                           59
+#define COPY                                    60
+#define COPY_FREE_VARS                          61
+#define DELETE_ATTR                             62
+#define DELETE_DEREF                            63
+#define DELETE_FAST                             64
+#define DELETE_GLOBAL                           65
+#define DELETE_NAME                             66
+#define DICT_MERGE                              67
+#define DICT_UPDATE                             68
+#define ENTER_EXECUTOR                          69
+#define EXTENDED_ARG                            70
+#define FOR_ITER                                71
+#define GET_AWAITABLE                           72
+#define IMPORT_FROM                             73
+#define IMPORT_NAME                             74
+#define IS_OP                                   75
+#define JUMP_BACKWARD                           76
+#define JUMP_BACKWARD_NO_INTERRUPT              77
+#define JUMP_FORWARD                            78
+#define KW_NAMES                                79
+#define LIST_APPEND                             80
+#define LIST_EXTEND                             81
+#define LOAD_ATTR                               82
+#define LOAD_CONST                              83
+#define LOAD_DEREF                              84
+#define LOAD_FAST                               85
+#define LOAD_FAST_AND_CLEAR                     86
+#define LOAD_FAST_CHECK                         87
+#define LOAD_FAST_LOAD_FAST                     88
+#define LOAD_FROM_DICT_OR_DEREF                 89
+#define LOAD_FROM_DICT_OR_GLOBALS               90
+#define LOAD_GLOBAL                             91
+#define LOAD_NAME                               92
+#define LOAD_SUPER_ATTR                         93
+#define MAKE_CELL                               94
+#define MAP_ADD                                 95
+#define MATCH_CLASS                             96
+#define POP_JUMP_IF_FALSE                       97
+#define POP_JUMP_IF_NONE                        98
+#define POP_JUMP_IF_NOT_NONE                    99
+#define POP_JUMP_IF_TRUE                       100
+#define RAISE_VARARGS                          101
+#define RERAISE                                102
+#define RETURN_CONST                           103
+#define SEND                                   104
+#define SET_ADD                                105
+#define SET_FUNCTION_ATTRIBUTE                 106
+#define SET_UPDATE                             107
+#define STORE_ATTR                             108
+#define STORE_DEREF                            109
+#define STORE_FAST                             110
+#define STORE_FAST_LOAD_FAST                   111
+#define STORE_FAST_STORE_FAST                  112
+#define STORE_GLOBAL                           113
+#define STORE_NAME                             114
+#define SWAP                                   115
+#define UNPACK_EX                              116
+#define UNPACK_SEQUENCE                        117
+#define YIELD_VALUE                            118
+#define RESUME                                 149
+#define BINARY_OP_ADD_FLOAT                    150
+#define BINARY_OP_ADD_INT                      151
+#define BINARY_OP_ADD_UNICODE                  152
+#define BINARY_OP_MULTIPLY_FLOAT               153
+#define BINARY_OP_MULTIPLY_INT                 154
+#define BINARY_OP_SUBTRACT_FLOAT               155
+#define BINARY_OP_SUBTRACT_INT                 156
+#define BINARY_SUBSCR_DICT                     157
+#define BINARY_SUBSCR_GETITEM                  158
+#define BINARY_SUBSCR_LIST_INT                 159
+#define BINARY_SUBSCR_STR_INT                  160
+#define BINARY_SUBSCR_TUPLE_INT                161
+#define CALL_BOUND_METHOD_EXACT_ARGS           162
+#define CALL_BUILTIN_CLASS                     163
+#define CALL_BUILTIN_FAST_WITH_KEYWORDS        164
+#define CALL_METHOD_DESCRIPTOR_FAST_WITH_KEYWORDS 165
+#define CALL_NO_KW_ALLOC_AND_ENTER_INIT        166
+#define CALL_NO_KW_BUILTIN_FAST                167
+#define CALL_NO_KW_BUILTIN_O                   168
+#define CALL_NO_KW_ISINSTANCE                  169
+#define CALL_NO_KW_LEN                         170
+#define CALL_NO_KW_LIST_APPEND                 171
+#define CALL_NO_KW_METHOD_DESCRIPTOR_FAST      172
+#define CALL_NO_KW_METHOD_DESCRIPTOR_NOARGS    173
+#define CALL_NO_KW_METHOD_DESCRIPTOR_O         174
+#define CALL_NO_KW_STR_1                       175
+#define CALL_NO_KW_TUPLE_1                     176
+#define CALL_NO_KW_TYPE_1                      177
+#define CALL_PY_EXACT_ARGS                     178
+#define CALL_PY_WITH_DEFAULTS                  179
+#define COMPARE_OP_FLOAT                       180
+#define COMPARE_OP_INT                         181
+#define COMPARE_OP_STR                         182
+#define FOR_ITER_GEN                           183
+#define FOR_ITER_LIST                          184
+#define FOR_ITER_RANGE                         185
+#define FOR_ITER_TUPLE                         186
+#define LOAD_ATTR_CLASS                        187
+#define LOAD_ATTR_GETATTRIBUTE_OVERRIDDEN      188
+#define LOAD_ATTR_INSTANCE_VALUE               189
+#define LOAD_ATTR_METHOD_LAZY_DICT             190
+#define LOAD_ATTR_METHOD_NO_DICT               191
+#define LOAD_ATTR_METHOD_WITH_VALUES           192
+#define LOAD_ATTR_MODULE                       193
+#define LOAD_ATTR_NONDESCRIPTOR_NO_DICT        194
+#define LOAD_ATTR_NONDESCRIPTOR_WITH_VALUES    195
+#define LOAD_ATTR_PROPERTY                     196
+#define LOAD_ATTR_SLOT                         197
+#define LOAD_ATTR_WITH_HINT                    198
+#define LOAD_GLOBAL_BUILTIN                    199
+#define LOAD_GLOBAL_MODULE                     200
+#define LOAD_SUPER_ATTR_ATTR                   201
+#define LOAD_SUPER_ATTR_METHOD                 202
+#define RESUME_CHECK                           203
+#define SEND_GEN                               204
+#define STORE_ATTR_INSTANCE_VALUE              205
+#define STORE_ATTR_SLOT                        206
+#define STORE_ATTR_WITH_HINT                   207
+#define STORE_SUBSCR_DICT                      208
+#define STORE_SUBSCR_LIST_INT                  209
+#define TO_BOOL_ALWAYS_TRUE                    210
+#define TO_BOOL_BOOL                           211
+#define TO_BOOL_INT                            212
+#define TO_BOOL_LIST                           213
+#define TO_BOOL_NONE                           214
+#define TO_BOOL_STR                            215
+#define UNPACK_SEQUENCE_LIST                   216
+#define UNPACK_SEQUENCE_TUPLE                  217
+#define UNPACK_SEQUENCE_TWO_TUPLE              218
 #define MIN_INSTRUMENTED_OPCODE                237
 #define INSTRUMENTED_RESUME                    237
 #define INSTRUMENTED_END_FOR                   238
index 20975ffb4c532130e63e60df836192305538fe5a..4f76371dae28d1b3bcd0880dda5f36a89fe76b37 100644 (file)
@@ -107,198 +107,198 @@ _specializations = {
 _specializations["BINARY_OP"].append("BINARY_OP_INPLACE_ADD_UNICODE")
 
 _specialized_opmap = {
-    'BINARY_OP_ADD_FLOAT': 3,
-    'BINARY_OP_ADD_INT': 4,
-    'BINARY_OP_ADD_UNICODE': 5,
-    'BINARY_OP_INPLACE_ADD_UNICODE': 6,
-    'BINARY_OP_MULTIPLY_FLOAT': 7,
-    'BINARY_OP_MULTIPLY_INT': 8,
-    'BINARY_OP_SUBTRACT_FLOAT': 9,
-    'BINARY_OP_SUBTRACT_INT': 10,
-    'BINARY_SUBSCR_DICT': 13,
-    'BINARY_SUBSCR_GETITEM': 14,
-    'BINARY_SUBSCR_LIST_INT': 15,
-    'BINARY_SUBSCR_STR_INT': 16,
-    'BINARY_SUBSCR_TUPLE_INT': 18,
-    'RESUME_CHECK': 47,
-    'STORE_ATTR_INSTANCE_VALUE': 51,
-    'STORE_ATTR_SLOT': 52,
-    'STORE_SUBSCR_DICT': 55,
-    'STORE_SUBSCR_LIST_INT': 56,
-    'TO_BOOL_ALWAYS_TRUE': 58,
-    'TO_BOOL_BOOL': 59,
-    'TO_BOOL_INT': 60,
-    'TO_BOOL_LIST': 61,
-    'TO_BOOL_NONE': 62,
-    'TO_BOOL_STR': 63,
-    'CALL_BOUND_METHOD_EXACT_ARGS': 77,
-    'CALL_BUILTIN_CLASS': 78,
-    'CALL_BUILTIN_FAST_WITH_KEYWORDS': 79,
-    'CALL_METHOD_DESCRIPTOR_FAST_WITH_KEYWORDS': 83,
-    'CALL_NO_KW_ALLOC_AND_ENTER_INIT': 84,
-    'CALL_NO_KW_BUILTIN_FAST': 85,
-    'CALL_NO_KW_BUILTIN_O': 86,
-    'CALL_NO_KW_ISINSTANCE': 87,
-    'CALL_NO_KW_LEN': 88,
-    'CALL_NO_KW_LIST_APPEND': 89,
-    'CALL_NO_KW_METHOD_DESCRIPTOR_FAST': 90,
-    'CALL_NO_KW_METHOD_DESCRIPTOR_NOARGS': 91,
-    'CALL_NO_KW_METHOD_DESCRIPTOR_O': 92,
-    'CALL_NO_KW_STR_1': 93,
-    'CALL_NO_KW_TUPLE_1': 94,
-    'CALL_NO_KW_TYPE_1': 95,
-    'CALL_PY_EXACT_ARGS': 96,
-    'CALL_PY_WITH_DEFAULTS': 97,
-    'COMPARE_OP_FLOAT': 99,
-    'COMPARE_OP_INT': 100,
-    'COMPARE_OP_STR': 101,
-    'FOR_ITER_GEN': 116,
-    'FOR_ITER_LIST': 117,
-    'FOR_ITER_RANGE': 118,
-    'FOR_ITER_TUPLE': 119,
-    'LOAD_ATTR_CLASS': 131,
-    'LOAD_ATTR_GETATTRIBUTE_OVERRIDDEN': 132,
-    'LOAD_ATTR_INSTANCE_VALUE': 133,
-    'LOAD_ATTR_METHOD_LAZY_DICT': 134,
-    'LOAD_ATTR_METHOD_NO_DICT': 135,
-    'LOAD_ATTR_METHOD_WITH_VALUES': 136,
-    'LOAD_ATTR_MODULE': 137,
-    'LOAD_ATTR_NONDESCRIPTOR_NO_DICT': 138,
-    'LOAD_ATTR_NONDESCRIPTOR_WITH_VALUES': 139,
-    'LOAD_ATTR_PROPERTY': 140,
-    'LOAD_ATTR_SLOT': 141,
-    'LOAD_ATTR_WITH_HINT': 142,
-    'LOAD_GLOBAL_BUILTIN': 152,
-    'LOAD_GLOBAL_MODULE': 153,
-    'LOAD_SUPER_ATTR_ATTR': 156,
-    'LOAD_SUPER_ATTR_METHOD': 157,
-    'SEND_GEN': 170,
-    'STORE_ATTR_WITH_HINT': 175,
-    'UNPACK_SEQUENCE_LIST': 185,
-    'UNPACK_SEQUENCE_TUPLE': 186,
-    'UNPACK_SEQUENCE_TWO_TUPLE': 187,
+    'BINARY_OP_INPLACE_ADD_UNICODE': 3,
+    'BINARY_OP_ADD_FLOAT': 150,
+    'BINARY_OP_ADD_INT': 151,
+    'BINARY_OP_ADD_UNICODE': 152,
+    'BINARY_OP_MULTIPLY_FLOAT': 153,
+    'BINARY_OP_MULTIPLY_INT': 154,
+    'BINARY_OP_SUBTRACT_FLOAT': 155,
+    'BINARY_OP_SUBTRACT_INT': 156,
+    'BINARY_SUBSCR_DICT': 157,
+    'BINARY_SUBSCR_GETITEM': 158,
+    'BINARY_SUBSCR_LIST_INT': 159,
+    'BINARY_SUBSCR_STR_INT': 160,
+    'BINARY_SUBSCR_TUPLE_INT': 161,
+    'CALL_BOUND_METHOD_EXACT_ARGS': 162,
+    'CALL_BUILTIN_CLASS': 163,
+    'CALL_BUILTIN_FAST_WITH_KEYWORDS': 164,
+    'CALL_METHOD_DESCRIPTOR_FAST_WITH_KEYWORDS': 165,
+    'CALL_NO_KW_ALLOC_AND_ENTER_INIT': 166,
+    'CALL_NO_KW_BUILTIN_FAST': 167,
+    'CALL_NO_KW_BUILTIN_O': 168,
+    'CALL_NO_KW_ISINSTANCE': 169,
+    'CALL_NO_KW_LEN': 170,
+    'CALL_NO_KW_LIST_APPEND': 171,
+    'CALL_NO_KW_METHOD_DESCRIPTOR_FAST': 172,
+    'CALL_NO_KW_METHOD_DESCRIPTOR_NOARGS': 173,
+    'CALL_NO_KW_METHOD_DESCRIPTOR_O': 174,
+    'CALL_NO_KW_STR_1': 175,
+    'CALL_NO_KW_TUPLE_1': 176,
+    'CALL_NO_KW_TYPE_1': 177,
+    'CALL_PY_EXACT_ARGS': 178,
+    'CALL_PY_WITH_DEFAULTS': 179,
+    'COMPARE_OP_FLOAT': 180,
+    'COMPARE_OP_INT': 181,
+    'COMPARE_OP_STR': 182,
+    'FOR_ITER_GEN': 183,
+    'FOR_ITER_LIST': 184,
+    'FOR_ITER_RANGE': 185,
+    'FOR_ITER_TUPLE': 186,
+    'LOAD_ATTR_CLASS': 187,
+    'LOAD_ATTR_GETATTRIBUTE_OVERRIDDEN': 188,
+    'LOAD_ATTR_INSTANCE_VALUE': 189,
+    'LOAD_ATTR_METHOD_LAZY_DICT': 190,
+    'LOAD_ATTR_METHOD_NO_DICT': 191,
+    'LOAD_ATTR_METHOD_WITH_VALUES': 192,
+    'LOAD_ATTR_MODULE': 193,
+    'LOAD_ATTR_NONDESCRIPTOR_NO_DICT': 194,
+    'LOAD_ATTR_NONDESCRIPTOR_WITH_VALUES': 195,
+    'LOAD_ATTR_PROPERTY': 196,
+    'LOAD_ATTR_SLOT': 197,
+    'LOAD_ATTR_WITH_HINT': 198,
+    'LOAD_GLOBAL_BUILTIN': 199,
+    'LOAD_GLOBAL_MODULE': 200,
+    'LOAD_SUPER_ATTR_ATTR': 201,
+    'LOAD_SUPER_ATTR_METHOD': 202,
+    'RESUME_CHECK': 203,
+    'SEND_GEN': 204,
+    'STORE_ATTR_INSTANCE_VALUE': 205,
+    'STORE_ATTR_SLOT': 206,
+    'STORE_ATTR_WITH_HINT': 207,
+    'STORE_SUBSCR_DICT': 208,
+    'STORE_SUBSCR_LIST_INT': 209,
+    'TO_BOOL_ALWAYS_TRUE': 210,
+    'TO_BOOL_BOOL': 211,
+    'TO_BOOL_INT': 212,
+    'TO_BOOL_LIST': 213,
+    'TO_BOOL_NONE': 214,
+    'TO_BOOL_STR': 215,
+    'UNPACK_SEQUENCE_LIST': 216,
+    'UNPACK_SEQUENCE_TUPLE': 217,
+    'UNPACK_SEQUENCE_TWO_TUPLE': 218,
 }
 
 opmap = {
     'CACHE': 0,
     'BEFORE_ASYNC_WITH': 1,
     'BEFORE_WITH': 2,
-    'BINARY_SLICE': 11,
-    'BINARY_SUBSCR': 12,
+    'BINARY_SLICE': 4,
+    'BINARY_SUBSCR': 5,
+    'CHECK_EG_MATCH': 6,
+    'CHECK_EXC_MATCH': 7,
+    'CLEANUP_THROW': 8,
+    'DELETE_SUBSCR': 9,
+    'END_ASYNC_FOR': 10,
+    'END_FOR': 11,
+    'END_SEND': 12,
+    'EXIT_INIT_CHECK': 13,
+    'FORMAT_SIMPLE': 14,
+    'FORMAT_WITH_SPEC': 15,
+    'GET_AITER': 16,
     'RESERVED': 17,
-    'CHECK_EG_MATCH': 19,
-    'CHECK_EXC_MATCH': 20,
-    'CLEANUP_THROW': 21,
-    'DELETE_SUBSCR': 22,
-    'END_ASYNC_FOR': 23,
-    'END_FOR': 24,
-    'END_SEND': 25,
-    'EXIT_INIT_CHECK': 26,
-    'FORMAT_SIMPLE': 27,
-    'FORMAT_WITH_SPEC': 28,
-    'GET_AITER': 29,
-    'GET_ANEXT': 30,
-    'GET_ITER': 31,
-    'GET_LEN': 32,
-    'GET_YIELD_FROM_ITER': 33,
-    'INTERPRETER_EXIT': 34,
-    'LOAD_ASSERTION_ERROR': 35,
-    'LOAD_BUILD_CLASS': 36,
-    'LOAD_LOCALS': 37,
-    'MAKE_FUNCTION': 38,
-    'MATCH_KEYS': 39,
-    'MATCH_MAPPING': 40,
-    'MATCH_SEQUENCE': 41,
-    'NOP': 42,
-    'POP_EXCEPT': 43,
-    'POP_TOP': 44,
-    'PUSH_EXC_INFO': 45,
-    'PUSH_NULL': 46,
-    'RETURN_GENERATOR': 48,
-    'RETURN_VALUE': 49,
-    'SETUP_ANNOTATIONS': 50,
-    'STORE_SLICE': 53,
-    'STORE_SUBSCR': 54,
-    'TO_BOOL': 57,
-    'UNARY_INVERT': 64,
-    'UNARY_NEGATIVE': 65,
-    'UNARY_NOT': 66,
-    'WITH_EXCEPT_START': 67,
-    'BINARY_OP': 68,
-    'BUILD_CONST_KEY_MAP': 69,
-    'BUILD_LIST': 70,
-    'BUILD_MAP': 71,
-    'BUILD_SET': 72,
-    'BUILD_SLICE': 73,
-    'BUILD_STRING': 74,
-    'BUILD_TUPLE': 75,
-    'CALL': 76,
-    'CALL_FUNCTION_EX': 80,
-    'CALL_INTRINSIC_1': 81,
-    'CALL_INTRINSIC_2': 82,
-    'COMPARE_OP': 98,
-    'CONTAINS_OP': 102,
-    'CONVERT_VALUE': 103,
-    'COPY': 104,
-    'COPY_FREE_VARS': 105,
-    'DELETE_ATTR': 106,
-    'DELETE_DEREF': 107,
-    'DELETE_FAST': 108,
-    'DELETE_GLOBAL': 109,
-    'DELETE_NAME': 110,
-    'DICT_MERGE': 111,
-    'DICT_UPDATE': 112,
-    'ENTER_EXECUTOR': 113,
-    'EXTENDED_ARG': 114,
-    'FOR_ITER': 115,
-    'GET_AWAITABLE': 120,
-    'IMPORT_FROM': 121,
-    'IMPORT_NAME': 122,
-    'IS_OP': 123,
-    'JUMP_BACKWARD': 124,
-    'JUMP_BACKWARD_NO_INTERRUPT': 125,
-    'JUMP_FORWARD': 126,
-    'KW_NAMES': 127,
-    'LIST_APPEND': 128,
-    'LIST_EXTEND': 129,
-    'LOAD_ATTR': 130,
-    'LOAD_CONST': 143,
-    'LOAD_DEREF': 144,
-    'LOAD_FAST': 145,
-    'LOAD_FAST_AND_CLEAR': 146,
-    'LOAD_FAST_CHECK': 147,
-    'LOAD_FAST_LOAD_FAST': 148,
-    'LOAD_FROM_DICT_OR_DEREF': 149,
-    'LOAD_FROM_DICT_OR_GLOBALS': 150,
-    'LOAD_GLOBAL': 151,
-    'LOAD_NAME': 154,
-    'LOAD_SUPER_ATTR': 155,
-    'MAKE_CELL': 158,
-    'MAP_ADD': 159,
-    'MATCH_CLASS': 160,
-    'POP_JUMP_IF_FALSE': 161,
-    'POP_JUMP_IF_NONE': 162,
-    'POP_JUMP_IF_NOT_NONE': 163,
-    'POP_JUMP_IF_TRUE': 164,
-    'RAISE_VARARGS': 165,
-    'RESUME': 166,
-    'RERAISE': 167,
-    'RETURN_CONST': 168,
-    'SEND': 169,
-    'SET_ADD': 171,
-    'SET_FUNCTION_ATTRIBUTE': 172,
-    'SET_UPDATE': 173,
-    'STORE_ATTR': 174,
-    'STORE_DEREF': 176,
-    'STORE_FAST': 177,
-    'STORE_FAST_LOAD_FAST': 178,
-    'STORE_FAST_STORE_FAST': 179,
-    'STORE_GLOBAL': 180,
-    'STORE_NAME': 181,
-    'SWAP': 182,
-    'UNPACK_EX': 183,
-    'UNPACK_SEQUENCE': 184,
-    'YIELD_VALUE': 188,
+    'GET_ANEXT': 18,
+    'GET_ITER': 19,
+    'GET_LEN': 20,
+    'GET_YIELD_FROM_ITER': 21,
+    'INTERPRETER_EXIT': 22,
+    'LOAD_ASSERTION_ERROR': 23,
+    'LOAD_BUILD_CLASS': 24,
+    'LOAD_LOCALS': 25,
+    'MAKE_FUNCTION': 26,
+    'MATCH_KEYS': 27,
+    'MATCH_MAPPING': 28,
+    'MATCH_SEQUENCE': 29,
+    'NOP': 30,
+    'POP_EXCEPT': 31,
+    'POP_TOP': 32,
+    'PUSH_EXC_INFO': 33,
+    'PUSH_NULL': 34,
+    'RETURN_GENERATOR': 35,
+    'RETURN_VALUE': 36,
+    'SETUP_ANNOTATIONS': 37,
+    'STORE_SLICE': 38,
+    'STORE_SUBSCR': 39,
+    'TO_BOOL': 40,
+    'UNARY_INVERT': 41,
+    'UNARY_NEGATIVE': 42,
+    'UNARY_NOT': 43,
+    'WITH_EXCEPT_START': 44,
+    'BINARY_OP': 45,
+    'BUILD_CONST_KEY_MAP': 46,
+    'BUILD_LIST': 47,
+    'BUILD_MAP': 48,
+    'BUILD_SET': 49,
+    'BUILD_SLICE': 50,
+    'BUILD_STRING': 51,
+    'BUILD_TUPLE': 52,
+    'CALL': 53,
+    'CALL_FUNCTION_EX': 54,
+    'CALL_INTRINSIC_1': 55,
+    'CALL_INTRINSIC_2': 56,
+    'COMPARE_OP': 57,
+    'CONTAINS_OP': 58,
+    'CONVERT_VALUE': 59,
+    'COPY': 60,
+    'COPY_FREE_VARS': 61,
+    'DELETE_ATTR': 62,
+    'DELETE_DEREF': 63,
+    'DELETE_FAST': 64,
+    'DELETE_GLOBAL': 65,
+    'DELETE_NAME': 66,
+    'DICT_MERGE': 67,
+    'DICT_UPDATE': 68,
+    'ENTER_EXECUTOR': 69,
+    'EXTENDED_ARG': 70,
+    'FOR_ITER': 71,
+    'GET_AWAITABLE': 72,
+    'IMPORT_FROM': 73,
+    'IMPORT_NAME': 74,
+    'IS_OP': 75,
+    'JUMP_BACKWARD': 76,
+    'JUMP_BACKWARD_NO_INTERRUPT': 77,
+    'JUMP_FORWARD': 78,
+    'KW_NAMES': 79,
+    'LIST_APPEND': 80,
+    'LIST_EXTEND': 81,
+    'LOAD_ATTR': 82,
+    'LOAD_CONST': 83,
+    'LOAD_DEREF': 84,
+    'LOAD_FAST': 85,
+    'LOAD_FAST_AND_CLEAR': 86,
+    'LOAD_FAST_CHECK': 87,
+    'LOAD_FAST_LOAD_FAST': 88,
+    'LOAD_FROM_DICT_OR_DEREF': 89,
+    'LOAD_FROM_DICT_OR_GLOBALS': 90,
+    'LOAD_GLOBAL': 91,
+    'LOAD_NAME': 92,
+    'LOAD_SUPER_ATTR': 93,
+    'MAKE_CELL': 94,
+    'MAP_ADD': 95,
+    'MATCH_CLASS': 96,
+    'POP_JUMP_IF_FALSE': 97,
+    'POP_JUMP_IF_NONE': 98,
+    'POP_JUMP_IF_NOT_NONE': 99,
+    'POP_JUMP_IF_TRUE': 100,
+    'RAISE_VARARGS': 101,
+    'RERAISE': 102,
+    'RETURN_CONST': 103,
+    'SEND': 104,
+    'SET_ADD': 105,
+    'SET_FUNCTION_ATTRIBUTE': 106,
+    'SET_UPDATE': 107,
+    'STORE_ATTR': 108,
+    'STORE_DEREF': 109,
+    'STORE_FAST': 110,
+    'STORE_FAST_LOAD_FAST': 111,
+    'STORE_FAST_STORE_FAST': 112,
+    'STORE_GLOBAL': 113,
+    'STORE_NAME': 114,
+    'SWAP': 115,
+    'UNPACK_EX': 116,
+    'UNPACK_SEQUENCE': 117,
+    'YIELD_VALUE': 118,
+    'RESUME': 149,
     'INSTRUMENTED_RESUME': 237,
     'INSTRUMENTED_END_FOR': 238,
     'INSTRUMENTED_END_SEND': 239,
@@ -331,4 +331,4 @@ opmap = {
     'STORE_FAST_MAYBE_NULL': 267,
 }
 MIN_INSTRUMENTED_OPCODE = 237
-HAVE_ARGUMENT = 68
+HAVE_ARGUMENT = 45
index 843af30050016948e4a26a513fb6bfd40d4de58d..d671d1799884e249d6c380794c42a7545906be0c 100644 (file)
@@ -457,6 +457,7 @@ _code_type = type(_write_atomic.__code__)
 #     Python 3.13a1 3559 (Generate opcode IDs from bytecodes.c)
 #     Python 3.13a1 3560 (Add RESUME_CHECK instruction)
 #     Python 3.13a1 3561 (Add cache entry to branch instructions)
+#     Python 3.13a1 3562 (Assign opcode IDs for internal ops in separate range)
 
 #     Python 3.14 will start with 3600
 
@@ -473,7 +474,7 @@ _code_type = type(_write_atomic.__code__)
 # Whenever MAGIC_NUMBER is changed, the ranges in the magic_values array
 # in PC/launcher.c must also be updated.
 
-MAGIC_NUMBER = (3561).to_bytes(2, 'little') + b'\r\n'
+MAGIC_NUMBER = (3562).to_bytes(2, 'little') + b'\r\n'
 
 _RAW_MAGIC_NUMBER = int.from_bytes(MAGIC_NUMBER, 'little')  # For import.c
 
index c3ad105fb2a3b5b4d29963d3cc01a0ff2e120d0a..0f066d8294261d8097fb9b412dde3dd4ebcfd903 100644 (file)
@@ -1641,197 +1641,197 @@ def _prepare_test_cases():
 Instruction = dis.Instruction
 
 expected_opinfo_outer = [
-  Instruction(opname='MAKE_CELL', opcode=158, arg=0, argval='a', argrepr='a', offset=0, start_offset=0, starts_line=True, line_number=None, is_jump_target=False, positions=None),
-  Instruction(opname='MAKE_CELL', opcode=158, arg=1, argval='b', argrepr='b', offset=2, start_offset=2, starts_line=False, line_number=None, is_jump_target=False, positions=None),
-  Instruction(opname='RESUME', opcode=166, arg=0, argval=0, argrepr='', offset=4, start_offset=4, starts_line=True, line_number=1, is_jump_target=False, positions=None),
-  Instruction(opname='LOAD_CONST', opcode=143, arg=5, argval=(3, 4), argrepr='(3, 4)', offset=6, start_offset=6, starts_line=True, line_number=2, is_jump_target=False, positions=None),
-  Instruction(opname='LOAD_FAST', opcode=145, arg=0, argval='a', argrepr='a', offset=8, start_offset=8, starts_line=False, line_number=2, is_jump_target=False, positions=None),
-  Instruction(opname='LOAD_FAST', opcode=145, arg=1, argval='b', argrepr='b', offset=10, start_offset=10, starts_line=False, line_number=2, is_jump_target=False, positions=None),
-  Instruction(opname='BUILD_TUPLE', opcode=75, arg=2, argval=2, argrepr='', offset=12, start_offset=12, starts_line=False, line_number=2, is_jump_target=False, positions=None),
-  Instruction(opname='LOAD_CONST', opcode=143, arg=1, argval=code_object_f, argrepr=repr(code_object_f), offset=14, start_offset=14, starts_line=False, line_number=2, is_jump_target=False, positions=None),
-  Instruction(opname='MAKE_FUNCTION', opcode=38, arg=None, argval=None, argrepr='', offset=16, start_offset=16, starts_line=False, line_number=2, is_jump_target=False, positions=None),
-  Instruction(opname='SET_FUNCTION_ATTRIBUTE', opcode=172, arg=8, argval=8, argrepr='closure', offset=18, start_offset=18, starts_line=False, line_number=2, is_jump_target=False, positions=None),
-  Instruction(opname='SET_FUNCTION_ATTRIBUTE', opcode=172, arg=1, argval=1, argrepr='defaults', offset=20, start_offset=20, starts_line=False, line_number=2, is_jump_target=False, positions=None),
-  Instruction(opname='STORE_FAST', opcode=177, arg=2, argval='f', argrepr='f', offset=22, start_offset=22, starts_line=False, line_number=2, is_jump_target=False, positions=None),
-  Instruction(opname='LOAD_GLOBAL', opcode=151, arg=1, argval='print', argrepr='print + NULL', offset=24, start_offset=24, starts_line=True, line_number=7, is_jump_target=False, positions=None),
-  Instruction(opname='LOAD_DEREF', opcode=144, arg=0, argval='a', argrepr='a', offset=34, start_offset=34, starts_line=False, line_number=7, is_jump_target=False, positions=None),
-  Instruction(opname='LOAD_DEREF', opcode=144, arg=1, argval='b', argrepr='b', offset=36, start_offset=36, starts_line=False, line_number=7, is_jump_target=False, positions=None),
-  Instruction(opname='LOAD_CONST', opcode=143, arg=2, argval='', argrepr="''", offset=38, start_offset=38, starts_line=False, line_number=7, is_jump_target=False, positions=None),
-  Instruction(opname='LOAD_CONST', opcode=143, arg=3, argval=1, argrepr='1', offset=40, start_offset=40, starts_line=False, line_number=7, is_jump_target=False, positions=None),
-  Instruction(opname='BUILD_LIST', opcode=70, arg=0, argval=0, argrepr='', offset=42, start_offset=42, starts_line=False, line_number=7, is_jump_target=False, positions=None),
-  Instruction(opname='BUILD_MAP', opcode=71, arg=0, argval=0, argrepr='', offset=44, start_offset=44, starts_line=False, line_number=7, is_jump_target=False, positions=None),
-  Instruction(opname='LOAD_CONST', opcode=143, arg=4, argval='Hello world!', argrepr="'Hello world!'", offset=46, start_offset=46, starts_line=False, line_number=7, is_jump_target=False, positions=None),
-  Instruction(opname='CALL', opcode=76, arg=7, argval=7, argrepr='', offset=48, start_offset=48, starts_line=False, line_number=7, is_jump_target=False, positions=None),
-  Instruction(opname='POP_TOP', opcode=44, arg=None, argval=None, argrepr='', offset=56, start_offset=56, starts_line=False, line_number=7, is_jump_target=False, positions=None),
-  Instruction(opname='LOAD_FAST', opcode=145, arg=2, argval='f', argrepr='f', offset=58, start_offset=58, starts_line=True, line_number=8, is_jump_target=False, positions=None),
-  Instruction(opname='RETURN_VALUE', opcode=49, arg=None, argval=None, argrepr='', offset=60, start_offset=60, starts_line=False, line_number=8, is_jump_target=False, positions=None),
+  Instruction(opname='MAKE_CELL', opcode=94, arg=0, argval='a', argrepr='a', offset=0, start_offset=0, starts_line=True, line_number=None, is_jump_target=False, positions=None),
+  Instruction(opname='MAKE_CELL', opcode=94, arg=1, argval='b', argrepr='b', offset=2, start_offset=2, starts_line=False, line_number=None, is_jump_target=False, positions=None),
+  Instruction(opname='RESUME', opcode=149, arg=0, argval=0, argrepr='', offset=4, start_offset=4, starts_line=True, line_number=1, is_jump_target=False, positions=None),
+  Instruction(opname='LOAD_CONST', opcode=83, arg=5, argval=(3, 4), argrepr='(3, 4)', offset=6, start_offset=6, starts_line=True, line_number=2, is_jump_target=False, positions=None),
+  Instruction(opname='LOAD_FAST', opcode=85, arg=0, argval='a', argrepr='a', offset=8, start_offset=8, starts_line=False, line_number=2, is_jump_target=False, positions=None),
+  Instruction(opname='LOAD_FAST', opcode=85, arg=1, argval='b', argrepr='b', offset=10, start_offset=10, starts_line=False, line_number=2, is_jump_target=False, positions=None),
+  Instruction(opname='BUILD_TUPLE', opcode=52, arg=2, argval=2, argrepr='', offset=12, start_offset=12, starts_line=False, line_number=2, is_jump_target=False, positions=None),
+  Instruction(opname='LOAD_CONST', opcode=83, arg=1, argval=code_object_f, argrepr=repr(code_object_f), offset=14, start_offset=14, starts_line=False, line_number=2, is_jump_target=False, positions=None),
+  Instruction(opname='MAKE_FUNCTION', opcode=26, arg=None, argval=None, argrepr='', offset=16, start_offset=16, starts_line=False, line_number=2, is_jump_target=False, positions=None),
+  Instruction(opname='SET_FUNCTION_ATTRIBUTE', opcode=106, arg=8, argval=8, argrepr='closure', offset=18, start_offset=18, starts_line=False, line_number=2, is_jump_target=False, positions=None),
+  Instruction(opname='SET_FUNCTION_ATTRIBUTE', opcode=106, arg=1, argval=1, argrepr='defaults', offset=20, start_offset=20, starts_line=False, line_number=2, is_jump_target=False, positions=None),
+  Instruction(opname='STORE_FAST', opcode=110, arg=2, argval='f', argrepr='f', offset=22, start_offset=22, starts_line=False, line_number=2, is_jump_target=False, positions=None),
+  Instruction(opname='LOAD_GLOBAL', opcode=91, arg=1, argval='print', argrepr='print + NULL', offset=24, start_offset=24, starts_line=True, line_number=7, is_jump_target=False, positions=None),
+  Instruction(opname='LOAD_DEREF', opcode=84, arg=0, argval='a', argrepr='a', offset=34, start_offset=34, starts_line=False, line_number=7, is_jump_target=False, positions=None),
+  Instruction(opname='LOAD_DEREF', opcode=84, arg=1, argval='b', argrepr='b', offset=36, start_offset=36, starts_line=False, line_number=7, is_jump_target=False, positions=None),
+  Instruction(opname='LOAD_CONST', opcode=83, arg=2, argval='', argrepr="''", offset=38, start_offset=38, starts_line=False, line_number=7, is_jump_target=False, positions=None),
+  Instruction(opname='LOAD_CONST', opcode=83, arg=3, argval=1, argrepr='1', offset=40, start_offset=40, starts_line=False, line_number=7, is_jump_target=False, positions=None),
+  Instruction(opname='BUILD_LIST', opcode=47, arg=0, argval=0, argrepr='', offset=42, start_offset=42, starts_line=False, line_number=7, is_jump_target=False, positions=None),
+  Instruction(opname='BUILD_MAP', opcode=48, arg=0, argval=0, argrepr='', offset=44, start_offset=44, starts_line=False, line_number=7, is_jump_target=False, positions=None),
+  Instruction(opname='LOAD_CONST', opcode=83, arg=4, argval='Hello world!', argrepr="'Hello world!'", offset=46, start_offset=46, starts_line=False, line_number=7, is_jump_target=False, positions=None),
+  Instruction(opname='CALL', opcode=53, arg=7, argval=7, argrepr='', offset=48, start_offset=48, starts_line=False, line_number=7, is_jump_target=False, positions=None),
+  Instruction(opname='POP_TOP', opcode=32, arg=None, argval=None, argrepr='', offset=56, start_offset=56, starts_line=False, line_number=7, is_jump_target=False, positions=None),
+  Instruction(opname='LOAD_FAST', opcode=85, arg=2, argval='f', argrepr='f', offset=58, start_offset=58, starts_line=True, line_number=8, is_jump_target=False, positions=None),
+  Instruction(opname='RETURN_VALUE', opcode=36, arg=None, argval=None, argrepr='', offset=60, start_offset=60, starts_line=False, line_number=8, is_jump_target=False, positions=None),
 ]
 
 expected_opinfo_f = [
-  Instruction(opname='COPY_FREE_VARS', opcode=105, arg=2, argval=2, argrepr='', offset=0, start_offset=0, starts_line=True, line_number=None, is_jump_target=False, positions=None),
-  Instruction(opname='MAKE_CELL', opcode=158, arg=0, argval='c', argrepr='c', offset=2, start_offset=2, starts_line=False, line_number=None, is_jump_target=False, positions=None),
-  Instruction(opname='MAKE_CELL', opcode=158, arg=1, argval='d', argrepr='d', offset=4, start_offset=4, starts_line=False, line_number=None, is_jump_target=False, positions=None),
-  Instruction(opname='RESUME', opcode=166, arg=0, argval=0, argrepr='', offset=6, start_offset=6, starts_line=True, line_number=2, is_jump_target=False, positions=None),
-  Instruction(opname='LOAD_CONST', opcode=143, arg=2, argval=(5, 6), argrepr='(5, 6)', offset=8, start_offset=8, starts_line=True, line_number=3, is_jump_target=False, positions=None),
-  Instruction(opname='LOAD_FAST', opcode=145, arg=3, argval='a', argrepr='a', offset=10, start_offset=10, starts_line=False, line_number=3, is_jump_target=False, positions=None),
-  Instruction(opname='LOAD_FAST', opcode=145, arg=4, argval='b', argrepr='b', offset=12, start_offset=12, starts_line=False, line_number=3, is_jump_target=False, positions=None),
-  Instruction(opname='LOAD_FAST', opcode=145, arg=0, argval='c', argrepr='c', offset=14, start_offset=14, starts_line=False, line_number=3, is_jump_target=False, positions=None),
-  Instruction(opname='LOAD_FAST', opcode=145, arg=1, argval='d', argrepr='d', offset=16, start_offset=16, starts_line=False, line_number=3, is_jump_target=False, positions=None),
-  Instruction(opname='BUILD_TUPLE', opcode=75, arg=4, argval=4, argrepr='', offset=18, start_offset=18, starts_line=False, line_number=3, is_jump_target=False, positions=None),
-  Instruction(opname='LOAD_CONST', opcode=143, arg=1, argval=code_object_inner, argrepr=repr(code_object_inner), offset=20, start_offset=20, starts_line=False, line_number=3, is_jump_target=False, positions=None),
-  Instruction(opname='MAKE_FUNCTION', opcode=38, arg=None, argval=None, argrepr='', offset=22, start_offset=22, starts_line=False, line_number=3, is_jump_target=False, positions=None),
-  Instruction(opname='SET_FUNCTION_ATTRIBUTE', opcode=172, arg=8, argval=8, argrepr='closure', offset=24, start_offset=24, starts_line=False, line_number=3, is_jump_target=False, positions=None),
-  Instruction(opname='SET_FUNCTION_ATTRIBUTE', opcode=172, arg=1, argval=1, argrepr='defaults', offset=26, start_offset=26, starts_line=False, line_number=3, is_jump_target=False, positions=None),
-  Instruction(opname='STORE_FAST', opcode=177, arg=2, argval='inner', argrepr='inner', offset=28, start_offset=28, starts_line=False, line_number=3, is_jump_target=False, positions=None),
-  Instruction(opname='LOAD_GLOBAL', opcode=151, arg=1, argval='print', argrepr='print + NULL', offset=30, start_offset=30, starts_line=True, line_number=5, is_jump_target=False, positions=None),
-  Instruction(opname='LOAD_DEREF', opcode=144, arg=3, argval='a', argrepr='a', offset=40, start_offset=40, starts_line=False, line_number=5, is_jump_target=False, positions=None),
-  Instruction(opname='LOAD_DEREF', opcode=144, arg=4, argval='b', argrepr='b', offset=42, start_offset=42, starts_line=False, line_number=5, is_jump_target=False, positions=None),
-  Instruction(opname='LOAD_DEREF', opcode=144, arg=0, argval='c', argrepr='c', offset=44, start_offset=44, starts_line=False, line_number=5, is_jump_target=False, positions=None),
-  Instruction(opname='LOAD_DEREF', opcode=144, arg=1, argval='d', argrepr='d', offset=46, start_offset=46, starts_line=False, line_number=5, is_jump_target=False, positions=None),
-  Instruction(opname='CALL', opcode=76, arg=4, argval=4, argrepr='', offset=48, start_offset=48, starts_line=False, line_number=5, is_jump_target=False, positions=None),
-  Instruction(opname='POP_TOP', opcode=44, arg=None, argval=None, argrepr='', offset=56, start_offset=56, starts_line=False, line_number=5, is_jump_target=False, positions=None),
-  Instruction(opname='LOAD_FAST', opcode=145, arg=2, argval='inner', argrepr='inner', offset=58, start_offset=58, starts_line=True, line_number=6, is_jump_target=False, positions=None),
-  Instruction(opname='RETURN_VALUE', opcode=49, arg=None, argval=None, argrepr='', offset=60, start_offset=60, starts_line=False, line_number=6, is_jump_target=False, positions=None),
+  Instruction(opname='COPY_FREE_VARS', opcode=61, arg=2, argval=2, argrepr='', offset=0, start_offset=0, starts_line=True, line_number=None, is_jump_target=False, positions=None),
+  Instruction(opname='MAKE_CELL', opcode=94, arg=0, argval='c', argrepr='c', offset=2, start_offset=2, starts_line=False, line_number=None, is_jump_target=False, positions=None),
+  Instruction(opname='MAKE_CELL', opcode=94, arg=1, argval='d', argrepr='d', offset=4, start_offset=4, starts_line=False, line_number=None, is_jump_target=False, positions=None),
+  Instruction(opname='RESUME', opcode=149, arg=0, argval=0, argrepr='', offset=6, start_offset=6, starts_line=True, line_number=2, is_jump_target=False, positions=None),
+  Instruction(opname='LOAD_CONST', opcode=83, arg=2, argval=(5, 6), argrepr='(5, 6)', offset=8, start_offset=8, starts_line=True, line_number=3, is_jump_target=False, positions=None),
+  Instruction(opname='LOAD_FAST', opcode=85, arg=3, argval='a', argrepr='a', offset=10, start_offset=10, starts_line=False, line_number=3, is_jump_target=False, positions=None),
+  Instruction(opname='LOAD_FAST', opcode=85, arg=4, argval='b', argrepr='b', offset=12, start_offset=12, starts_line=False, line_number=3, is_jump_target=False, positions=None),
+  Instruction(opname='LOAD_FAST', opcode=85, arg=0, argval='c', argrepr='c', offset=14, start_offset=14, starts_line=False, line_number=3, is_jump_target=False, positions=None),
+  Instruction(opname='LOAD_FAST', opcode=85, arg=1, argval='d', argrepr='d', offset=16, start_offset=16, starts_line=False, line_number=3, is_jump_target=False, positions=None),
+  Instruction(opname='BUILD_TUPLE', opcode=52, arg=4, argval=4, argrepr='', offset=18, start_offset=18, starts_line=False, line_number=3, is_jump_target=False, positions=None),
+  Instruction(opname='LOAD_CONST', opcode=83, arg=1, argval=code_object_inner, argrepr=repr(code_object_inner), offset=20, start_offset=20, starts_line=False, line_number=3, is_jump_target=False, positions=None),
+  Instruction(opname='MAKE_FUNCTION', opcode=26, arg=None, argval=None, argrepr='', offset=22, start_offset=22, starts_line=False, line_number=3, is_jump_target=False, positions=None),
+  Instruction(opname='SET_FUNCTION_ATTRIBUTE', opcode=106, arg=8, argval=8, argrepr='closure', offset=24, start_offset=24, starts_line=False, line_number=3, is_jump_target=False, positions=None),
+  Instruction(opname='SET_FUNCTION_ATTRIBUTE', opcode=106, arg=1, argval=1, argrepr='defaults', offset=26, start_offset=26, starts_line=False, line_number=3, is_jump_target=False, positions=None),
+  Instruction(opname='STORE_FAST', opcode=110, arg=2, argval='inner', argrepr='inner', offset=28, start_offset=28, starts_line=False, line_number=3, is_jump_target=False, positions=None),
+  Instruction(opname='LOAD_GLOBAL', opcode=91, arg=1, argval='print', argrepr='print + NULL', offset=30, start_offset=30, starts_line=True, line_number=5, is_jump_target=False, positions=None),
+  Instruction(opname='LOAD_DEREF', opcode=84, arg=3, argval='a', argrepr='a', offset=40, start_offset=40, starts_line=False, line_number=5, is_jump_target=False, positions=None),
+  Instruction(opname='LOAD_DEREF', opcode=84, arg=4, argval='b', argrepr='b', offset=42, start_offset=42, starts_line=False, line_number=5, is_jump_target=False, positions=None),
+  Instruction(opname='LOAD_DEREF', opcode=84, arg=0, argval='c', argrepr='c', offset=44, start_offset=44, starts_line=False, line_number=5, is_jump_target=False, positions=None),
+  Instruction(opname='LOAD_DEREF', opcode=84, arg=1, argval='d', argrepr='d', offset=46, start_offset=46, starts_line=False, line_number=5, is_jump_target=False, positions=None),
+  Instruction(opname='CALL', opcode=53, arg=4, argval=4, argrepr='', offset=48, start_offset=48, starts_line=False, line_number=5, is_jump_target=False, positions=None),
+  Instruction(opname='POP_TOP', opcode=32, arg=None, argval=None, argrepr='', offset=56, start_offset=56, starts_line=False, line_number=5, is_jump_target=False, positions=None),
+  Instruction(opname='LOAD_FAST', opcode=85, arg=2, argval='inner', argrepr='inner', offset=58, start_offset=58, starts_line=True, line_number=6, is_jump_target=False, positions=None),
+  Instruction(opname='RETURN_VALUE', opcode=36, arg=None, argval=None, argrepr='', offset=60, start_offset=60, starts_line=False, line_number=6, is_jump_target=False, positions=None),
 ]
 
 expected_opinfo_inner = [
-  Instruction(opname='COPY_FREE_VARS', opcode=105, arg=4, argval=4, argrepr='', offset=0, start_offset=0, starts_line=True, line_number=None, is_jump_target=False, positions=None),
-  Instruction(opname='RESUME', opcode=166, arg=0, argval=0, argrepr='', offset=2, start_offset=2, starts_line=True, line_number=3, is_jump_target=False, positions=None),
-  Instruction(opname='LOAD_GLOBAL', opcode=151, arg=1, argval='print', argrepr='print + NULL', offset=4, start_offset=4, starts_line=True, line_number=4, is_jump_target=False, positions=None),
-  Instruction(opname='LOAD_DEREF', opcode=144, arg=2, argval='a', argrepr='a', offset=14, start_offset=14, starts_line=False, line_number=4, is_jump_target=False, positions=None),
-  Instruction(opname='LOAD_DEREF', opcode=144, arg=3, argval='b', argrepr='b', offset=16, start_offset=16, starts_line=False, line_number=4, is_jump_target=False, positions=None),
-  Instruction(opname='LOAD_DEREF', opcode=144, arg=4, argval='c', argrepr='c', offset=18, start_offset=18, starts_line=False, line_number=4, is_jump_target=False, positions=None),
-  Instruction(opname='LOAD_DEREF', opcode=144, arg=5, argval='d', argrepr='d', offset=20, start_offset=20, starts_line=False, line_number=4, is_jump_target=False, positions=None),
-  Instruction(opname='LOAD_FAST_LOAD_FAST', opcode=148, arg=1, argval=('e', 'f'), argrepr='e, f', offset=22, start_offset=22, starts_line=False, line_number=4, is_jump_target=False, positions=None),
-  Instruction(opname='CALL', opcode=76, arg=6, argval=6, argrepr='', offset=24, start_offset=24, starts_line=False, line_number=4, is_jump_target=False, positions=None),
-  Instruction(opname='POP_TOP', opcode=44, arg=None, argval=None, argrepr='', offset=32, start_offset=32, starts_line=False, line_number=4, is_jump_target=False, positions=None),
-  Instruction(opname='RETURN_CONST', opcode=168, arg=0, argval=None, argrepr='None', offset=34, start_offset=34, starts_line=False, line_number=4, is_jump_target=False, positions=None),
+  Instruction(opname='COPY_FREE_VARS', opcode=61, arg=4, argval=4, argrepr='', offset=0, start_offset=0, starts_line=True, line_number=None, is_jump_target=False, positions=None),
+  Instruction(opname='RESUME', opcode=149, arg=0, argval=0, argrepr='', offset=2, start_offset=2, starts_line=True, line_number=3, is_jump_target=False, positions=None),
+  Instruction(opname='LOAD_GLOBAL', opcode=91, arg=1, argval='print', argrepr='print + NULL', offset=4, start_offset=4, starts_line=True, line_number=4, is_jump_target=False, positions=None),
+  Instruction(opname='LOAD_DEREF', opcode=84, arg=2, argval='a', argrepr='a', offset=14, start_offset=14, starts_line=False, line_number=4, is_jump_target=False, positions=None),
+  Instruction(opname='LOAD_DEREF', opcode=84, arg=3, argval='b', argrepr='b', offset=16, start_offset=16, starts_line=False, line_number=4, is_jump_target=False, positions=None),
+  Instruction(opname='LOAD_DEREF', opcode=84, arg=4, argval='c', argrepr='c', offset=18, start_offset=18, starts_line=False, line_number=4, is_jump_target=False, positions=None),
+  Instruction(opname='LOAD_DEREF', opcode=84, arg=5, argval='d', argrepr='d', offset=20, start_offset=20, starts_line=False, line_number=4, is_jump_target=False, positions=None),
+  Instruction(opname='LOAD_FAST_LOAD_FAST', opcode=88, arg=1, argval=('e', 'f'), argrepr='e, f', offset=22, start_offset=22, starts_line=False, line_number=4, is_jump_target=False, positions=None),
+  Instruction(opname='CALL', opcode=53, arg=6, argval=6, argrepr='', offset=24, start_offset=24, starts_line=False, line_number=4, is_jump_target=False, positions=None),
+  Instruction(opname='POP_TOP', opcode=32, arg=None, argval=None, argrepr='', offset=32, start_offset=32, starts_line=False, line_number=4, is_jump_target=False, positions=None),
+  Instruction(opname='RETURN_CONST', opcode=103, arg=0, argval=None, argrepr='None', offset=34, start_offset=34, starts_line=False, line_number=4, is_jump_target=False, positions=None),
 ]
 
 expected_opinfo_jumpy = [
-  Instruction(opname='RESUME', opcode=166, arg=0, argval=0, argrepr='', offset=0, start_offset=0, starts_line=True, line_number=1, is_jump_target=False, positions=None),
-  Instruction(opname='LOAD_GLOBAL', opcode=151, arg=1, argval='range', argrepr='range + NULL', offset=2, start_offset=2, starts_line=True, line_number=3, is_jump_target=False, positions=None),
-  Instruction(opname='LOAD_CONST', opcode=143, arg=1, argval=10, argrepr='10', offset=12, start_offset=12, starts_line=False, line_number=3, is_jump_target=False, positions=None),
-  Instruction(opname='CALL', opcode=76, arg=1, argval=1, argrepr='', offset=14, start_offset=14, starts_line=False, line_number=3, is_jump_target=False, positions=None),
-  Instruction(opname='GET_ITER', opcode=31, arg=None, argval=None, argrepr='', offset=22, start_offset=22, starts_line=False, line_number=3, is_jump_target=False, positions=None),
-  Instruction(opname='FOR_ITER', opcode=115, arg=30, argval=88, argrepr='to 88', offset=24, start_offset=24, starts_line=False, line_number=3, is_jump_target=True, positions=None),
-  Instruction(opname='STORE_FAST', opcode=177, arg=0, argval='i', argrepr='i', offset=28, start_offset=28, starts_line=False, line_number=3, is_jump_target=False, positions=None),
-  Instruction(opname='LOAD_GLOBAL', opcode=151, arg=3, argval='print', argrepr='print + NULL', offset=30, start_offset=30, starts_line=True, line_number=4, is_jump_target=False, positions=None),
-  Instruction(opname='LOAD_FAST', opcode=145, arg=0, argval='i', argrepr='i', offset=40, start_offset=40, starts_line=False, line_number=4, is_jump_target=False, positions=None),
-  Instruction(opname='CALL', opcode=76, arg=1, argval=1, argrepr='', offset=42, start_offset=42, starts_line=False, line_number=4, is_jump_target=False, positions=None),
-  Instruction(opname='POP_TOP', opcode=44, arg=None, argval=None, argrepr='', offset=50, start_offset=50, starts_line=False, line_number=4, is_jump_target=False, positions=None),
-  Instruction(opname='LOAD_FAST', opcode=145, arg=0, argval='i', argrepr='i', offset=52, start_offset=52, starts_line=True, line_number=5, is_jump_target=False, positions=None),
-  Instruction(opname='LOAD_CONST', opcode=143, arg=2, argval=4, argrepr='4', offset=54, start_offset=54, starts_line=False, line_number=5, is_jump_target=False, positions=None),
-  Instruction(opname='COMPARE_OP', opcode=98, arg=18, argval='<', argrepr='bool(<)', offset=56, start_offset=56, starts_line=False, line_number=5, is_jump_target=False, positions=None),
-  Instruction(opname='POP_JUMP_IF_FALSE', opcode=161, arg=2, argval=68, argrepr='to 68', offset=60, start_offset=60, starts_line=False, line_number=5, is_jump_target=False, positions=None),
-  Instruction(opname='JUMP_BACKWARD', opcode=124, arg=22, argval=24, argrepr='to 24', offset=64, start_offset=64, starts_line=True, line_number=6, is_jump_target=False, positions=None),
-  Instruction(opname='LOAD_FAST', opcode=145, arg=0, argval='i', argrepr='i', offset=68, start_offset=68, starts_line=True, line_number=7, is_jump_target=True, positions=None),
-  Instruction(opname='LOAD_CONST', opcode=143, arg=3, argval=6, argrepr='6', offset=70, start_offset=70, starts_line=False, line_number=7, is_jump_target=False, positions=None),
-  Instruction(opname='COMPARE_OP', opcode=98, arg=148, argval='>', argrepr='bool(>)', offset=72, start_offset=72, starts_line=False, line_number=7, is_jump_target=False, positions=None),
-  Instruction(opname='POP_JUMP_IF_TRUE', opcode=164, arg=2, argval=84, argrepr='to 84', offset=76, start_offset=76, starts_line=False, line_number=7, is_jump_target=False, positions=None),
-  Instruction(opname='JUMP_BACKWARD', opcode=124, arg=30, argval=24, argrepr='to 24', offset=80, start_offset=80, starts_line=False, line_number=7, is_jump_target=False, positions=None),
-  Instruction(opname='POP_TOP', opcode=44, arg=None, argval=None, argrepr='', offset=84, start_offset=84, starts_line=True, line_number=8, is_jump_target=True, positions=None),
-  Instruction(opname='JUMP_FORWARD', opcode=126, arg=12, argval=112, argrepr='to 112', offset=86, start_offset=86, starts_line=False, line_number=8, is_jump_target=False, positions=None),
-  Instruction(opname='END_FOR', opcode=24, arg=None, argval=None, argrepr='', offset=88, start_offset=88, starts_line=True, line_number=3, is_jump_target=True, positions=None),
-  Instruction(opname='LOAD_GLOBAL', opcode=151, arg=3, argval='print', argrepr='print + NULL', offset=90, start_offset=90, starts_line=True, line_number=10, is_jump_target=False, positions=None),
-  Instruction(opname='LOAD_CONST', opcode=143, arg=4, argval='I can haz else clause?', argrepr="'I can haz else clause?'", offset=100, start_offset=100, starts_line=False, line_number=10, is_jump_target=False, positions=None),
-  Instruction(opname='CALL', opcode=76, arg=1, argval=1, argrepr='', offset=102, start_offset=102, starts_line=False, line_number=10, is_jump_target=False, positions=None),
-  Instruction(opname='POP_TOP', opcode=44, arg=None, argval=None, argrepr='', offset=110, start_offset=110, starts_line=False, line_number=10, is_jump_target=False, positions=None),
-  Instruction(opname='LOAD_FAST_CHECK', opcode=147, arg=0, argval='i', argrepr='i', offset=112, start_offset=112, starts_line=True, line_number=11, is_jump_target=True, positions=None),
-  Instruction(opname='TO_BOOL', opcode=57, arg=None, argval=None, argrepr='', offset=114, start_offset=114, starts_line=False, line_number=11, is_jump_target=False, positions=None),
-  Instruction(opname='POP_JUMP_IF_FALSE', opcode=161, arg=40, argval=206, argrepr='to 206', offset=122, start_offset=122, starts_line=False, line_number=11, is_jump_target=False, positions=None),
-  Instruction(opname='LOAD_GLOBAL', opcode=151, arg=3, argval='print', argrepr='print + NULL', offset=126, start_offset=126, starts_line=True, line_number=12, is_jump_target=True, positions=None),
-  Instruction(opname='LOAD_FAST', opcode=145, arg=0, argval='i', argrepr='i', offset=136, start_offset=136, starts_line=False, line_number=12, is_jump_target=False, positions=None),
-  Instruction(opname='CALL', opcode=76, arg=1, argval=1, argrepr='', offset=138, start_offset=138, starts_line=False, line_number=12, is_jump_target=False, positions=None),
-  Instruction(opname='POP_TOP', opcode=44, arg=None, argval=None, argrepr='', offset=146, start_offset=146, starts_line=False, line_number=12, is_jump_target=False, positions=None),
-  Instruction(opname='LOAD_FAST', opcode=145, arg=0, argval='i', argrepr='i', offset=148, start_offset=148, starts_line=True, line_number=13, is_jump_target=False, positions=None),
-  Instruction(opname='LOAD_CONST', opcode=143, arg=5, argval=1, argrepr='1', offset=150, start_offset=150, starts_line=False, line_number=13, is_jump_target=False, positions=None),
-  Instruction(opname='BINARY_OP', opcode=68, arg=23, argval=23, argrepr='-=', offset=152, start_offset=152, starts_line=False, line_number=13, is_jump_target=False, positions=None),
-  Instruction(opname='STORE_FAST', opcode=177, arg=0, argval='i', argrepr='i', offset=156, start_offset=156, starts_line=False, line_number=13, is_jump_target=False, positions=None),
-  Instruction(opname='LOAD_FAST', opcode=145, arg=0, argval='i', argrepr='i', offset=158, start_offset=158, starts_line=True, line_number=14, is_jump_target=False, positions=None),
-  Instruction(opname='LOAD_CONST', opcode=143, arg=3, argval=6, argrepr='6', offset=160, start_offset=160, starts_line=False, line_number=14, is_jump_target=False, positions=None),
-  Instruction(opname='COMPARE_OP', opcode=98, arg=148, argval='>', argrepr='bool(>)', offset=162, start_offset=162, starts_line=False, line_number=14, is_jump_target=False, positions=None),
-  Instruction(opname='POP_JUMP_IF_FALSE', opcode=161, arg=2, argval=174, argrepr='to 174', offset=166, start_offset=166, starts_line=False, line_number=14, is_jump_target=False, positions=None),
-  Instruction(opname='JUMP_BACKWARD', opcode=124, arg=31, argval=112, argrepr='to 112', offset=170, start_offset=170, starts_line=True, line_number=15, is_jump_target=False, positions=None),
-  Instruction(opname='LOAD_FAST', opcode=145, arg=0, argval='i', argrepr='i', offset=174, start_offset=174, starts_line=True, line_number=16, is_jump_target=True, positions=None),
-  Instruction(opname='LOAD_CONST', opcode=143, arg=2, argval=4, argrepr='4', offset=176, start_offset=176, starts_line=False, line_number=16, is_jump_target=False, positions=None),
-  Instruction(opname='COMPARE_OP', opcode=98, arg=18, argval='<', argrepr='bool(<)', offset=178, start_offset=178, starts_line=False, line_number=16, is_jump_target=False, positions=None),
-  Instruction(opname='POP_JUMP_IF_FALSE', opcode=161, arg=1, argval=188, argrepr='to 188', offset=182, start_offset=182, starts_line=False, line_number=16, is_jump_target=False, positions=None),
-  Instruction(opname='JUMP_FORWARD', opcode=126, arg=20, argval=228, argrepr='to 228', offset=186, start_offset=186, starts_line=True, line_number=17, is_jump_target=False, positions=None),
-  Instruction(opname='LOAD_FAST', opcode=145, arg=0, argval='i', argrepr='i', offset=188, start_offset=188, starts_line=True, line_number=11, is_jump_target=True, positions=None),
-  Instruction(opname='TO_BOOL', opcode=57, arg=None, argval=None, argrepr='', offset=190, start_offset=190, starts_line=False, line_number=11, is_jump_target=False, positions=None),
-  Instruction(opname='POP_JUMP_IF_FALSE', opcode=161, arg=2, argval=206, argrepr='to 206', offset=198, start_offset=198, starts_line=False, line_number=11, is_jump_target=False, positions=None),
-  Instruction(opname='JUMP_BACKWARD', opcode=124, arg=40, argval=126, argrepr='to 126', offset=202, start_offset=202, starts_line=False, line_number=11, is_jump_target=False, positions=None),
-  Instruction(opname='LOAD_GLOBAL', opcode=151, arg=3, argval='print', argrepr='print + NULL', offset=206, start_offset=206, starts_line=True, line_number=19, is_jump_target=True, positions=None),
-  Instruction(opname='LOAD_CONST', opcode=143, arg=6, argval='Who let lolcatz into this test suite?', argrepr="'Who let lolcatz into this test suite?'", offset=216, start_offset=216, starts_line=False, line_number=19, is_jump_target=False, positions=None),
-  Instruction(opname='CALL', opcode=76, arg=1, argval=1, argrepr='', offset=218, start_offset=218, starts_line=False, line_number=19, is_jump_target=False, positions=None),
-  Instruction(opname='POP_TOP', opcode=44, arg=None, argval=None, argrepr='', offset=226, start_offset=226, starts_line=False, line_number=19, is_jump_target=False, positions=None),
-  Instruction(opname='NOP', opcode=42, arg=None, argval=None, argrepr='', offset=228, start_offset=228, starts_line=True, line_number=20, is_jump_target=True, positions=None),
-  Instruction(opname='LOAD_CONST', opcode=143, arg=5, argval=1, argrepr='1', offset=230, start_offset=230, starts_line=True, line_number=21, is_jump_target=False, positions=None),
-  Instruction(opname='LOAD_CONST', opcode=143, arg=7, argval=0, argrepr='0', offset=232, start_offset=232, starts_line=False, line_number=21, is_jump_target=False, positions=None),
-  Instruction(opname='BINARY_OP', opcode=68, arg=11, argval=11, argrepr='/', offset=234, start_offset=234, starts_line=False, line_number=21, is_jump_target=False, positions=None),
-  Instruction(opname='POP_TOP', opcode=44, arg=None, argval=None, argrepr='', offset=238, start_offset=238, starts_line=False, line_number=21, is_jump_target=False, positions=None),
-  Instruction(opname='LOAD_FAST', opcode=145, arg=0, argval='i', argrepr='i', offset=240, start_offset=240, starts_line=True, line_number=25, is_jump_target=False, positions=None),
+  Instruction(opname='RESUME', opcode=149, arg=0, argval=0, argrepr='', offset=0, start_offset=0, starts_line=True, line_number=1, is_jump_target=False, positions=None),
+  Instruction(opname='LOAD_GLOBAL', opcode=91, arg=1, argval='range', argrepr='range + NULL', offset=2, start_offset=2, starts_line=True, line_number=3, is_jump_target=False, positions=None),
+  Instruction(opname='LOAD_CONST', opcode=83, arg=1, argval=10, argrepr='10', offset=12, start_offset=12, starts_line=False, line_number=3, is_jump_target=False, positions=None),
+  Instruction(opname='CALL', opcode=53, arg=1, argval=1, argrepr='', offset=14, start_offset=14, starts_line=False, line_number=3, is_jump_target=False, positions=None),
+  Instruction(opname='GET_ITER', opcode=19, arg=None, argval=None, argrepr='', offset=22, start_offset=22, starts_line=False, line_number=3, is_jump_target=False, positions=None),
+  Instruction(opname='FOR_ITER', opcode=71, arg=30, argval=88, argrepr='to 88', offset=24, start_offset=24, starts_line=False, line_number=3, is_jump_target=True, positions=None),
+  Instruction(opname='STORE_FAST', opcode=110, arg=0, argval='i', argrepr='i', offset=28, start_offset=28, starts_line=False, line_number=3, is_jump_target=False, positions=None),
+  Instruction(opname='LOAD_GLOBAL', opcode=91, arg=3, argval='print', argrepr='print + NULL', offset=30, start_offset=30, starts_line=True, line_number=4, is_jump_target=False, positions=None),
+  Instruction(opname='LOAD_FAST', opcode=85, arg=0, argval='i', argrepr='i', offset=40, start_offset=40, starts_line=False, line_number=4, is_jump_target=False, positions=None),
+  Instruction(opname='CALL', opcode=53, arg=1, argval=1, argrepr='', offset=42, start_offset=42, starts_line=False, line_number=4, is_jump_target=False, positions=None),
+  Instruction(opname='POP_TOP', opcode=32, arg=None, argval=None, argrepr='', offset=50, start_offset=50, starts_line=False, line_number=4, is_jump_target=False, positions=None),
+  Instruction(opname='LOAD_FAST', opcode=85, arg=0, argval='i', argrepr='i', offset=52, start_offset=52, starts_line=True, line_number=5, is_jump_target=False, positions=None),
+  Instruction(opname='LOAD_CONST', opcode=83, arg=2, argval=4, argrepr='4', offset=54, start_offset=54, starts_line=False, line_number=5, is_jump_target=False, positions=None),
+  Instruction(opname='COMPARE_OP', opcode=57, arg=18, argval='<', argrepr='bool(<)', offset=56, start_offset=56, starts_line=False, line_number=5, is_jump_target=False, positions=None),
+  Instruction(opname='POP_JUMP_IF_FALSE', opcode=97, arg=2, argval=68, argrepr='to 68', offset=60, start_offset=60, starts_line=False, line_number=5, is_jump_target=False, positions=None),
+  Instruction(opname='JUMP_BACKWARD', opcode=76, arg=22, argval=24, argrepr='to 24', offset=64, start_offset=64, starts_line=True, line_number=6, is_jump_target=False, positions=None),
+  Instruction(opname='LOAD_FAST', opcode=85, arg=0, argval='i', argrepr='i', offset=68, start_offset=68, starts_line=True, line_number=7, is_jump_target=True, positions=None),
+  Instruction(opname='LOAD_CONST', opcode=83, arg=3, argval=6, argrepr='6', offset=70, start_offset=70, starts_line=False, line_number=7, is_jump_target=False, positions=None),
+  Instruction(opname='COMPARE_OP', opcode=57, arg=148, argval='>', argrepr='bool(>)', offset=72, start_offset=72, starts_line=False, line_number=7, is_jump_target=False, positions=None),
+  Instruction(opname='POP_JUMP_IF_TRUE', opcode=100, arg=2, argval=84, argrepr='to 84', offset=76, start_offset=76, starts_line=False, line_number=7, is_jump_target=False, positions=None),
+  Instruction(opname='JUMP_BACKWARD', opcode=76, arg=30, argval=24, argrepr='to 24', offset=80, start_offset=80, starts_line=False, line_number=7, is_jump_target=False, positions=None),
+  Instruction(opname='POP_TOP', opcode=32, arg=None, argval=None, argrepr='', offset=84, start_offset=84, starts_line=True, line_number=8, is_jump_target=True, positions=None),
+  Instruction(opname='JUMP_FORWARD', opcode=78, arg=12, argval=112, argrepr='to 112', offset=86, start_offset=86, starts_line=False, line_number=8, is_jump_target=False, positions=None),
+  Instruction(opname='END_FOR', opcode=11, arg=None, argval=None, argrepr='', offset=88, start_offset=88, starts_line=True, line_number=3, is_jump_target=True, positions=None),
+  Instruction(opname='LOAD_GLOBAL', opcode=91, arg=3, argval='print', argrepr='print + NULL', offset=90, start_offset=90, starts_line=True, line_number=10, is_jump_target=False, positions=None),
+  Instruction(opname='LOAD_CONST', opcode=83, arg=4, argval='I can haz else clause?', argrepr="'I can haz else clause?'", offset=100, start_offset=100, starts_line=False, line_number=10, is_jump_target=False, positions=None),
+  Instruction(opname='CALL', opcode=53, arg=1, argval=1, argrepr='', offset=102, start_offset=102, starts_line=False, line_number=10, is_jump_target=False, positions=None),
+  Instruction(opname='POP_TOP', opcode=32, arg=None, argval=None, argrepr='', offset=110, start_offset=110, starts_line=False, line_number=10, is_jump_target=False, positions=None),
+  Instruction(opname='LOAD_FAST_CHECK', opcode=87, arg=0, argval='i', argrepr='i', offset=112, start_offset=112, starts_line=True, line_number=11, is_jump_target=True, positions=None),
+  Instruction(opname='TO_BOOL', opcode=40, arg=None, argval=None, argrepr='', offset=114, start_offset=114, starts_line=False, line_number=11, is_jump_target=False, positions=None),
+  Instruction(opname='POP_JUMP_IF_FALSE', opcode=97, arg=40, argval=206, argrepr='to 206', offset=122, start_offset=122, starts_line=False, line_number=11, is_jump_target=False, positions=None),
+  Instruction(opname='LOAD_GLOBAL', opcode=91, arg=3, argval='print', argrepr='print + NULL', offset=126, start_offset=126, starts_line=True, line_number=12, is_jump_target=True, positions=None),
+  Instruction(opname='LOAD_FAST', opcode=85, arg=0, argval='i', argrepr='i', offset=136, start_offset=136, starts_line=False, line_number=12, is_jump_target=False, positions=None),
+  Instruction(opname='CALL', opcode=53, arg=1, argval=1, argrepr='', offset=138, start_offset=138, starts_line=False, line_number=12, is_jump_target=False, positions=None),
+  Instruction(opname='POP_TOP', opcode=32, arg=None, argval=None, argrepr='', offset=146, start_offset=146, starts_line=False, line_number=12, is_jump_target=False, positions=None),
+  Instruction(opname='LOAD_FAST', opcode=85, arg=0, argval='i', argrepr='i', offset=148, start_offset=148, starts_line=True, line_number=13, is_jump_target=False, positions=None),
+  Instruction(opname='LOAD_CONST', opcode=83, arg=5, argval=1, argrepr='1', offset=150, start_offset=150, starts_line=False, line_number=13, is_jump_target=False, positions=None),
+  Instruction(opname='BINARY_OP', opcode=45, arg=23, argval=23, argrepr='-=', offset=152, start_offset=152, starts_line=False, line_number=13, is_jump_target=False, positions=None),
+  Instruction(opname='STORE_FAST', opcode=110, arg=0, argval='i', argrepr='i', offset=156, start_offset=156, starts_line=False, line_number=13, is_jump_target=False, positions=None),
+  Instruction(opname='LOAD_FAST', opcode=85, arg=0, argval='i', argrepr='i', offset=158, start_offset=158, starts_line=True, line_number=14, is_jump_target=False, positions=None),
+  Instruction(opname='LOAD_CONST', opcode=83, arg=3, argval=6, argrepr='6', offset=160, start_offset=160, starts_line=False, line_number=14, is_jump_target=False, positions=None),
+  Instruction(opname='COMPARE_OP', opcode=57, arg=148, argval='>', argrepr='bool(>)', offset=162, start_offset=162, starts_line=False, line_number=14, is_jump_target=False, positions=None),
+  Instruction(opname='POP_JUMP_IF_FALSE', opcode=97, arg=2, argval=174, argrepr='to 174', offset=166, start_offset=166, starts_line=False, line_number=14, is_jump_target=False, positions=None),
+  Instruction(opname='JUMP_BACKWARD', opcode=76, arg=31, argval=112, argrepr='to 112', offset=170, start_offset=170, starts_line=True, line_number=15, is_jump_target=False, positions=None),
+  Instruction(opname='LOAD_FAST', opcode=85, arg=0, argval='i', argrepr='i', offset=174, start_offset=174, starts_line=True, line_number=16, is_jump_target=True, positions=None),
+  Instruction(opname='LOAD_CONST', opcode=83, arg=2, argval=4, argrepr='4', offset=176, start_offset=176, starts_line=False, line_number=16, is_jump_target=False, positions=None),
+  Instruction(opname='COMPARE_OP', opcode=57, arg=18, argval='<', argrepr='bool(<)', offset=178, start_offset=178, starts_line=False, line_number=16, is_jump_target=False, positions=None),
+  Instruction(opname='POP_JUMP_IF_FALSE', opcode=97, arg=1, argval=188, argrepr='to 188', offset=182, start_offset=182, starts_line=False, line_number=16, is_jump_target=False, positions=None),
+  Instruction(opname='JUMP_FORWARD', opcode=78, arg=20, argval=228, argrepr='to 228', offset=186, start_offset=186, starts_line=True, line_number=17, is_jump_target=False, positions=None),
+  Instruction(opname='LOAD_FAST', opcode=85, arg=0, argval='i', argrepr='i', offset=188, start_offset=188, starts_line=True, line_number=11, is_jump_target=True, positions=None),
+  Instruction(opname='TO_BOOL', opcode=40, arg=None, argval=None, argrepr='', offset=190, start_offset=190, starts_line=False, line_number=11, is_jump_target=False, positions=None),
+  Instruction(opname='POP_JUMP_IF_FALSE', opcode=97, arg=2, argval=206, argrepr='to 206', offset=198, start_offset=198, starts_line=False, line_number=11, is_jump_target=False, positions=None),
+  Instruction(opname='JUMP_BACKWARD', opcode=76, arg=40, argval=126, argrepr='to 126', offset=202, start_offset=202, starts_line=False, line_number=11, is_jump_target=False, positions=None),
+  Instruction(opname='LOAD_GLOBAL', opcode=91, arg=3, argval='print', argrepr='print + NULL', offset=206, start_offset=206, starts_line=True, line_number=19, is_jump_target=True, positions=None),
+  Instruction(opname='LOAD_CONST', opcode=83, arg=6, argval='Who let lolcatz into this test suite?', argrepr="'Who let lolcatz into this test suite?'", offset=216, start_offset=216, starts_line=False, line_number=19, is_jump_target=False, positions=None),
+  Instruction(opname='CALL', opcode=53, arg=1, argval=1, argrepr='', offset=218, start_offset=218, starts_line=False, line_number=19, is_jump_target=False, positions=None),
+  Instruction(opname='POP_TOP', opcode=32, arg=None, argval=None, argrepr='', offset=226, start_offset=226, starts_line=False, line_number=19, is_jump_target=False, positions=None),
+  Instruction(opname='NOP', opcode=30, arg=None, argval=None, argrepr='', offset=228, start_offset=228, starts_line=True, line_number=20, is_jump_target=True, positions=None),
+  Instruction(opname='LOAD_CONST', opcode=83, arg=5, argval=1, argrepr='1', offset=230, start_offset=230, starts_line=True, line_number=21, is_jump_target=False, positions=None),
+  Instruction(opname='LOAD_CONST', opcode=83, arg=7, argval=0, argrepr='0', offset=232, start_offset=232, starts_line=False, line_number=21, is_jump_target=False, positions=None),
+  Instruction(opname='BINARY_OP', opcode=45, arg=11, argval=11, argrepr='/', offset=234, start_offset=234, starts_line=False, line_number=21, is_jump_target=False, positions=None),
+  Instruction(opname='POP_TOP', opcode=32, arg=None, argval=None, argrepr='', offset=238, start_offset=238, starts_line=False, line_number=21, is_jump_target=False, positions=None),
+  Instruction(opname='LOAD_FAST', opcode=85, arg=0, argval='i', argrepr='i', offset=240, start_offset=240, starts_line=True, line_number=25, is_jump_target=False, positions=None),
   Instruction(opname='BEFORE_WITH', opcode=2, arg=None, argval=None, argrepr='', offset=242, start_offset=242, starts_line=False, line_number=25, is_jump_target=False, positions=None),
-  Instruction(opname='STORE_FAST', opcode=177, arg=1, argval='dodgy', argrepr='dodgy', offset=244, start_offset=244, starts_line=False, line_number=25, is_jump_target=False, positions=None),
-  Instruction(opname='LOAD_GLOBAL', opcode=151, arg=3, argval='print', argrepr='print + NULL', offset=246, start_offset=246, starts_line=True, line_number=26, is_jump_target=False, positions=None),
-  Instruction(opname='LOAD_CONST', opcode=143, arg=8, argval='Never reach this', argrepr="'Never reach this'", offset=256, start_offset=256, starts_line=False, line_number=26, is_jump_target=False, positions=None),
-  Instruction(opname='CALL', opcode=76, arg=1, argval=1, argrepr='', offset=258, start_offset=258, starts_line=False, line_number=26, is_jump_target=False, positions=None),
-  Instruction(opname='POP_TOP', opcode=44, arg=None, argval=None, argrepr='', offset=266, start_offset=266, starts_line=False, line_number=26, is_jump_target=False, positions=None),
-  Instruction(opname='LOAD_CONST', opcode=143, arg=0, argval=None, argrepr='None', offset=268, start_offset=268, starts_line=True, line_number=25, is_jump_target=False, positions=None),
-  Instruction(opname='LOAD_CONST', opcode=143, arg=0, argval=None, argrepr='None', offset=270, start_offset=270, starts_line=False, line_number=25, is_jump_target=False, positions=None),
-  Instruction(opname='LOAD_CONST', opcode=143, arg=0, argval=None, argrepr='None', offset=272, start_offset=272, starts_line=False, line_number=25, is_jump_target=False, positions=None),
-  Instruction(opname='CALL', opcode=76, arg=2, argval=2, argrepr='', offset=274, start_offset=274, starts_line=False, line_number=25, is_jump_target=False, positions=None),
-  Instruction(opname='POP_TOP', opcode=44, arg=None, argval=None, argrepr='', offset=282, start_offset=282, starts_line=False, line_number=25, is_jump_target=False, positions=None),
-  Instruction(opname='LOAD_GLOBAL', opcode=151, arg=3, argval='print', argrepr='print + NULL', offset=284, start_offset=284, starts_line=True, line_number=28, is_jump_target=True, positions=None),
-  Instruction(opname='LOAD_CONST', opcode=143, arg=10, argval="OK, now we're done", argrepr='"OK, now we\'re done"', offset=294, start_offset=294, starts_line=False, line_number=28, is_jump_target=False, positions=None),
-  Instruction(opname='CALL', opcode=76, arg=1, argval=1, argrepr='', offset=296, start_offset=296, starts_line=False, line_number=28, is_jump_target=False, positions=None),
-  Instruction(opname='POP_TOP', opcode=44, arg=None, argval=None, argrepr='', offset=304, start_offset=304, starts_line=False, line_number=28, is_jump_target=False, positions=None),
-  Instruction(opname='RETURN_CONST', opcode=168, arg=0, argval=None, argrepr='None', offset=306, start_offset=306, starts_line=False, line_number=28, is_jump_target=False, positions=None),
-  Instruction(opname='PUSH_EXC_INFO', opcode=45, arg=None, argval=None, argrepr='', offset=308, start_offset=308, starts_line=True, line_number=25, is_jump_target=False, positions=None),
-  Instruction(opname='WITH_EXCEPT_START', opcode=67, arg=None, argval=None, argrepr='', offset=310, start_offset=310, starts_line=False, line_number=25, is_jump_target=False, positions=None),
-  Instruction(opname='TO_BOOL', opcode=57, arg=None, argval=None, argrepr='', offset=312, start_offset=312, starts_line=False, line_number=25, is_jump_target=False, positions=None),
-  Instruction(opname='POP_JUMP_IF_TRUE', opcode=164, arg=1, argval=326, argrepr='to 326', offset=320, start_offset=320, starts_line=False, line_number=25, is_jump_target=False, positions=None),
-  Instruction(opname='RERAISE', opcode=167, arg=2, argval=2, argrepr='', offset=324, start_offset=324, starts_line=False, line_number=25, is_jump_target=False, positions=None),
-  Instruction(opname='POP_TOP', opcode=44, arg=None, argval=None, argrepr='', offset=326, start_offset=326, starts_line=False, line_number=25, is_jump_target=True, positions=None),
-  Instruction(opname='POP_EXCEPT', opcode=43, arg=None, argval=None, argrepr='', offset=328, start_offset=328, starts_line=False, line_number=25, is_jump_target=False, positions=None),
-  Instruction(opname='POP_TOP', opcode=44, arg=None, argval=None, argrepr='', offset=330, start_offset=330, starts_line=False, line_number=25, is_jump_target=False, positions=None),
-  Instruction(opname='POP_TOP', opcode=44, arg=None, argval=None, argrepr='', offset=332, start_offset=332, starts_line=False, line_number=25, is_jump_target=False, positions=None),
-  Instruction(opname='JUMP_BACKWARD', opcode=124, arg=27, argval=284, argrepr='to 284', offset=334, start_offset=334, starts_line=False, line_number=25, is_jump_target=False, positions=None),
-  Instruction(opname='COPY', opcode=104, arg=3, argval=3, argrepr='', offset=338, start_offset=338, starts_line=True, line_number=None, is_jump_target=False, positions=None),
-  Instruction(opname='POP_EXCEPT', opcode=43, arg=None, argval=None, argrepr='', offset=340, start_offset=340, starts_line=False, line_number=None, is_jump_target=False, positions=None),
-  Instruction(opname='RERAISE', opcode=167, arg=1, argval=1, argrepr='', offset=342, start_offset=342, starts_line=False, line_number=None, is_jump_target=False, positions=None),
-  Instruction(opname='PUSH_EXC_INFO', opcode=45, arg=None, argval=None, argrepr='', offset=344, start_offset=344, starts_line=False, line_number=None, is_jump_target=False, positions=None),
-  Instruction(opname='LOAD_GLOBAL', opcode=151, arg=4, argval='ZeroDivisionError', argrepr='ZeroDivisionError', offset=346, start_offset=346, starts_line=True, line_number=22, is_jump_target=False, positions=None),
-  Instruction(opname='CHECK_EXC_MATCH', opcode=20, arg=None, argval=None, argrepr='', offset=356, start_offset=356, starts_line=False, line_number=22, is_jump_target=False, positions=None),
-  Instruction(opname='POP_JUMP_IF_FALSE', opcode=161, arg=15, argval=392, argrepr='to 392', offset=358, start_offset=358, starts_line=False, line_number=22, is_jump_target=False, positions=None),
-  Instruction(opname='POP_TOP', opcode=44, arg=None, argval=None, argrepr='', offset=362, start_offset=362, starts_line=False, line_number=22, is_jump_target=False, positions=None),
-  Instruction(opname='LOAD_GLOBAL', opcode=151, arg=3, argval='print', argrepr='print + NULL', offset=364, start_offset=364, starts_line=True, line_number=23, is_jump_target=False, positions=None),
-  Instruction(opname='LOAD_CONST', opcode=143, arg=9, argval='Here we go, here we go, here we go...', argrepr="'Here we go, here we go, here we go...'", offset=374, start_offset=374, starts_line=False, line_number=23, is_jump_target=False, positions=None),
-  Instruction(opname='CALL', opcode=76, arg=1, argval=1, argrepr='', offset=376, start_offset=376, starts_line=False, line_number=23, is_jump_target=False, positions=None),
-  Instruction(opname='POP_TOP', opcode=44, arg=None, argval=None, argrepr='', offset=384, start_offset=384, starts_line=False, line_number=23, is_jump_target=False, positions=None),
-  Instruction(opname='POP_EXCEPT', opcode=43, arg=None, argval=None, argrepr='', offset=386, start_offset=386, starts_line=False, line_number=23, is_jump_target=False, positions=None),
-  Instruction(opname='JUMP_BACKWARD', opcode=124, arg=54, argval=284, argrepr='to 284', offset=388, start_offset=388, starts_line=False, line_number=23, is_jump_target=False, positions=None),
-  Instruction(opname='RERAISE', opcode=167, arg=0, argval=0, argrepr='', offset=392, start_offset=392, starts_line=True, line_number=22, is_jump_target=True, positions=None),
-  Instruction(opname='COPY', opcode=104, arg=3, argval=3, argrepr='', offset=394, start_offset=394, starts_line=True, line_number=None, is_jump_target=False, positions=None),
-  Instruction(opname='POP_EXCEPT', opcode=43, arg=None, argval=None, argrepr='', offset=396, start_offset=396, starts_line=False, line_number=None, is_jump_target=False, positions=None),
-  Instruction(opname='RERAISE', opcode=167, arg=1, argval=1, argrepr='', offset=398, start_offset=398, starts_line=False, line_number=None, is_jump_target=False, positions=None),
-  Instruction(opname='PUSH_EXC_INFO', opcode=45, arg=None, argval=None, argrepr='', offset=400, start_offset=400, starts_line=False, line_number=None, is_jump_target=False, positions=None),
-  Instruction(opname='LOAD_GLOBAL', opcode=151, arg=3, argval='print', argrepr='print + NULL', offset=402, start_offset=402, starts_line=True, line_number=28, is_jump_target=False, positions=None),
-  Instruction(opname='LOAD_CONST', opcode=143, arg=10, argval="OK, now we're done", argrepr='"OK, now we\'re done"', offset=412, start_offset=412, starts_line=False, line_number=28, is_jump_target=False, positions=None),
-  Instruction(opname='CALL', opcode=76, arg=1, argval=1, argrepr='', offset=414, start_offset=414, starts_line=False, line_number=28, is_jump_target=False, positions=None),
-  Instruction(opname='POP_TOP', opcode=44, arg=None, argval=None, argrepr='', offset=422, start_offset=422, starts_line=False, line_number=28, is_jump_target=False, positions=None),
-  Instruction(opname='RERAISE', opcode=167, arg=0, argval=0, argrepr='', offset=424, start_offset=424, starts_line=False, line_number=28, is_jump_target=False, positions=None),
-  Instruction(opname='COPY', opcode=104, arg=3, argval=3, argrepr='', offset=426, start_offset=426, starts_line=False, line_number=28, is_jump_target=False, positions=None),
-  Instruction(opname='POP_EXCEPT', opcode=43, arg=None, argval=None, argrepr='', offset=428, start_offset=428, starts_line=False, line_number=28, is_jump_target=False, positions=None),
-  Instruction(opname='RERAISE', opcode=167, arg=1, argval=1, argrepr='', offset=430, start_offset=430, starts_line=False, line_number=28, is_jump_target=False, positions=None),
+  Instruction(opname='STORE_FAST', opcode=110, arg=1, argval='dodgy', argrepr='dodgy', offset=244, start_offset=244, starts_line=False, line_number=25, is_jump_target=False, positions=None),
+  Instruction(opname='LOAD_GLOBAL', opcode=91, arg=3, argval='print', argrepr='print + NULL', offset=246, start_offset=246, starts_line=True, line_number=26, is_jump_target=False, positions=None),
+  Instruction(opname='LOAD_CONST', opcode=83, arg=8, argval='Never reach this', argrepr="'Never reach this'", offset=256, start_offset=256, starts_line=False, line_number=26, is_jump_target=False, positions=None),
+  Instruction(opname='CALL', opcode=53, arg=1, argval=1, argrepr='', offset=258, start_offset=258, starts_line=False, line_number=26, is_jump_target=False, positions=None),
+  Instruction(opname='POP_TOP', opcode=32, arg=None, argval=None, argrepr='', offset=266, start_offset=266, starts_line=False, line_number=26, is_jump_target=False, positions=None),
+  Instruction(opname='LOAD_CONST', opcode=83, arg=0, argval=None, argrepr='None', offset=268, start_offset=268, starts_line=True, line_number=25, is_jump_target=False, positions=None),
+  Instruction(opname='LOAD_CONST', opcode=83, arg=0, argval=None, argrepr='None', offset=270, start_offset=270, starts_line=False, line_number=25, is_jump_target=False, positions=None),
+  Instruction(opname='LOAD_CONST', opcode=83, arg=0, argval=None, argrepr='None', offset=272, start_offset=272, starts_line=False, line_number=25, is_jump_target=False, positions=None),
+  Instruction(opname='CALL', opcode=53, arg=2, argval=2, argrepr='', offset=274, start_offset=274, starts_line=False, line_number=25, is_jump_target=False, positions=None),
+  Instruction(opname='POP_TOP', opcode=32, arg=None, argval=None, argrepr='', offset=282, start_offset=282, starts_line=False, line_number=25, is_jump_target=False, positions=None),
+  Instruction(opname='LOAD_GLOBAL', opcode=91, arg=3, argval='print', argrepr='print + NULL', offset=284, start_offset=284, starts_line=True, line_number=28, is_jump_target=True, positions=None),
+  Instruction(opname='LOAD_CONST', opcode=83, arg=10, argval="OK, now we're done", argrepr='"OK, now we\'re done"', offset=294, start_offset=294, starts_line=False, line_number=28, is_jump_target=False, positions=None),
+  Instruction(opname='CALL', opcode=53, arg=1, argval=1, argrepr='', offset=296, start_offset=296, starts_line=False, line_number=28, is_jump_target=False, positions=None),
+  Instruction(opname='POP_TOP', opcode=32, arg=None, argval=None, argrepr='', offset=304, start_offset=304, starts_line=False, line_number=28, is_jump_target=False, positions=None),
+  Instruction(opname='RETURN_CONST', opcode=103, arg=0, argval=None, argrepr='None', offset=306, start_offset=306, starts_line=False, line_number=28, is_jump_target=False, positions=None),
+  Instruction(opname='PUSH_EXC_INFO', opcode=33, arg=None, argval=None, argrepr='', offset=308, start_offset=308, starts_line=True, line_number=25, is_jump_target=False, positions=None),
+  Instruction(opname='WITH_EXCEPT_START', opcode=44, arg=None, argval=None, argrepr='', offset=310, start_offset=310, starts_line=False, line_number=25, is_jump_target=False, positions=None),
+  Instruction(opname='TO_BOOL', opcode=40, arg=None, argval=None, argrepr='', offset=312, start_offset=312, starts_line=False, line_number=25, is_jump_target=False, positions=None),
+  Instruction(opname='POP_JUMP_IF_TRUE', opcode=100, arg=1, argval=326, argrepr='to 326', offset=320, start_offset=320, starts_line=False, line_number=25, is_jump_target=False, positions=None),
+  Instruction(opname='RERAISE', opcode=102, arg=2, argval=2, argrepr='', offset=324, start_offset=324, starts_line=False, line_number=25, is_jump_target=False, positions=None),
+  Instruction(opname='POP_TOP', opcode=32, arg=None, argval=None, argrepr='', offset=326, start_offset=326, starts_line=False, line_number=25, is_jump_target=True, positions=None),
+  Instruction(opname='POP_EXCEPT', opcode=31, arg=None, argval=None, argrepr='', offset=328, start_offset=328, starts_line=False, line_number=25, is_jump_target=False, positions=None),
+  Instruction(opname='POP_TOP', opcode=32, arg=None, argval=None, argrepr='', offset=330, start_offset=330, starts_line=False, line_number=25, is_jump_target=False, positions=None),
+  Instruction(opname='POP_TOP', opcode=32, arg=None, argval=None, argrepr='', offset=332, start_offset=332, starts_line=False, line_number=25, is_jump_target=False, positions=None),
+  Instruction(opname='JUMP_BACKWARD', opcode=76, arg=27, argval=284, argrepr='to 284', offset=334, start_offset=334, starts_line=False, line_number=25, is_jump_target=False, positions=None),
+  Instruction(opname='COPY', opcode=60, arg=3, argval=3, argrepr='', offset=338, start_offset=338, starts_line=True, line_number=None, is_jump_target=False, positions=None),
+  Instruction(opname='POP_EXCEPT', opcode=31, arg=None, argval=None, argrepr='', offset=340, start_offset=340, starts_line=False, line_number=None, is_jump_target=False, positions=None),
+  Instruction(opname='RERAISE', opcode=102, arg=1, argval=1, argrepr='', offset=342, start_offset=342, starts_line=False, line_number=None, is_jump_target=False, positions=None),
+  Instruction(opname='PUSH_EXC_INFO', opcode=33, arg=None, argval=None, argrepr='', offset=344, start_offset=344, starts_line=False, line_number=None, is_jump_target=False, positions=None),
+  Instruction(opname='LOAD_GLOBAL', opcode=91, arg=4, argval='ZeroDivisionError', argrepr='ZeroDivisionError', offset=346, start_offset=346, starts_line=True, line_number=22, is_jump_target=False, positions=None),
+  Instruction(opname='CHECK_EXC_MATCH', opcode=7, arg=None, argval=None, argrepr='', offset=356, start_offset=356, starts_line=False, line_number=22, is_jump_target=False, positions=None),
+  Instruction(opname='POP_JUMP_IF_FALSE', opcode=97, arg=15, argval=392, argrepr='to 392', offset=358, start_offset=358, starts_line=False, line_number=22, is_jump_target=False, positions=None),
+  Instruction(opname='POP_TOP', opcode=32, arg=None, argval=None, argrepr='', offset=362, start_offset=362, starts_line=False, line_number=22, is_jump_target=False, positions=None),
+  Instruction(opname='LOAD_GLOBAL', opcode=91, arg=3, argval='print', argrepr='print + NULL', offset=364, start_offset=364, starts_line=True, line_number=23, is_jump_target=False, positions=None),
+  Instruction(opname='LOAD_CONST', opcode=83, arg=9, argval='Here we go, here we go, here we go...', argrepr="'Here we go, here we go, here we go...'", offset=374, start_offset=374, starts_line=False, line_number=23, is_jump_target=False, positions=None),
+  Instruction(opname='CALL', opcode=53, arg=1, argval=1, argrepr='', offset=376, start_offset=376, starts_line=False, line_number=23, is_jump_target=False, positions=None),
+  Instruction(opname='POP_TOP', opcode=32, arg=None, argval=None, argrepr='', offset=384, start_offset=384, starts_line=False, line_number=23, is_jump_target=False, positions=None),
+  Instruction(opname='POP_EXCEPT', opcode=31, arg=None, argval=None, argrepr='', offset=386, start_offset=386, starts_line=False, line_number=23, is_jump_target=False, positions=None),
+  Instruction(opname='JUMP_BACKWARD', opcode=76, arg=54, argval=284, argrepr='to 284', offset=388, start_offset=388, starts_line=False, line_number=23, is_jump_target=False, positions=None),
+  Instruction(opname='RERAISE', opcode=102, arg=0, argval=0, argrepr='', offset=392, start_offset=392, starts_line=True, line_number=22, is_jump_target=True, positions=None),
+  Instruction(opname='COPY', opcode=60, arg=3, argval=3, argrepr='', offset=394, start_offset=394, starts_line=True, line_number=None, is_jump_target=False, positions=None),
+  Instruction(opname='POP_EXCEPT', opcode=31, arg=None, argval=None, argrepr='', offset=396, start_offset=396, starts_line=False, line_number=None, is_jump_target=False, positions=None),
+  Instruction(opname='RERAISE', opcode=102, arg=1, argval=1, argrepr='', offset=398, start_offset=398, starts_line=False, line_number=None, is_jump_target=False, positions=None),
+  Instruction(opname='PUSH_EXC_INFO', opcode=33, arg=None, argval=None, argrepr='', offset=400, start_offset=400, starts_line=False, line_number=None, is_jump_target=False, positions=None),
+  Instruction(opname='LOAD_GLOBAL', opcode=91, arg=3, argval='print', argrepr='print + NULL', offset=402, start_offset=402, starts_line=True, line_number=28, is_jump_target=False, positions=None),
+  Instruction(opname='LOAD_CONST', opcode=83, arg=10, argval="OK, now we're done", argrepr='"OK, now we\'re done"', offset=412, start_offset=412, starts_line=False, line_number=28, is_jump_target=False, positions=None),
+  Instruction(opname='CALL', opcode=53, arg=1, argval=1, argrepr='', offset=414, start_offset=414, starts_line=False, line_number=28, is_jump_target=False, positions=None),
+  Instruction(opname='POP_TOP', opcode=32, arg=None, argval=None, argrepr='', offset=422, start_offset=422, starts_line=False, line_number=28, is_jump_target=False, positions=None),
+  Instruction(opname='RERAISE', opcode=102, arg=0, argval=0, argrepr='', offset=424, start_offset=424, starts_line=False, line_number=28, is_jump_target=False, positions=None),
+  Instruction(opname='COPY', opcode=60, arg=3, argval=3, argrepr='', offset=426, start_offset=426, starts_line=False, line_number=28, is_jump_target=False, positions=None),
+  Instruction(opname='POP_EXCEPT', opcode=31, arg=None, argval=None, argrepr='', offset=428, start_offset=428, starts_line=False, line_number=28, is_jump_target=False, positions=None),
+  Instruction(opname='RERAISE', opcode=102, arg=1, argval=1, argrepr='', offset=430, start_offset=430, starts_line=False, line_number=28, is_jump_target=False, positions=None),
 ]
 
 # One last piece of inspect fodder to check the default line number handling
 def simple(): pass
 expected_opinfo_simple = [
-  Instruction(opname='RESUME', opcode=166, arg=0, argval=0, argrepr='', offset=0, start_offset=0, starts_line=True, line_number=simple.__code__.co_firstlineno, is_jump_target=False, positions=None),
-  Instruction(opname='RETURN_CONST', opcode=168, arg=0, argval=None, argrepr='None', offset=2, start_offset=2, starts_line=False, line_number=simple.__code__.co_firstlineno, is_jump_target=False),
+  Instruction(opname='RESUME', opcode=149, arg=0, argval=0, argrepr='', offset=0, start_offset=0, starts_line=True, line_number=simple.__code__.co_firstlineno, is_jump_target=False, positions=None),
+  Instruction(opname='RETURN_CONST', opcode=103, arg=0, argval=None, argrepr='None', offset=2, start_offset=2, starts_line=False, line_number=simple.__code__.co_firstlineno, is_jump_target=False),
 ]
 
 
diff --git a/Misc/NEWS.d/next/Core and Builtins/2023-09-11-15-11-03.gh-issue-109256.6mfhvF.rst b/Misc/NEWS.d/next/Core and Builtins/2023-09-11-15-11-03.gh-issue-109256.6mfhvF.rst
new file mode 100644 (file)
index 0000000..6c33fae
--- /dev/null
@@ -0,0 +1,2 @@
+Opcode IDs for specialized opcodes are allocated in their own range to
+improve stability of the IDs for the 'real' opcodes.
index 7590e87ab1eadd74e2a0abaf04f270683a84c166..c2082728aafaad2f7d32c8ed387cda81a13bad9a 100644 (file)
@@ -1,17 +1,17 @@
 // Auto-generated by Programs/freeze_test_frozenmain.py
 unsigned char M_test_frozenmain[] = {
     227,0,0,0,0,0,0,0,0,0,0,0,0,8,0,0,
-    0,0,0,0,0,243,164,0,0,0,166,0,143,0,143,1,
-    122,0,181,0,143,0,143,1,122,1,181,1,154,2,46,0,
-    143,2,76,1,0,0,0,0,0,0,44,0,154,2,46,0,
-    143,3,154,0,130,6,0,0,0,0,0,0,0,0,0,0,
-    0,0,0,0,0,0,0,0,76,2,0,0,0,0,0,0,
-    44,0,154,1,130,8,0,0,0,0,0,0,0,0,0,0,
-    0,0,0,0,0,0,0,0,46,0,76,0,0,0,0,0,
-    0,0,143,4,12,0,0,0,181,5,143,5,31,0,115,20,
-    0,0,181,6,154,2,46,0,143,6,154,6,27,0,143,7,
-    154,5,154,6,12,0,0,0,27,0,74,4,76,1,0,0,
-    0,0,0,0,44,0,124,22,0,0,24,0,168,1,41,8,
+    0,0,0,0,0,243,164,0,0,0,149,0,83,0,83,1,
+    74,0,114,0,83,0,83,1,74,1,114,1,92,2,34,0,
+    83,2,53,1,0,0,0,0,0,0,32,0,92,2,34,0,
+    83,3,92,0,82,6,0,0,0,0,0,0,0,0,0,0,
+    0,0,0,0,0,0,0,0,53,2,0,0,0,0,0,0,
+    32,0,92,1,82,8,0,0,0,0,0,0,0,0,0,0,
+    0,0,0,0,0,0,0,0,34,0,53,0,0,0,0,0,
+    0,0,83,4,5,0,0,0,114,5,83,5,19,0,71,20,
+    0,0,114,6,92,2,34,0,83,6,92,6,14,0,83,7,
+    92,5,92,6,5,0,0,0,14,0,51,4,53,1,0,0,
+    0,0,0,0,32,0,76,22,0,0,11,0,103,1,41,8,
     233,0,0,0,0,78,122,18,70,114,111,122,101,110,32,72,
     101,108,108,111,32,87,111,114,108,100,122,8,115,121,115,46,
     97,114,103,118,218,6,99,111,110,102,105,103,41,5,218,12,
index 413bb884dcf7527f62b2e1216b79b7b5d55abf72..f00eb31b70e26fdb340018eff475c0f27fcbe81b 100644 (file)
@@ -2,22 +2,9 @@ static void *opcode_targets[256] = {
     &&TARGET_CACHE,
     &&TARGET_BEFORE_ASYNC_WITH,
     &&TARGET_BEFORE_WITH,
-    &&TARGET_BINARY_OP_ADD_FLOAT,
-    &&TARGET_BINARY_OP_ADD_INT,
-    &&TARGET_BINARY_OP_ADD_UNICODE,
     &&TARGET_BINARY_OP_INPLACE_ADD_UNICODE,
-    &&TARGET_BINARY_OP_MULTIPLY_FLOAT,
-    &&TARGET_BINARY_OP_MULTIPLY_INT,
-    &&TARGET_BINARY_OP_SUBTRACT_FLOAT,
-    &&TARGET_BINARY_OP_SUBTRACT_INT,
     &&TARGET_BINARY_SLICE,
     &&TARGET_BINARY_SUBSCR,
-    &&TARGET_BINARY_SUBSCR_DICT,
-    &&TARGET_BINARY_SUBSCR_GETITEM,
-    &&TARGET_BINARY_SUBSCR_LIST_INT,
-    &&TARGET_BINARY_SUBSCR_STR_INT,
-    &&TARGET_RESERVED,
-    &&TARGET_BINARY_SUBSCR_TUPLE_INT,
     &&TARGET_CHECK_EG_MATCH,
     &&TARGET_CHECK_EXC_MATCH,
     &&TARGET_CLEANUP_THROW,
@@ -29,6 +16,7 @@ static void *opcode_targets[256] = {
     &&TARGET_FORMAT_SIMPLE,
     &&TARGET_FORMAT_WITH_SPEC,
     &&TARGET_GET_AITER,
+    &&TARGET_RESERVED,
     &&TARGET_GET_ANEXT,
     &&TARGET_GET_ITER,
     &&TARGET_GET_LEN,
@@ -46,23 +34,12 @@ static void *opcode_targets[256] = {
     &&TARGET_POP_TOP,
     &&TARGET_PUSH_EXC_INFO,
     &&TARGET_PUSH_NULL,
-    &&TARGET_RESUME_CHECK,
     &&TARGET_RETURN_GENERATOR,
     &&TARGET_RETURN_VALUE,
     &&TARGET_SETUP_ANNOTATIONS,
-    &&TARGET_STORE_ATTR_INSTANCE_VALUE,
-    &&TARGET_STORE_ATTR_SLOT,
     &&TARGET_STORE_SLICE,
     &&TARGET_STORE_SUBSCR,
-    &&TARGET_STORE_SUBSCR_DICT,
-    &&TARGET_STORE_SUBSCR_LIST_INT,
     &&TARGET_TO_BOOL,
-    &&TARGET_TO_BOOL_ALWAYS_TRUE,
-    &&TARGET_TO_BOOL_BOOL,
-    &&TARGET_TO_BOOL_INT,
-    &&TARGET_TO_BOOL_LIST,
-    &&TARGET_TO_BOOL_NONE,
-    &&TARGET_TO_BOOL_STR,
     &&TARGET_UNARY_INVERT,
     &&TARGET_UNARY_NEGATIVE,
     &&TARGET_UNARY_NOT,
@@ -76,31 +53,10 @@ static void *opcode_targets[256] = {
     &&TARGET_BUILD_STRING,
     &&TARGET_BUILD_TUPLE,
     &&TARGET_CALL,
-    &&TARGET_CALL_BOUND_METHOD_EXACT_ARGS,
-    &&TARGET_CALL_BUILTIN_CLASS,
-    &&TARGET_CALL_BUILTIN_FAST_WITH_KEYWORDS,
     &&TARGET_CALL_FUNCTION_EX,
     &&TARGET_CALL_INTRINSIC_1,
     &&TARGET_CALL_INTRINSIC_2,
-    &&TARGET_CALL_METHOD_DESCRIPTOR_FAST_WITH_KEYWORDS,
-    &&TARGET_CALL_NO_KW_ALLOC_AND_ENTER_INIT,
-    &&TARGET_CALL_NO_KW_BUILTIN_FAST,
-    &&TARGET_CALL_NO_KW_BUILTIN_O,
-    &&TARGET_CALL_NO_KW_ISINSTANCE,
-    &&TARGET_CALL_NO_KW_LEN,
-    &&TARGET_CALL_NO_KW_LIST_APPEND,
-    &&TARGET_CALL_NO_KW_METHOD_DESCRIPTOR_FAST,
-    &&TARGET_CALL_NO_KW_METHOD_DESCRIPTOR_NOARGS,
-    &&TARGET_CALL_NO_KW_METHOD_DESCRIPTOR_O,
-    &&TARGET_CALL_NO_KW_STR_1,
-    &&TARGET_CALL_NO_KW_TUPLE_1,
-    &&TARGET_CALL_NO_KW_TYPE_1,
-    &&TARGET_CALL_PY_EXACT_ARGS,
-    &&TARGET_CALL_PY_WITH_DEFAULTS,
     &&TARGET_COMPARE_OP,
-    &&TARGET_COMPARE_OP_FLOAT,
-    &&TARGET_COMPARE_OP_INT,
-    &&TARGET_COMPARE_OP_STR,
     &&TARGET_CONTAINS_OP,
     &&TARGET_CONVERT_VALUE,
     &&TARGET_COPY,
@@ -115,10 +71,6 @@ static void *opcode_targets[256] = {
     &&TARGET_ENTER_EXECUTOR,
     &&TARGET_EXTENDED_ARG,
     &&TARGET_FOR_ITER,
-    &&TARGET_FOR_ITER_GEN,
-    &&TARGET_FOR_ITER_LIST,
-    &&TARGET_FOR_ITER_RANGE,
-    &&TARGET_FOR_ITER_TUPLE,
     &&TARGET_GET_AWAITABLE,
     &&TARGET_IMPORT_FROM,
     &&TARGET_IMPORT_NAME,
@@ -130,18 +82,6 @@ static void *opcode_targets[256] = {
     &&TARGET_LIST_APPEND,
     &&TARGET_LIST_EXTEND,
     &&TARGET_LOAD_ATTR,
-    &&TARGET_LOAD_ATTR_CLASS,
-    &&TARGET_LOAD_ATTR_GETATTRIBUTE_OVERRIDDEN,
-    &&TARGET_LOAD_ATTR_INSTANCE_VALUE,
-    &&TARGET_LOAD_ATTR_METHOD_LAZY_DICT,
-    &&TARGET_LOAD_ATTR_METHOD_NO_DICT,
-    &&TARGET_LOAD_ATTR_METHOD_WITH_VALUES,
-    &&TARGET_LOAD_ATTR_MODULE,
-    &&TARGET_LOAD_ATTR_NONDESCRIPTOR_NO_DICT,
-    &&TARGET_LOAD_ATTR_NONDESCRIPTOR_WITH_VALUES,
-    &&TARGET_LOAD_ATTR_PROPERTY,
-    &&TARGET_LOAD_ATTR_SLOT,
-    &&TARGET_LOAD_ATTR_WITH_HINT,
     &&TARGET_LOAD_CONST,
     &&TARGET_LOAD_DEREF,
     &&TARGET_LOAD_FAST,
@@ -151,12 +91,8 @@ static void *opcode_targets[256] = {
     &&TARGET_LOAD_FROM_DICT_OR_DEREF,
     &&TARGET_LOAD_FROM_DICT_OR_GLOBALS,
     &&TARGET_LOAD_GLOBAL,
-    &&TARGET_LOAD_GLOBAL_BUILTIN,
-    &&TARGET_LOAD_GLOBAL_MODULE,
     &&TARGET_LOAD_NAME,
     &&TARGET_LOAD_SUPER_ATTR,
-    &&TARGET_LOAD_SUPER_ATTR_ATTR,
-    &&TARGET_LOAD_SUPER_ATTR_METHOD,
     &&TARGET_MAKE_CELL,
     &&TARGET_MAP_ADD,
     &&TARGET_MATCH_CLASS,
@@ -165,16 +101,13 @@ static void *opcode_targets[256] = {
     &&TARGET_POP_JUMP_IF_NOT_NONE,
     &&TARGET_POP_JUMP_IF_TRUE,
     &&TARGET_RAISE_VARARGS,
-    &&TARGET_RESUME,
     &&TARGET_RERAISE,
     &&TARGET_RETURN_CONST,
     &&TARGET_SEND,
-    &&TARGET_SEND_GEN,
     &&TARGET_SET_ADD,
     &&TARGET_SET_FUNCTION_ATTRIBUTE,
     &&TARGET_SET_UPDATE,
     &&TARGET_STORE_ATTR,
-    &&TARGET_STORE_ATTR_WITH_HINT,
     &&TARGET_STORE_DEREF,
     &&TARGET_STORE_FAST,
     &&TARGET_STORE_FAST_LOAD_FAST,
@@ -184,9 +117,6 @@ static void *opcode_targets[256] = {
     &&TARGET_SWAP,
     &&TARGET_UNPACK_EX,
     &&TARGET_UNPACK_SEQUENCE,
-    &&TARGET_UNPACK_SEQUENCE_LIST,
-    &&TARGET_UNPACK_SEQUENCE_TUPLE,
-    &&TARGET_UNPACK_SEQUENCE_TWO_TUPLE,
     &&TARGET_YIELD_VALUE,
     &&_unknown_opcode,
     &&_unknown_opcode,
@@ -218,6 +148,76 @@ static void *opcode_targets[256] = {
     &&_unknown_opcode,
     &&_unknown_opcode,
     &&_unknown_opcode,
+    &&TARGET_RESUME,
+    &&TARGET_BINARY_OP_ADD_FLOAT,
+    &&TARGET_BINARY_OP_ADD_INT,
+    &&TARGET_BINARY_OP_ADD_UNICODE,
+    &&TARGET_BINARY_OP_MULTIPLY_FLOAT,
+    &&TARGET_BINARY_OP_MULTIPLY_INT,
+    &&TARGET_BINARY_OP_SUBTRACT_FLOAT,
+    &&TARGET_BINARY_OP_SUBTRACT_INT,
+    &&TARGET_BINARY_SUBSCR_DICT,
+    &&TARGET_BINARY_SUBSCR_GETITEM,
+    &&TARGET_BINARY_SUBSCR_LIST_INT,
+    &&TARGET_BINARY_SUBSCR_STR_INT,
+    &&TARGET_BINARY_SUBSCR_TUPLE_INT,
+    &&TARGET_CALL_BOUND_METHOD_EXACT_ARGS,
+    &&TARGET_CALL_BUILTIN_CLASS,
+    &&TARGET_CALL_BUILTIN_FAST_WITH_KEYWORDS,
+    &&TARGET_CALL_METHOD_DESCRIPTOR_FAST_WITH_KEYWORDS,
+    &&TARGET_CALL_NO_KW_ALLOC_AND_ENTER_INIT,
+    &&TARGET_CALL_NO_KW_BUILTIN_FAST,
+    &&TARGET_CALL_NO_KW_BUILTIN_O,
+    &&TARGET_CALL_NO_KW_ISINSTANCE,
+    &&TARGET_CALL_NO_KW_LEN,
+    &&TARGET_CALL_NO_KW_LIST_APPEND,
+    &&TARGET_CALL_NO_KW_METHOD_DESCRIPTOR_FAST,
+    &&TARGET_CALL_NO_KW_METHOD_DESCRIPTOR_NOARGS,
+    &&TARGET_CALL_NO_KW_METHOD_DESCRIPTOR_O,
+    &&TARGET_CALL_NO_KW_STR_1,
+    &&TARGET_CALL_NO_KW_TUPLE_1,
+    &&TARGET_CALL_NO_KW_TYPE_1,
+    &&TARGET_CALL_PY_EXACT_ARGS,
+    &&TARGET_CALL_PY_WITH_DEFAULTS,
+    &&TARGET_COMPARE_OP_FLOAT,
+    &&TARGET_COMPARE_OP_INT,
+    &&TARGET_COMPARE_OP_STR,
+    &&TARGET_FOR_ITER_GEN,
+    &&TARGET_FOR_ITER_LIST,
+    &&TARGET_FOR_ITER_RANGE,
+    &&TARGET_FOR_ITER_TUPLE,
+    &&TARGET_LOAD_ATTR_CLASS,
+    &&TARGET_LOAD_ATTR_GETATTRIBUTE_OVERRIDDEN,
+    &&TARGET_LOAD_ATTR_INSTANCE_VALUE,
+    &&TARGET_LOAD_ATTR_METHOD_LAZY_DICT,
+    &&TARGET_LOAD_ATTR_METHOD_NO_DICT,
+    &&TARGET_LOAD_ATTR_METHOD_WITH_VALUES,
+    &&TARGET_LOAD_ATTR_MODULE,
+    &&TARGET_LOAD_ATTR_NONDESCRIPTOR_NO_DICT,
+    &&TARGET_LOAD_ATTR_NONDESCRIPTOR_WITH_VALUES,
+    &&TARGET_LOAD_ATTR_PROPERTY,
+    &&TARGET_LOAD_ATTR_SLOT,
+    &&TARGET_LOAD_ATTR_WITH_HINT,
+    &&TARGET_LOAD_GLOBAL_BUILTIN,
+    &&TARGET_LOAD_GLOBAL_MODULE,
+    &&TARGET_LOAD_SUPER_ATTR_ATTR,
+    &&TARGET_LOAD_SUPER_ATTR_METHOD,
+    &&TARGET_RESUME_CHECK,
+    &&TARGET_SEND_GEN,
+    &&TARGET_STORE_ATTR_INSTANCE_VALUE,
+    &&TARGET_STORE_ATTR_SLOT,
+    &&TARGET_STORE_ATTR_WITH_HINT,
+    &&TARGET_STORE_SUBSCR_DICT,
+    &&TARGET_STORE_SUBSCR_LIST_INT,
+    &&TARGET_TO_BOOL_ALWAYS_TRUE,
+    &&TARGET_TO_BOOL_BOOL,
+    &&TARGET_TO_BOOL_INT,
+    &&TARGET_TO_BOOL_LIST,
+    &&TARGET_TO_BOOL_NONE,
+    &&TARGET_TO_BOOL_STR,
+    &&TARGET_UNPACK_SEQUENCE_LIST,
+    &&TARGET_UNPACK_SEQUENCE_TUPLE,
+    &&TARGET_UNPACK_SEQUENCE_TWO_TUPLE,
     &&_unknown_opcode,
     &&_unknown_opcode,
     &&_unknown_opcode,
index 996d5f65a923b23a95667c0d5bf64187d15efb8e..c3231a5a40c32636a4bd931458a14a6c1a61994e 100644 (file)
@@ -22,7 +22,7 @@ ROOT = os.path.dirname(os.path.dirname(os.path.dirname(__file__)))
 verbose = False
 
 # This must be kept in sync with Tools/cases_generator/generate_cases.py
-RESUME = 166
+RESUME = 149
 
 def isprintable(b: bytes) -> bool:
     return all(0x20 <= c < 0x7f for c in b)
index 3ed71309a9d85c8d734d836c0ab9ee1cdce3b348..3a738da6c05a51bf32471717847abd70f0492855 100644 (file)
@@ -255,12 +255,18 @@ class Generator(Analyzer):
         ops: list[tuple[bool, str]] = []  # (has_arg, name) for each opcode
         instrumented_ops: list[str] = []
 
+        specialized_ops = set()
+        for name, family in self.families.items():
+            specialized_ops.update(family.members)
+
         for instr in itertools.chain(
             [instr for instr in self.instrs.values() if instr.kind != "op"],
             self.macro_instrs.values(),
         ):
             assert isinstance(instr, (Instruction, MacroInstruction, PseudoInstruction))
             name = instr.name
+            if name in specialized_ops:
+                continue
             if name.startswith("INSTRUMENTED_"):
                 instrumented_ops.append(name)
             else:
@@ -282,7 +288,7 @@ class Generator(Analyzer):
 
         def map_op(op: int, name: str) -> None:
             assert op < len(opname)
-            assert opname[op] is None
+            assert opname[op] is None, (op, name)
             assert name not in opmap
             opname[op] = name
             opmap[name] = op
@@ -294,25 +300,31 @@ class Generator(Analyzer):
         # This helps catch cases where we attempt to execute a cache.
         map_op(17, "RESERVED")
 
-        # 166 is RESUME - it is hard coded as such in Tools/build/deepfreeze.py
-        map_op(166, "RESUME")
+        # 149 is RESUME - it is hard coded as such in Tools/build/deepfreeze.py
+        map_op(149, "RESUME")
 
-        next_opcode = 1
+        # Specialized ops appear in their own section
+        # Instrumented opcodes are at the end of the valid range
+        min_internal = 150
+        min_instrumented = 254 - (len(instrumented_ops) - 1)
+        assert min_internal + len(specialized_ops) < min_instrumented
 
+        next_opcode = 1
         for has_arg, name in sorted(ops):
             if name in opmap:
                 continue  # an anchored name, like CACHE
-            while opname[next_opcode] is not None:
-                next_opcode += 1
-            assert next_opcode < 255
             map_op(next_opcode, name)
-
             if has_arg and "HAVE_ARGUMENT" not in markers:
                 markers["HAVE_ARGUMENT"] = next_opcode
 
-        # Instrumented opcodes are at the end of the valid range
-        min_instrumented = 254 - (len(instrumented_ops) - 1)
-        assert next_opcode <= min_instrumented
+            while opname[next_opcode] is not None:
+                next_opcode += 1
+
+        assert next_opcode < min_internal
+
+        for i, op in enumerate(sorted(specialized_ops)):
+            map_op(min_internal + i, op)
+
         markers["MIN_INSTRUMENTED_OPCODE"] = min_instrumented
         for i, op in enumerate(instrumented_ops):
             map_op(min_instrumented + i, op)