https://github.com/python/cpython/commit/aeb23273867b27818a3dabd5fca086a1a2e8d229
commit: aeb23273867b27818a3dabd5fca086a1a2e8d229
branch: main
author: Tomasz Pytel <tompy...@gmail.com>
committer: markshannon <m...@hotpy.org>
date: 2025-03-06T08:59:36Z
summary:

gh-130574: renumber RESUME opcode from 149 to 128 (GH-130685)

files:
A 
Misc/NEWS.d/next/Core_and_Builtins/2025-02-28-13-34-51.gh-issue-130574.ujr3Vx.rst
M Include/internal/pycore_magic_number.h
M Include/internal/pycore_opcode_metadata.h
M Include/opcode_ids.h
M Lib/_opcode_metadata.py
M Lib/test/test_code.py
M Programs/test_frozenmain.h
M Python/opcode_targets.h
M Tools/build/deepfreeze.py
M Tools/cases_generator/analyzer.py

diff --git a/Include/internal/pycore_magic_number.h 
b/Include/internal/pycore_magic_number.h
index e97d066ebf8e5c..642f3bcec407ea 100644
--- a/Include/internal/pycore_magic_number.h
+++ b/Include/internal/pycore_magic_number.h
@@ -270,6 +270,7 @@ Known values:
     Python 3.14a5 3615 (CALL_FUNCTION_EX always take a kwargs argument)
     Python 3.14a5 3616 (Remove BINARY_SUBSCR and family. Make them BINARY_OPs)
     Python 3.14a6 3617 (Branch monitoring for async for loops)
+    Python 3.14a6 3618 (Renumber RESUME opcode from 149 to 128)
 
     Python 3.15 will start with 3650
 
@@ -282,7 +283,7 @@ PC/launcher.c must also be updated.
 
 */
 
-#define PYC_MAGIC_NUMBER 3617
+#define PYC_MAGIC_NUMBER 3618
 /* This is equivalent to converting PYC_MAGIC_NUMBER to 2 bytes
    (little-endian) and then appending b'\r\n'. */
 #define PYC_MAGIC_NUMBER_TOKEN \
diff --git a/Include/internal/pycore_opcode_metadata.h 
b/Include/internal/pycore_opcode_metadata.h
index 4aae1ffc350dfe..ae5f6fddafd2c5 100644
--- a/Include/internal/pycore_opcode_metadata.h
+++ b/Include/internal/pycore_opcode_metadata.h
@@ -2942,27 +2942,27 @@ const uint8_t _PyOpcode_Deopt[256] = {
     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 211: \
+    case 212: \
+    case 213: \
+    case 214: \
+    case 215: \
+    case 216: \
+    case 217: \
+    case 218: \
+    case 219: \
+    case 220: \
+    case 221: \
+    case 222: \
+    case 223: \
+    case 224: \
+    case 225: \
+    case 226: \
+    case 227: \
+    case 228: \
+    case 229: \
+    case 230: \
+    case 231: \
     case 232: \
     case 233: \
         ;
diff --git a/Include/opcode_ids.h b/Include/opcode_ids.h
index a634d5e5a229c8..0a669f2daf49d8 100644
--- a/Include/opcode_ids.h
+++ b/Include/opcode_ids.h
@@ -127,89 +127,89 @@ extern "C" {
 #define UNPACK_EX                              114
 #define UNPACK_SEQUENCE                        115
 #define YIELD_VALUE                            116
-#define RESUME                                 149
-#define BINARY_OP_ADD_FLOAT                    150
-#define BINARY_OP_ADD_INT                      151
-#define BINARY_OP_ADD_UNICODE                  152
-#define BINARY_OP_EXTEND                       153
-#define BINARY_OP_MULTIPLY_FLOAT               154
-#define BINARY_OP_MULTIPLY_INT                 155
-#define BINARY_OP_SUBSCR_DICT                  156
-#define BINARY_OP_SUBSCR_GETITEM               157
-#define BINARY_OP_SUBSCR_LIST_INT              158
-#define BINARY_OP_SUBSCR_STR_INT               159
-#define BINARY_OP_SUBSCR_TUPLE_INT             160
-#define BINARY_OP_SUBTRACT_FLOAT               161
-#define BINARY_OP_SUBTRACT_INT                 162
-#define CALL_ALLOC_AND_ENTER_INIT              163
-#define CALL_BOUND_METHOD_EXACT_ARGS           164
-#define CALL_BOUND_METHOD_GENERAL              165
-#define CALL_BUILTIN_CLASS                     166
-#define CALL_BUILTIN_FAST                      167
-#define CALL_BUILTIN_FAST_WITH_KEYWORDS        168
-#define CALL_BUILTIN_O                         169
-#define CALL_ISINSTANCE                        170
-#define CALL_KW_BOUND_METHOD                   171
-#define CALL_KW_NON_PY                         172
-#define CALL_KW_PY                             173
-#define CALL_LEN                               174
-#define CALL_LIST_APPEND                       175
-#define CALL_METHOD_DESCRIPTOR_FAST            176
-#define CALL_METHOD_DESCRIPTOR_FAST_WITH_KEYWORDS 177
-#define CALL_METHOD_DESCRIPTOR_NOARGS          178
-#define CALL_METHOD_DESCRIPTOR_O               179
-#define CALL_NON_PY_GENERAL                    180
-#define CALL_PY_EXACT_ARGS                     181
-#define CALL_PY_GENERAL                        182
-#define CALL_STR_1                             183
-#define CALL_TUPLE_1                           184
-#define CALL_TYPE_1                            185
-#define COMPARE_OP_FLOAT                       186
-#define COMPARE_OP_INT                         187
-#define COMPARE_OP_STR                         188
-#define CONTAINS_OP_DICT                       189
-#define CONTAINS_OP_SET                        190
-#define FOR_ITER_GEN                           191
-#define FOR_ITER_LIST                          192
-#define FOR_ITER_RANGE                         193
-#define FOR_ITER_TUPLE                         194
-#define JUMP_BACKWARD_JIT                      195
-#define JUMP_BACKWARD_NO_JIT                   196
-#define LOAD_ATTR_CLASS                        197
-#define LOAD_ATTR_CLASS_WITH_METACLASS_CHECK   198
-#define LOAD_ATTR_GETATTRIBUTE_OVERRIDDEN      199
-#define LOAD_ATTR_INSTANCE_VALUE               200
-#define LOAD_ATTR_METHOD_LAZY_DICT             201
-#define LOAD_ATTR_METHOD_NO_DICT               202
-#define LOAD_ATTR_METHOD_WITH_VALUES           203
-#define LOAD_ATTR_MODULE                       204
-#define LOAD_ATTR_NONDESCRIPTOR_NO_DICT        205
-#define LOAD_ATTR_NONDESCRIPTOR_WITH_VALUES    206
-#define LOAD_ATTR_PROPERTY                     207
-#define LOAD_ATTR_SLOT                         208
-#define LOAD_ATTR_WITH_HINT                    209
-#define LOAD_CONST_IMMORTAL                    210
-#define LOAD_CONST_MORTAL                      211
-#define LOAD_GLOBAL_BUILTIN                    212
-#define LOAD_GLOBAL_MODULE                     213
-#define LOAD_SUPER_ATTR_ATTR                   214
-#define LOAD_SUPER_ATTR_METHOD                 215
-#define RESUME_CHECK                           216
-#define SEND_GEN                               217
-#define STORE_ATTR_INSTANCE_VALUE              218
-#define STORE_ATTR_SLOT                        219
-#define STORE_ATTR_WITH_HINT                   220
-#define STORE_SUBSCR_DICT                      221
-#define STORE_SUBSCR_LIST_INT                  222
-#define TO_BOOL_ALWAYS_TRUE                    223
-#define TO_BOOL_BOOL                           224
-#define TO_BOOL_INT                            225
-#define TO_BOOL_LIST                           226
-#define TO_BOOL_NONE                           227
-#define TO_BOOL_STR                            228
-#define UNPACK_SEQUENCE_LIST                   229
-#define UNPACK_SEQUENCE_TUPLE                  230
-#define UNPACK_SEQUENCE_TWO_TUPLE              231
+#define RESUME                                 128
+#define BINARY_OP_ADD_FLOAT                    129
+#define BINARY_OP_ADD_INT                      130
+#define BINARY_OP_ADD_UNICODE                  131
+#define BINARY_OP_EXTEND                       132
+#define BINARY_OP_MULTIPLY_FLOAT               133
+#define BINARY_OP_MULTIPLY_INT                 134
+#define BINARY_OP_SUBSCR_DICT                  135
+#define BINARY_OP_SUBSCR_GETITEM               136
+#define BINARY_OP_SUBSCR_LIST_INT              137
+#define BINARY_OP_SUBSCR_STR_INT               138
+#define BINARY_OP_SUBSCR_TUPLE_INT             139
+#define BINARY_OP_SUBTRACT_FLOAT               140
+#define BINARY_OP_SUBTRACT_INT                 141
+#define CALL_ALLOC_AND_ENTER_INIT              142
+#define CALL_BOUND_METHOD_EXACT_ARGS           143
+#define CALL_BOUND_METHOD_GENERAL              144
+#define CALL_BUILTIN_CLASS                     145
+#define CALL_BUILTIN_FAST                      146
+#define CALL_BUILTIN_FAST_WITH_KEYWORDS        147
+#define CALL_BUILTIN_O                         148
+#define CALL_ISINSTANCE                        149
+#define CALL_KW_BOUND_METHOD                   150
+#define CALL_KW_NON_PY                         151
+#define CALL_KW_PY                             152
+#define CALL_LEN                               153
+#define CALL_LIST_APPEND                       154
+#define CALL_METHOD_DESCRIPTOR_FAST            155
+#define CALL_METHOD_DESCRIPTOR_FAST_WITH_KEYWORDS 156
+#define CALL_METHOD_DESCRIPTOR_NOARGS          157
+#define CALL_METHOD_DESCRIPTOR_O               158
+#define CALL_NON_PY_GENERAL                    159
+#define CALL_PY_EXACT_ARGS                     160
+#define CALL_PY_GENERAL                        161
+#define CALL_STR_1                             162
+#define CALL_TUPLE_1                           163
+#define CALL_TYPE_1                            164
+#define COMPARE_OP_FLOAT                       165
+#define COMPARE_OP_INT                         166
+#define COMPARE_OP_STR                         167
+#define CONTAINS_OP_DICT                       168
+#define CONTAINS_OP_SET                        169
+#define FOR_ITER_GEN                           170
+#define FOR_ITER_LIST                          171
+#define FOR_ITER_RANGE                         172
+#define FOR_ITER_TUPLE                         173
+#define JUMP_BACKWARD_JIT                      174
+#define JUMP_BACKWARD_NO_JIT                   175
+#define LOAD_ATTR_CLASS                        176
+#define LOAD_ATTR_CLASS_WITH_METACLASS_CHECK   177
+#define LOAD_ATTR_GETATTRIBUTE_OVERRIDDEN      178
+#define LOAD_ATTR_INSTANCE_VALUE               179
+#define LOAD_ATTR_METHOD_LAZY_DICT             180
+#define LOAD_ATTR_METHOD_NO_DICT               181
+#define LOAD_ATTR_METHOD_WITH_VALUES           182
+#define LOAD_ATTR_MODULE                       183
+#define LOAD_ATTR_NONDESCRIPTOR_NO_DICT        184
+#define LOAD_ATTR_NONDESCRIPTOR_WITH_VALUES    185
+#define LOAD_ATTR_PROPERTY                     186
+#define LOAD_ATTR_SLOT                         187
+#define LOAD_ATTR_WITH_HINT                    188
+#define LOAD_CONST_IMMORTAL                    189
+#define LOAD_CONST_MORTAL                      190
+#define LOAD_GLOBAL_BUILTIN                    191
+#define LOAD_GLOBAL_MODULE                     192
+#define LOAD_SUPER_ATTR_ATTR                   193
+#define LOAD_SUPER_ATTR_METHOD                 194
+#define RESUME_CHECK                           195
+#define SEND_GEN                               196
+#define STORE_ATTR_INSTANCE_VALUE              197
+#define STORE_ATTR_SLOT                        198
+#define STORE_ATTR_WITH_HINT                   199
+#define STORE_SUBSCR_DICT                      200
+#define STORE_SUBSCR_LIST_INT                  201
+#define TO_BOOL_ALWAYS_TRUE                    202
+#define TO_BOOL_BOOL                           203
+#define TO_BOOL_INT                            204
+#define TO_BOOL_LIST                           205
+#define TO_BOOL_NONE                           206
+#define TO_BOOL_STR                            207
+#define UNPACK_SEQUENCE_LIST                   208
+#define UNPACK_SEQUENCE_TUPLE                  209
+#define UNPACK_SEQUENCE_TWO_TUPLE              210
 #define INSTRUMENTED_END_FOR                   234
 #define INSTRUMENTED_POP_ITER                  235
 #define INSTRUMENTED_END_SEND                  236
@@ -244,7 +244,7 @@ extern "C" {
 #define STORE_FAST_MAYBE_NULL                  265
 
 #define HAVE_ARGUMENT                           43
-#define MIN_SPECIALIZED_OPCODE                 150
+#define MIN_SPECIALIZED_OPCODE                 129
 #define MIN_INSTRUMENTED_OPCODE                234
 
 #ifdef __cplusplus
diff --git a/Lib/_opcode_metadata.py b/Lib/_opcode_metadata.py
index 3dc69635cba39e..9e381f936e8820 100644
--- a/Lib/_opcode_metadata.py
+++ b/Lib/_opcode_metadata.py
@@ -123,95 +123,95 @@
 }
 
 _specialized_opmap = {
-    'BINARY_OP_ADD_FLOAT': 150,
-    'BINARY_OP_ADD_INT': 151,
-    'BINARY_OP_ADD_UNICODE': 152,
-    'BINARY_OP_EXTEND': 153,
+    'BINARY_OP_ADD_FLOAT': 129,
+    'BINARY_OP_ADD_INT': 130,
+    'BINARY_OP_ADD_UNICODE': 131,
+    'BINARY_OP_EXTEND': 132,
     'BINARY_OP_INPLACE_ADD_UNICODE': 3,
-    'BINARY_OP_MULTIPLY_FLOAT': 154,
-    'BINARY_OP_MULTIPLY_INT': 155,
-    'BINARY_OP_SUBSCR_DICT': 156,
-    'BINARY_OP_SUBSCR_GETITEM': 157,
-    'BINARY_OP_SUBSCR_LIST_INT': 158,
-    'BINARY_OP_SUBSCR_STR_INT': 159,
-    'BINARY_OP_SUBSCR_TUPLE_INT': 160,
-    'BINARY_OP_SUBTRACT_FLOAT': 161,
-    'BINARY_OP_SUBTRACT_INT': 162,
-    'CALL_ALLOC_AND_ENTER_INIT': 163,
-    'CALL_BOUND_METHOD_EXACT_ARGS': 164,
-    'CALL_BOUND_METHOD_GENERAL': 165,
-    'CALL_BUILTIN_CLASS': 166,
-    'CALL_BUILTIN_FAST': 167,
-    'CALL_BUILTIN_FAST_WITH_KEYWORDS': 168,
-    'CALL_BUILTIN_O': 169,
-    'CALL_ISINSTANCE': 170,
-    'CALL_KW_BOUND_METHOD': 171,
-    'CALL_KW_NON_PY': 172,
-    'CALL_KW_PY': 173,
-    'CALL_LEN': 174,
-    'CALL_LIST_APPEND': 175,
-    'CALL_METHOD_DESCRIPTOR_FAST': 176,
-    'CALL_METHOD_DESCRIPTOR_FAST_WITH_KEYWORDS': 177,
-    'CALL_METHOD_DESCRIPTOR_NOARGS': 178,
-    'CALL_METHOD_DESCRIPTOR_O': 179,
-    'CALL_NON_PY_GENERAL': 180,
-    'CALL_PY_EXACT_ARGS': 181,
-    'CALL_PY_GENERAL': 182,
-    'CALL_STR_1': 183,
-    'CALL_TUPLE_1': 184,
-    'CALL_TYPE_1': 185,
-    'COMPARE_OP_FLOAT': 186,
-    'COMPARE_OP_INT': 187,
-    'COMPARE_OP_STR': 188,
-    'CONTAINS_OP_DICT': 189,
-    'CONTAINS_OP_SET': 190,
-    'FOR_ITER_GEN': 191,
-    'FOR_ITER_LIST': 192,
-    'FOR_ITER_RANGE': 193,
-    'FOR_ITER_TUPLE': 194,
-    'JUMP_BACKWARD_JIT': 195,
-    'JUMP_BACKWARD_NO_JIT': 196,
-    'LOAD_ATTR_CLASS': 197,
-    'LOAD_ATTR_CLASS_WITH_METACLASS_CHECK': 198,
-    'LOAD_ATTR_GETATTRIBUTE_OVERRIDDEN': 199,
-    'LOAD_ATTR_INSTANCE_VALUE': 200,
-    'LOAD_ATTR_METHOD_LAZY_DICT': 201,
-    'LOAD_ATTR_METHOD_NO_DICT': 202,
-    'LOAD_ATTR_METHOD_WITH_VALUES': 203,
-    'LOAD_ATTR_MODULE': 204,
-    'LOAD_ATTR_NONDESCRIPTOR_NO_DICT': 205,
-    'LOAD_ATTR_NONDESCRIPTOR_WITH_VALUES': 206,
-    'LOAD_ATTR_PROPERTY': 207,
-    'LOAD_ATTR_SLOT': 208,
-    'LOAD_ATTR_WITH_HINT': 209,
-    'LOAD_CONST_IMMORTAL': 210,
-    'LOAD_CONST_MORTAL': 211,
-    'LOAD_GLOBAL_BUILTIN': 212,
-    'LOAD_GLOBAL_MODULE': 213,
-    'LOAD_SUPER_ATTR_ATTR': 214,
-    'LOAD_SUPER_ATTR_METHOD': 215,
-    'RESUME_CHECK': 216,
-    'SEND_GEN': 217,
-    'STORE_ATTR_INSTANCE_VALUE': 218,
-    'STORE_ATTR_SLOT': 219,
-    'STORE_ATTR_WITH_HINT': 220,
-    'STORE_SUBSCR_DICT': 221,
-    'STORE_SUBSCR_LIST_INT': 222,
-    'TO_BOOL_ALWAYS_TRUE': 223,
-    'TO_BOOL_BOOL': 224,
-    'TO_BOOL_INT': 225,
-    'TO_BOOL_LIST': 226,
-    'TO_BOOL_NONE': 227,
-    'TO_BOOL_STR': 228,
-    'UNPACK_SEQUENCE_LIST': 229,
-    'UNPACK_SEQUENCE_TUPLE': 230,
-    'UNPACK_SEQUENCE_TWO_TUPLE': 231,
+    'BINARY_OP_MULTIPLY_FLOAT': 133,
+    'BINARY_OP_MULTIPLY_INT': 134,
+    'BINARY_OP_SUBSCR_DICT': 135,
+    'BINARY_OP_SUBSCR_GETITEM': 136,
+    'BINARY_OP_SUBSCR_LIST_INT': 137,
+    'BINARY_OP_SUBSCR_STR_INT': 138,
+    'BINARY_OP_SUBSCR_TUPLE_INT': 139,
+    'BINARY_OP_SUBTRACT_FLOAT': 140,
+    'BINARY_OP_SUBTRACT_INT': 141,
+    'CALL_ALLOC_AND_ENTER_INIT': 142,
+    'CALL_BOUND_METHOD_EXACT_ARGS': 143,
+    'CALL_BOUND_METHOD_GENERAL': 144,
+    'CALL_BUILTIN_CLASS': 145,
+    'CALL_BUILTIN_FAST': 146,
+    'CALL_BUILTIN_FAST_WITH_KEYWORDS': 147,
+    'CALL_BUILTIN_O': 148,
+    'CALL_ISINSTANCE': 149,
+    'CALL_KW_BOUND_METHOD': 150,
+    'CALL_KW_NON_PY': 151,
+    'CALL_KW_PY': 152,
+    'CALL_LEN': 153,
+    'CALL_LIST_APPEND': 154,
+    'CALL_METHOD_DESCRIPTOR_FAST': 155,
+    'CALL_METHOD_DESCRIPTOR_FAST_WITH_KEYWORDS': 156,
+    'CALL_METHOD_DESCRIPTOR_NOARGS': 157,
+    'CALL_METHOD_DESCRIPTOR_O': 158,
+    'CALL_NON_PY_GENERAL': 159,
+    'CALL_PY_EXACT_ARGS': 160,
+    'CALL_PY_GENERAL': 161,
+    'CALL_STR_1': 162,
+    'CALL_TUPLE_1': 163,
+    'CALL_TYPE_1': 164,
+    'COMPARE_OP_FLOAT': 165,
+    'COMPARE_OP_INT': 166,
+    'COMPARE_OP_STR': 167,
+    'CONTAINS_OP_DICT': 168,
+    'CONTAINS_OP_SET': 169,
+    'FOR_ITER_GEN': 170,
+    'FOR_ITER_LIST': 171,
+    'FOR_ITER_RANGE': 172,
+    'FOR_ITER_TUPLE': 173,
+    'JUMP_BACKWARD_JIT': 174,
+    'JUMP_BACKWARD_NO_JIT': 175,
+    'LOAD_ATTR_CLASS': 176,
+    'LOAD_ATTR_CLASS_WITH_METACLASS_CHECK': 177,
+    'LOAD_ATTR_GETATTRIBUTE_OVERRIDDEN': 178,
+    'LOAD_ATTR_INSTANCE_VALUE': 179,
+    'LOAD_ATTR_METHOD_LAZY_DICT': 180,
+    'LOAD_ATTR_METHOD_NO_DICT': 181,
+    'LOAD_ATTR_METHOD_WITH_VALUES': 182,
+    'LOAD_ATTR_MODULE': 183,
+    'LOAD_ATTR_NONDESCRIPTOR_NO_DICT': 184,
+    'LOAD_ATTR_NONDESCRIPTOR_WITH_VALUES': 185,
+    'LOAD_ATTR_PROPERTY': 186,
+    'LOAD_ATTR_SLOT': 187,
+    'LOAD_ATTR_WITH_HINT': 188,
+    'LOAD_CONST_IMMORTAL': 189,
+    'LOAD_CONST_MORTAL': 190,
+    'LOAD_GLOBAL_BUILTIN': 191,
+    'LOAD_GLOBAL_MODULE': 192,
+    'LOAD_SUPER_ATTR_ATTR': 193,
+    'LOAD_SUPER_ATTR_METHOD': 194,
+    'RESUME_CHECK': 195,
+    'SEND_GEN': 196,
+    'STORE_ATTR_INSTANCE_VALUE': 197,
+    'STORE_ATTR_SLOT': 198,
+    'STORE_ATTR_WITH_HINT': 199,
+    'STORE_SUBSCR_DICT': 200,
+    'STORE_SUBSCR_LIST_INT': 201,
+    'TO_BOOL_ALWAYS_TRUE': 202,
+    'TO_BOOL_BOOL': 203,
+    'TO_BOOL_INT': 204,
+    'TO_BOOL_LIST': 205,
+    'TO_BOOL_NONE': 206,
+    'TO_BOOL_STR': 207,
+    'UNPACK_SEQUENCE_LIST': 208,
+    'UNPACK_SEQUENCE_TUPLE': 209,
+    'UNPACK_SEQUENCE_TWO_TUPLE': 210,
 }
 
 opmap = {
     'CACHE': 0,
     'RESERVED': 17,
-    'RESUME': 149,
+    'RESUME': 128,
     'INSTRUMENTED_LINE': 254,
     'ENTER_EXECUTOR': 255,
     'BINARY_SLICE': 1,
diff --git a/Lib/test/test_code.py b/Lib/test/test_code.py
index 34110dbcace7e1..0f6220efa0482b 100644
--- a/Lib/test/test_code.py
+++ b/Lib/test/test_code.py
@@ -429,14 +429,14 @@ def test_invalid_bytecode(self):
         def foo():
             pass
 
-        # assert that opcode 135 is invalid
-        self.assertEqual(opname[135], '<135>')
+        # assert that opcode 127 is invalid
+        self.assertEqual(opname[127], '<127>')
 
-        # change first opcode to 0x87 (=135)
+        # change first opcode to 0x7f (=127)
         foo.__code__ = foo.__code__.replace(
-            co_code=b'\x87' + foo.__code__.co_code[1:])
+            co_code=b'\x7f' + foo.__code__.co_code[1:])
 
-        msg = "unknown opcode 135"
+        msg = "unknown opcode 127"
         with self.assertRaisesRegex(SystemError, msg):
             foo()
 
diff --git 
a/Misc/NEWS.d/next/Core_and_Builtins/2025-02-28-13-34-51.gh-issue-130574.ujr3Vx.rst
 
b/Misc/NEWS.d/next/Core_and_Builtins/2025-02-28-13-34-51.gh-issue-130574.ujr3Vx.rst
new file mode 100644
index 00000000000000..84afe7cfb2e7b6
--- /dev/null
+++ 
b/Misc/NEWS.d/next/Core_and_Builtins/2025-02-28-13-34-51.gh-issue-130574.ujr3Vx.rst
@@ -0,0 +1 @@
+Renumber :opcode:`RESUME` from 149 to 128.
diff --git a/Programs/test_frozenmain.h b/Programs/test_frozenmain.h
index 0fe8d3d3f7d8c6..9bcb4a4634782d 100644
--- a/Programs/test_frozenmain.h
+++ b/Programs/test_frozenmain.h
@@ -1,7 +1,7 @@
 // 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,9,0,0,
-    0,0,0,0,0,243,184,0,0,0,149,0,90,0,80,0,
+    0,0,0,0,0,243,184,0,0,0,128,0,90,0,80,0,
     71,0,112,0,90,0,80,0,71,1,112,1,89,2,33,0,
     80,1,51,1,0,0,0,0,0,0,31,0,89,2,33,0,
     80,2,89,0,78,6,0,0,0,0,0,0,0,0,0,0,
diff --git a/Python/opcode_targets.h b/Python/opcode_targets.h
index 0435d0841dbae1..5208025cbf3edf 100644
--- a/Python/opcode_targets.h
+++ b/Python/opcode_targets.h
@@ -128,27 +128,6 @@ static void *opcode_targets[256] = {
     &&_unknown_opcode,
     &&_unknown_opcode,
     &&_unknown_opcode,
-    &&_unknown_opcode,
-    &&_unknown_opcode,
-    &&_unknown_opcode,
-    &&_unknown_opcode,
-    &&_unknown_opcode,
-    &&_unknown_opcode,
-    &&_unknown_opcode,
-    &&_unknown_opcode,
-    &&_unknown_opcode,
-    &&_unknown_opcode,
-    &&_unknown_opcode,
-    &&_unknown_opcode,
-    &&_unknown_opcode,
-    &&_unknown_opcode,
-    &&_unknown_opcode,
-    &&_unknown_opcode,
-    &&_unknown_opcode,
-    &&_unknown_opcode,
-    &&_unknown_opcode,
-    &&_unknown_opcode,
-    &&_unknown_opcode,
     &&TARGET_RESUME,
     &&TARGET_BINARY_OP_ADD_FLOAT,
     &&TARGET_BINARY_OP_ADD_INT,
@@ -234,6 +213,27 @@ static void *opcode_targets[256] = {
     &&TARGET_UNPACK_SEQUENCE_TWO_TUPLE,
     &&_unknown_opcode,
     &&_unknown_opcode,
+    &&_unknown_opcode,
+    &&_unknown_opcode,
+    &&_unknown_opcode,
+    &&_unknown_opcode,
+    &&_unknown_opcode,
+    &&_unknown_opcode,
+    &&_unknown_opcode,
+    &&_unknown_opcode,
+    &&_unknown_opcode,
+    &&_unknown_opcode,
+    &&_unknown_opcode,
+    &&_unknown_opcode,
+    &&_unknown_opcode,
+    &&_unknown_opcode,
+    &&_unknown_opcode,
+    &&_unknown_opcode,
+    &&_unknown_opcode,
+    &&_unknown_opcode,
+    &&_unknown_opcode,
+    &&_unknown_opcode,
+    &&_unknown_opcode,
     &&TARGET_INSTRUMENTED_END_FOR,
     &&TARGET_INSTRUMENTED_POP_ITER,
     &&TARGET_INSTRUMENTED_END_SEND,
@@ -736,27 +736,27 @@ static py_tail_call_funcptr INSTRUCTION_TABLE[256] = {
     [125] = _TAIL_CALL_UNKNOWN_OPCODE,
     [126] = _TAIL_CALL_UNKNOWN_OPCODE,
     [127] = _TAIL_CALL_UNKNOWN_OPCODE,
-    [128] = _TAIL_CALL_UNKNOWN_OPCODE,
-    [129] = _TAIL_CALL_UNKNOWN_OPCODE,
-    [130] = _TAIL_CALL_UNKNOWN_OPCODE,
-    [131] = _TAIL_CALL_UNKNOWN_OPCODE,
-    [132] = _TAIL_CALL_UNKNOWN_OPCODE,
-    [133] = _TAIL_CALL_UNKNOWN_OPCODE,
-    [134] = _TAIL_CALL_UNKNOWN_OPCODE,
-    [135] = _TAIL_CALL_UNKNOWN_OPCODE,
-    [136] = _TAIL_CALL_UNKNOWN_OPCODE,
-    [137] = _TAIL_CALL_UNKNOWN_OPCODE,
-    [138] = _TAIL_CALL_UNKNOWN_OPCODE,
-    [139] = _TAIL_CALL_UNKNOWN_OPCODE,
-    [140] = _TAIL_CALL_UNKNOWN_OPCODE,
-    [141] = _TAIL_CALL_UNKNOWN_OPCODE,
-    [142] = _TAIL_CALL_UNKNOWN_OPCODE,
-    [143] = _TAIL_CALL_UNKNOWN_OPCODE,
-    [144] = _TAIL_CALL_UNKNOWN_OPCODE,
-    [145] = _TAIL_CALL_UNKNOWN_OPCODE,
-    [146] = _TAIL_CALL_UNKNOWN_OPCODE,
-    [147] = _TAIL_CALL_UNKNOWN_OPCODE,
-    [148] = _TAIL_CALL_UNKNOWN_OPCODE,
+    [211] = _TAIL_CALL_UNKNOWN_OPCODE,
+    [212] = _TAIL_CALL_UNKNOWN_OPCODE,
+    [213] = _TAIL_CALL_UNKNOWN_OPCODE,
+    [214] = _TAIL_CALL_UNKNOWN_OPCODE,
+    [215] = _TAIL_CALL_UNKNOWN_OPCODE,
+    [216] = _TAIL_CALL_UNKNOWN_OPCODE,
+    [217] = _TAIL_CALL_UNKNOWN_OPCODE,
+    [218] = _TAIL_CALL_UNKNOWN_OPCODE,
+    [219] = _TAIL_CALL_UNKNOWN_OPCODE,
+    [220] = _TAIL_CALL_UNKNOWN_OPCODE,
+    [221] = _TAIL_CALL_UNKNOWN_OPCODE,
+    [222] = _TAIL_CALL_UNKNOWN_OPCODE,
+    [223] = _TAIL_CALL_UNKNOWN_OPCODE,
+    [224] = _TAIL_CALL_UNKNOWN_OPCODE,
+    [225] = _TAIL_CALL_UNKNOWN_OPCODE,
+    [226] = _TAIL_CALL_UNKNOWN_OPCODE,
+    [227] = _TAIL_CALL_UNKNOWN_OPCODE,
+    [228] = _TAIL_CALL_UNKNOWN_OPCODE,
+    [229] = _TAIL_CALL_UNKNOWN_OPCODE,
+    [230] = _TAIL_CALL_UNKNOWN_OPCODE,
+    [231] = _TAIL_CALL_UNKNOWN_OPCODE,
     [232] = _TAIL_CALL_UNKNOWN_OPCODE,
     [233] = _TAIL_CALL_UNKNOWN_OPCODE,
 };
diff --git a/Tools/build/deepfreeze.py b/Tools/build/deepfreeze.py
index 05633e3f77af49..6ec7a97f70ebb3 100644
--- a/Tools/build/deepfreeze.py
+++ b/Tools/build/deepfreeze.py
@@ -22,7 +22,7 @@
 verbose = False
 
 # This must be kept in sync with Tools/cases_generator/analyzer.py
-RESUME = 149
+RESUME = 128
 
 def isprintable(b: bytes) -> bool:
     return all(0x20 <= c < 0x7f for c in b)
diff --git a/Tools/cases_generator/analyzer.py 
b/Tools/cases_generator/analyzer.py
index cecfb6f3834d44..334beb96f4eb77 100644
--- a/Tools/cases_generator/analyzer.py
+++ b/Tools/cases_generator/analyzer.py
@@ -1077,8 +1077,8 @@ def assign_opcodes(
     # This helps catch cases where we attempt to execute a cache.
     instmap["RESERVED"] = 17
 
-    # 149 is RESUME - it is hard coded as such in Tools/build/deepfreeze.py
-    instmap["RESUME"] = 149
+    # 128 is RESUME - it is hard coded as such in Tools/build/deepfreeze.py
+    instmap["RESUME"] = 128
 
     # This is an historical oddity.
     instmap["BINARY_OP_INPLACE_ADD_UNICODE"] = 3
@@ -1108,7 +1108,7 @@ def assign_opcodes(
 
     # Specialized ops appear in their own section
     # Instrumented opcodes are at the end of the valid range
-    min_internal = 150
+    min_internal = instmap["RESUME"] + 1
     min_instrumented = 254 - (len(instrumented) - 1)
     assert min_internal + len(specialized) < min_instrumented
 

_______________________________________________
Python-checkins mailing list -- python-checkins@python.org
To unsubscribe send an email to python-checkins-le...@python.org
https://mail.python.org/mailman3/lists/python-checkins.python.org/
Member address: arch...@mail-archive.com

Reply via email to