https://github.com/python/cpython/commit/aeb23273867b27818a3dabd5fca086a1a2e8d229
commit: aeb23273867b27818a3dabd5fca086a1a2e8d229
branch: main
author: Tomasz Pytel <[email protected]>
committer: markshannon <[email protected]>
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 -- [email protected]
To unsubscribe send an email to [email protected]
https://mail.python.org/mailman3/lists/python-checkins.python.org/
Member address: [email protected]