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

154
Lib/_opcode_metadata.py generated
View file

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