gh-100239: specialize long tail of binary operations (#128722)

This commit is contained in:
Irit Katriel 2025-01-16 15:22:13 +00:00 committed by GitHub
parent e81fe940c9
commit 3893a92d95
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
21 changed files with 796 additions and 492 deletions

153
Include/opcode_ids.h generated
View file

@ -132,82 +132,83 @@ extern "C" {
#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_ALLOC_AND_ENTER_INIT 162
#define CALL_BOUND_METHOD_EXACT_ARGS 163
#define CALL_BOUND_METHOD_GENERAL 164
#define CALL_BUILTIN_CLASS 165
#define CALL_BUILTIN_FAST 166
#define CALL_BUILTIN_FAST_WITH_KEYWORDS 167
#define CALL_BUILTIN_O 168
#define CALL_ISINSTANCE 169
#define CALL_KW_BOUND_METHOD 170
#define CALL_KW_NON_PY 171
#define CALL_KW_PY 172
#define CALL_LEN 173
#define CALL_LIST_APPEND 174
#define CALL_METHOD_DESCRIPTOR_FAST 175
#define CALL_METHOD_DESCRIPTOR_FAST_WITH_KEYWORDS 176
#define CALL_METHOD_DESCRIPTOR_NOARGS 177
#define CALL_METHOD_DESCRIPTOR_O 178
#define CALL_NON_PY_GENERAL 179
#define CALL_PY_EXACT_ARGS 180
#define CALL_PY_GENERAL 181
#define CALL_STR_1 182
#define CALL_TUPLE_1 183
#define CALL_TYPE_1 184
#define COMPARE_OP_FLOAT 185
#define COMPARE_OP_INT 186
#define COMPARE_OP_STR 187
#define CONTAINS_OP_DICT 188
#define CONTAINS_OP_SET 189
#define FOR_ITER_GEN 190
#define FOR_ITER_LIST 191
#define FOR_ITER_RANGE 192
#define FOR_ITER_TUPLE 193
#define LOAD_ATTR_CLASS 194
#define LOAD_ATTR_CLASS_WITH_METACLASS_CHECK 195
#define LOAD_ATTR_GETATTRIBUTE_OVERRIDDEN 196
#define LOAD_ATTR_INSTANCE_VALUE 197
#define LOAD_ATTR_METHOD_LAZY_DICT 198
#define LOAD_ATTR_METHOD_NO_DICT 199
#define LOAD_ATTR_METHOD_WITH_VALUES 200
#define LOAD_ATTR_MODULE 201
#define LOAD_ATTR_NONDESCRIPTOR_NO_DICT 202
#define LOAD_ATTR_NONDESCRIPTOR_WITH_VALUES 203
#define LOAD_ATTR_PROPERTY 204
#define LOAD_ATTR_SLOT 205
#define LOAD_ATTR_WITH_HINT 206
#define LOAD_CONST_IMMORTAL 207
#define LOAD_CONST_MORTAL 208
#define LOAD_GLOBAL_BUILTIN 209
#define LOAD_GLOBAL_MODULE 210
#define LOAD_SUPER_ATTR_ATTR 211
#define LOAD_SUPER_ATTR_METHOD 212
#define RESUME_CHECK 213
#define SEND_GEN 214
#define STORE_ATTR_INSTANCE_VALUE 215
#define STORE_ATTR_SLOT 216
#define STORE_ATTR_WITH_HINT 217
#define STORE_SUBSCR_DICT 218
#define STORE_SUBSCR_LIST_INT 219
#define TO_BOOL_ALWAYS_TRUE 220
#define TO_BOOL_BOOL 221
#define TO_BOOL_INT 222
#define TO_BOOL_LIST 223
#define TO_BOOL_NONE 224
#define TO_BOOL_STR 225
#define UNPACK_SEQUENCE_LIST 226
#define UNPACK_SEQUENCE_TUPLE 227
#define UNPACK_SEQUENCE_TWO_TUPLE 228
#define BINARY_OP_EXTEND 153
#define BINARY_OP_MULTIPLY_FLOAT 154
#define BINARY_OP_MULTIPLY_INT 155
#define BINARY_OP_SUBTRACT_FLOAT 156
#define BINARY_OP_SUBTRACT_INT 157
#define BINARY_SUBSCR_DICT 158
#define BINARY_SUBSCR_GETITEM 159
#define BINARY_SUBSCR_LIST_INT 160
#define BINARY_SUBSCR_STR_INT 161
#define BINARY_SUBSCR_TUPLE_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 LOAD_ATTR_CLASS 195
#define LOAD_ATTR_CLASS_WITH_METACLASS_CHECK 196
#define LOAD_ATTR_GETATTRIBUTE_OVERRIDDEN 197
#define LOAD_ATTR_INSTANCE_VALUE 198
#define LOAD_ATTR_METHOD_LAZY_DICT 199
#define LOAD_ATTR_METHOD_NO_DICT 200
#define LOAD_ATTR_METHOD_WITH_VALUES 201
#define LOAD_ATTR_MODULE 202
#define LOAD_ATTR_NONDESCRIPTOR_NO_DICT 203
#define LOAD_ATTR_NONDESCRIPTOR_WITH_VALUES 204
#define LOAD_ATTR_PROPERTY 205
#define LOAD_ATTR_SLOT 206
#define LOAD_ATTR_WITH_HINT 207
#define LOAD_CONST_IMMORTAL 208
#define LOAD_CONST_MORTAL 209
#define LOAD_GLOBAL_BUILTIN 210
#define LOAD_GLOBAL_MODULE 211
#define LOAD_SUPER_ATTR_ATTR 212
#define LOAD_SUPER_ATTR_METHOD 213
#define RESUME_CHECK 214
#define SEND_GEN 215
#define STORE_ATTR_INSTANCE_VALUE 216
#define STORE_ATTR_SLOT 217
#define STORE_ATTR_WITH_HINT 218
#define STORE_SUBSCR_DICT 219
#define STORE_SUBSCR_LIST_INT 220
#define TO_BOOL_ALWAYS_TRUE 221
#define TO_BOOL_BOOL 222
#define TO_BOOL_INT 223
#define TO_BOOL_LIST 224
#define TO_BOOL_NONE 225
#define TO_BOOL_STR 226
#define UNPACK_SEQUENCE_LIST 227
#define UNPACK_SEQUENCE_TUPLE 228
#define UNPACK_SEQUENCE_TWO_TUPLE 229
#define INSTRUMENTED_END_FOR 235
#define INSTRUMENTED_POP_ITER 236
#define INSTRUMENTED_END_SEND 237