gh-105481: generate op IDs from bytecode.c instead of hard coding them in opcode.py (#107971)

This commit is contained in:
Irit Katriel 2023-08-16 23:25:18 +01:00 committed by GitHub
parent e88eb3775e
commit 665a4391e1
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
21 changed files with 1593 additions and 1521 deletions

436
Include/opcode_ids.h generated
View file

@ -1,4 +1,7 @@
// Auto-generated by Tools/build/generate_opcode_h.py from Lib/opcode.py
// This file is generated by Tools/cases_generator/generate_cases.py
// from:
// Python/bytecodes.c
// Do not edit!
#ifndef Py_OPCODE_IDS_H
#define Py_OPCODE_IDS_H
@ -6,228 +9,227 @@
extern "C" {
#endif
/* Instruction opcodes for compiled code */
#define CACHE 0
#define POP_TOP 1
#define PUSH_NULL 2
#define INTERPRETER_EXIT 3
#define END_FOR 4
#define END_SEND 5
#define TO_BOOL 6
#define NOP 9
#define UNARY_NEGATIVE 11
#define UNARY_NOT 12
#define UNARY_INVERT 15
#define EXIT_INIT_CHECK 16
#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 RESERVED 17
#define MAKE_FUNCTION 24
#define BINARY_SUBSCR 25
#define BINARY_SLICE 26
#define STORE_SLICE 27
#define GET_LEN 30
#define MATCH_MAPPING 31
#define MATCH_SEQUENCE 32
#define MATCH_KEYS 33
#define PUSH_EXC_INFO 35
#define CHECK_EXC_MATCH 36
#define CHECK_EG_MATCH 37
#define FORMAT_SIMPLE 40
#define FORMAT_WITH_SPEC 41
#define WITH_EXCEPT_START 49
#define GET_AITER 50
#define GET_ANEXT 51
#define BEFORE_ASYNC_WITH 52
#define BEFORE_WITH 53
#define END_ASYNC_FOR 54
#define CLEANUP_THROW 55
#define STORE_SUBSCR 60
#define DELETE_SUBSCR 61
#define GET_ITER 68
#define GET_YIELD_FROM_ITER 69
#define LOAD_BUILD_CLASS 71
#define LOAD_ASSERTION_ERROR 74
#define RETURN_GENERATOR 75
#define RETURN_VALUE 83
#define SETUP_ANNOTATIONS 85
#define LOAD_LOCALS 87
#define POP_EXCEPT 89
#define STORE_NAME 90
#define DELETE_NAME 91
#define UNPACK_SEQUENCE 92
#define FOR_ITER 93
#define UNPACK_EX 94
#define STORE_ATTR 95
#define DELETE_ATTR 96
#define STORE_GLOBAL 97
#define DELETE_GLOBAL 98
#define SWAP 99
#define LOAD_CONST 100
#define LOAD_NAME 101
#define BUILD_TUPLE 102
#define BUILD_LIST 103
#define BUILD_SET 104
#define BUILD_MAP 105
#define LOAD_ATTR 106
#define COMPARE_OP 107
#define IMPORT_NAME 108
#define IMPORT_FROM 109
#define JUMP_FORWARD 110
#define POP_JUMP_IF_FALSE 114
#define POP_JUMP_IF_TRUE 115
#define LOAD_GLOBAL 116
#define IS_OP 117
#define CONTAINS_OP 118
#define RERAISE 119
#define COPY 120
#define RETURN_CONST 121
#define BINARY_OP 122
#define SEND 123
#define LOAD_FAST 124
#define STORE_FAST 125
#define DELETE_FAST 126
#define LOAD_FAST_CHECK 127
#define POP_JUMP_IF_NOT_NONE 128
#define POP_JUMP_IF_NONE 129
#define RAISE_VARARGS 130
#define GET_AWAITABLE 131
#define BUILD_SLICE 133
#define JUMP_BACKWARD_NO_INTERRUPT 134
#define MAKE_CELL 135
#define LOAD_DEREF 137
#define STORE_DEREF 138
#define DELETE_DEREF 139
#define JUMP_BACKWARD 140
#define LOAD_SUPER_ATTR 141
#define CALL_FUNCTION_EX 142
#define LOAD_FAST_AND_CLEAR 143
#define EXTENDED_ARG 144
#define LIST_APPEND 145
#define SET_ADD 146
#define MAP_ADD 147
#define COPY_FREE_VARS 149
#define YIELD_VALUE 150
#define RESUME 151
#define MATCH_CLASS 152
#define BUILD_CONST_KEY_MAP 156
#define BUILD_STRING 157
#define CONVERT_VALUE 158
#define LIST_EXTEND 162
#define SET_UPDATE 163
#define DICT_MERGE 164
#define DICT_UPDATE 165
#define LOAD_FAST_LOAD_FAST 168
#define STORE_FAST_LOAD_FAST 169
#define STORE_FAST_STORE_FAST 170
#define CALL 171
#define KW_NAMES 172
#define CALL_INTRINSIC_1 173
#define CALL_INTRINSIC_2 174
#define LOAD_FROM_DICT_OR_GLOBALS 175
#define LOAD_FROM_DICT_OR_DEREF 176
#define SET_FUNCTION_ATTRIBUTE 177
#define ENTER_EXECUTOR 230
#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 RETURN_GENERATOR 47
#define RETURN_VALUE 48
#define SETUP_ANNOTATIONS 49
#define STORE_ATTR_INSTANCE_VALUE 50
#define STORE_ATTR_SLOT 51
#define STORE_SLICE 52
#define STORE_SUBSCR 53
#define STORE_SUBSCR_DICT 54
#define STORE_SUBSCR_LIST_INT 55
#define TO_BOOL 56
#define TO_BOOL_ALWAYS_TRUE 57
#define TO_BOOL_BOOL 58
#define TO_BOOL_INT 59
#define TO_BOOL_LIST 60
#define TO_BOOL_NONE 61
#define TO_BOOL_STR 62
#define UNARY_INVERT 63
#define UNARY_NEGATIVE 64
#define UNARY_NOT 65
#define WITH_EXCEPT_START 66
#define HAVE_ARGUMENT 67
#define BINARY_OP 67
#define BUILD_CONST_KEY_MAP 68
#define BUILD_LIST 69
#define BUILD_MAP 70
#define BUILD_SET 71
#define BUILD_SLICE 72
#define BUILD_STRING 73
#define BUILD_TUPLE 74
#define CALL 75
#define CALL_BOUND_METHOD_EXACT_ARGS 76
#define CALL_BUILTIN_CLASS 77
#define CALL_BUILTIN_FAST_WITH_KEYWORDS 78
#define CALL_FUNCTION_EX 79
#define CALL_INTRINSIC_1 80
#define CALL_INTRINSIC_2 81
#define CALL_METHOD_DESCRIPTOR_FAST_WITH_KEYWORDS 82
#define CALL_NO_KW_ALLOC_AND_ENTER_INIT 83
#define CALL_NO_KW_BUILTIN_FAST 84
#define CALL_NO_KW_BUILTIN_O 85
#define CALL_NO_KW_ISINSTANCE 86
#define CALL_NO_KW_LEN 87
#define CALL_NO_KW_LIST_APPEND 88
#define CALL_NO_KW_METHOD_DESCRIPTOR_FAST 89
#define CALL_NO_KW_METHOD_DESCRIPTOR_NOARGS 90
#define CALL_NO_KW_METHOD_DESCRIPTOR_O 91
#define CALL_NO_KW_STR_1 92
#define CALL_NO_KW_TUPLE_1 93
#define CALL_NO_KW_TYPE_1 94
#define CALL_PY_EXACT_ARGS 95
#define CALL_PY_WITH_DEFAULTS 96
#define COMPARE_OP 97
#define COMPARE_OP_FLOAT 98
#define COMPARE_OP_INT 99
#define COMPARE_OP_STR 100
#define CONTAINS_OP 101
#define CONVERT_VALUE 102
#define COPY 103
#define COPY_FREE_VARS 104
#define DELETE_ATTR 105
#define DELETE_DEREF 106
#define DELETE_FAST 107
#define DELETE_GLOBAL 108
#define DELETE_NAME 109
#define DICT_MERGE 110
#define DICT_UPDATE 111
#define ENTER_EXECUTOR 112
#define EXTENDED_ARG 113
#define FOR_ITER 114
#define FOR_ITER_GEN 115
#define FOR_ITER_LIST 116
#define FOR_ITER_RANGE 117
#define FOR_ITER_TUPLE 118
#define GET_AWAITABLE 119
#define IMPORT_FROM 120
#define IMPORT_NAME 121
#define IS_OP 122
#define JUMP_BACKWARD 123
#define JUMP_BACKWARD_NO_INTERRUPT 124
#define JUMP_FORWARD 125
#define KW_NAMES 126
#define LIST_APPEND 127
#define LIST_EXTEND 128
#define LOAD_ATTR 129
#define LOAD_ATTR_CLASS 130
#define LOAD_ATTR_GETATTRIBUTE_OVERRIDDEN 131
#define LOAD_ATTR_INSTANCE_VALUE 132
#define LOAD_ATTR_METHOD_LAZY_DICT 133
#define LOAD_ATTR_METHOD_NO_DICT 134
#define LOAD_ATTR_METHOD_WITH_VALUES 135
#define LOAD_ATTR_MODULE 136
#define LOAD_ATTR_NONDESCRIPTOR_NO_DICT 137
#define LOAD_ATTR_NONDESCRIPTOR_WITH_VALUES 138
#define LOAD_ATTR_PROPERTY 139
#define LOAD_ATTR_SLOT 140
#define LOAD_ATTR_WITH_HINT 141
#define LOAD_CONST 142
#define LOAD_DEREF 143
#define LOAD_FAST 144
#define LOAD_FAST_AND_CLEAR 145
#define LOAD_FAST_CHECK 146
#define LOAD_FAST_LOAD_FAST 147
#define LOAD_FROM_DICT_OR_DEREF 148
#define LOAD_FROM_DICT_OR_GLOBALS 149
#define LOAD_GLOBAL 150
#define LOAD_GLOBAL_BUILTIN 151
#define LOAD_GLOBAL_MODULE 152
#define LOAD_NAME 153
#define LOAD_SUPER_ATTR 154
#define LOAD_SUPER_ATTR_ATTR 155
#define LOAD_SUPER_ATTR_METHOD 156
#define MAKE_CELL 157
#define MAP_ADD 158
#define MATCH_CLASS 159
#define POP_JUMP_IF_FALSE 160
#define POP_JUMP_IF_NONE 161
#define POP_JUMP_IF_NOT_NONE 162
#define POP_JUMP_IF_TRUE 163
#define RAISE_VARARGS 164
#define RERAISE 165
#define RESUME 166
#define RETURN_CONST 167
#define SEND 168
#define SEND_GEN 169
#define SET_ADD 170
#define SET_FUNCTION_ATTRIBUTE 171
#define SET_UPDATE 172
#define STORE_ATTR 173
#define STORE_ATTR_WITH_HINT 174
#define STORE_DEREF 175
#define STORE_FAST 176
#define STORE_FAST_LOAD_FAST 177
#define STORE_FAST_STORE_FAST 178
#define STORE_GLOBAL 179
#define STORE_NAME 180
#define SWAP 181
#define UNPACK_EX 182
#define UNPACK_SEQUENCE 183
#define UNPACK_SEQUENCE_LIST 184
#define UNPACK_SEQUENCE_TUPLE 185
#define UNPACK_SEQUENCE_TWO_TUPLE 186
#define YIELD_VALUE 187
#define MIN_INSTRUMENTED_OPCODE 237
#define INSTRUMENTED_LOAD_SUPER_ATTR 237
#define INSTRUMENTED_POP_JUMP_IF_NONE 238
#define INSTRUMENTED_POP_JUMP_IF_NOT_NONE 239
#define INSTRUMENTED_RESUME 240
#define INSTRUMENTED_CALL 241
#define INSTRUMENTED_RETURN_VALUE 242
#define INSTRUMENTED_YIELD_VALUE 243
#define INSTRUMENTED_CALL_FUNCTION_EX 244
#define INSTRUMENTED_JUMP_FORWARD 245
#define INSTRUMENTED_JUMP_BACKWARD 246
#define INSTRUMENTED_RETURN_CONST 247
#define INSTRUMENTED_FOR_ITER 248
#define INSTRUMENTED_POP_JUMP_IF_FALSE 249
#define INSTRUMENTED_RESUME 237
#define INSTRUMENTED_END_FOR 238
#define INSTRUMENTED_END_SEND 239
#define INSTRUMENTED_RETURN_VALUE 240
#define INSTRUMENTED_RETURN_CONST 241
#define INSTRUMENTED_YIELD_VALUE 242
#define INSTRUMENTED_LOAD_SUPER_ATTR 243
#define INSTRUMENTED_FOR_ITER 244
#define INSTRUMENTED_CALL 245
#define INSTRUMENTED_CALL_FUNCTION_EX 246
#define INSTRUMENTED_INSTRUCTION 247
#define INSTRUMENTED_JUMP_FORWARD 248
#define INSTRUMENTED_JUMP_BACKWARD 249
#define INSTRUMENTED_POP_JUMP_IF_TRUE 250
#define INSTRUMENTED_END_FOR 251
#define INSTRUMENTED_END_SEND 252
#define INSTRUMENTED_INSTRUCTION 253
#define INSTRUMENTED_POP_JUMP_IF_FALSE 251
#define INSTRUMENTED_POP_JUMP_IF_NONE 252
#define INSTRUMENTED_POP_JUMP_IF_NOT_NONE 253
#define INSTRUMENTED_LINE 254
#define SETUP_FINALLY 256
#define SETUP_CLEANUP 257
#define SETUP_WITH 258
#define POP_BLOCK 259
#define JUMP 260
#define JUMP_NO_INTERRUPT 261
#define LOAD_METHOD 262
#define LOAD_SUPER_METHOD 263
#define LOAD_ZERO_SUPER_METHOD 264
#define LOAD_ZERO_SUPER_ATTR 265
#define STORE_FAST_MAYBE_NULL 266
#define LOAD_CLOSURE 267
#define TO_BOOL_ALWAYS_TRUE 7
#define TO_BOOL_BOOL 8
#define TO_BOOL_INT 10
#define TO_BOOL_LIST 13
#define TO_BOOL_NONE 14
#define TO_BOOL_STR 18
#define BINARY_OP_MULTIPLY_INT 19
#define BINARY_OP_ADD_INT 20
#define BINARY_OP_SUBTRACT_INT 21
#define BINARY_OP_MULTIPLY_FLOAT 22
#define BINARY_OP_ADD_FLOAT 23
#define BINARY_OP_SUBTRACT_FLOAT 28
#define BINARY_OP_ADD_UNICODE 29
#define BINARY_OP_INPLACE_ADD_UNICODE 34
#define BINARY_SUBSCR_DICT 38
#define BINARY_SUBSCR_GETITEM 39
#define BINARY_SUBSCR_LIST_INT 42
#define BINARY_SUBSCR_STR_INT 43
#define BINARY_SUBSCR_TUPLE_INT 44
#define STORE_SUBSCR_DICT 45
#define STORE_SUBSCR_LIST_INT 46
#define SEND_GEN 47
#define UNPACK_SEQUENCE_TWO_TUPLE 48
#define UNPACK_SEQUENCE_TUPLE 56
#define UNPACK_SEQUENCE_LIST 57
#define STORE_ATTR_INSTANCE_VALUE 58
#define STORE_ATTR_SLOT 59
#define STORE_ATTR_WITH_HINT 62
#define LOAD_GLOBAL_MODULE 63
#define LOAD_GLOBAL_BUILTIN 64
#define LOAD_SUPER_ATTR_ATTR 65
#define LOAD_SUPER_ATTR_METHOD 66
#define LOAD_ATTR_INSTANCE_VALUE 67
#define LOAD_ATTR_MODULE 70
#define LOAD_ATTR_WITH_HINT 72
#define LOAD_ATTR_SLOT 73
#define LOAD_ATTR_CLASS 76
#define LOAD_ATTR_PROPERTY 77
#define LOAD_ATTR_GETATTRIBUTE_OVERRIDDEN 78
#define LOAD_ATTR_METHOD_WITH_VALUES 79
#define LOAD_ATTR_METHOD_NO_DICT 80
#define LOAD_ATTR_METHOD_LAZY_DICT 81
#define LOAD_ATTR_NONDESCRIPTOR_WITH_VALUES 82
#define LOAD_ATTR_NONDESCRIPTOR_NO_DICT 84
#define COMPARE_OP_FLOAT 86
#define COMPARE_OP_INT 88
#define COMPARE_OP_STR 111
#define FOR_ITER_LIST 112
#define FOR_ITER_TUPLE 113
#define FOR_ITER_RANGE 132
#define FOR_ITER_GEN 136
#define CALL_BOUND_METHOD_EXACT_ARGS 148
#define CALL_PY_EXACT_ARGS 153
#define CALL_PY_WITH_DEFAULTS 154
#define CALL_NO_KW_TYPE_1 155
#define CALL_NO_KW_STR_1 159
#define CALL_NO_KW_TUPLE_1 160
#define CALL_BUILTIN_CLASS 161
#define CALL_NO_KW_BUILTIN_O 166
#define CALL_NO_KW_BUILTIN_FAST 167
#define CALL_BUILTIN_FAST_WITH_KEYWORDS 178
#define CALL_NO_KW_LEN 179
#define CALL_NO_KW_ISINSTANCE 180
#define CALL_NO_KW_LIST_APPEND 181
#define CALL_NO_KW_METHOD_DESCRIPTOR_O 182
#define CALL_METHOD_DESCRIPTOR_FAST_WITH_KEYWORDS 183
#define CALL_NO_KW_METHOD_DESCRIPTOR_NOARGS 184
#define CALL_NO_KW_METHOD_DESCRIPTOR_FAST 185
#define CALL_NO_KW_ALLOC_AND_ENTER_INIT 186
#define JUMP 256
#define JUMP_NO_INTERRUPT 257
#define LOAD_CLOSURE 258
#define LOAD_METHOD 259
#define LOAD_SUPER_METHOD 260
#define LOAD_ZERO_SUPER_ATTR 261
#define LOAD_ZERO_SUPER_METHOD 262
#define POP_BLOCK 263
#define SETUP_CLEANUP 264
#define SETUP_FINALLY 265
#define SETUP_WITH 266
#define STORE_FAST_MAYBE_NULL 267
#ifdef __cplusplus
}