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

This commit is contained in:
Tomasz Pytel 2025-03-06 03:59:36 -05:00 committed by GitHub
parent e4a60248b0
commit aeb2327386
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
10 changed files with 243 additions and 241 deletions

View file

@ -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 \

View file

@ -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: \
;

168
Include/opcode_ids.h generated
View file

@ -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

166
Lib/_opcode_metadata.py generated
View file

@ -123,95 +123,95 @@ _specializations = {
}
_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,

View file

@ -429,14 +429,14 @@ class CodeTest(unittest.TestCase):
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()

View file

@ -0,0 +1 @@
Renumber :opcode:`RESUME` from 149 to 128.

View file

@ -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,

View file

@ -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,
};

View 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/analyzer.py
RESUME = 149
RESUME = 128
def isprintable(b: bytes) -> bool:
return all(0x20 <= c < 0x7f for c in b)

View file

@ -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