summaryrefslogtreecommitdiffstats
path: root/Lib/_opcode_metadata.py
diff options
context:
space:
mode:
authorIrit Katriel <1055913+iritkatriel@users.noreply.github.com>2025-01-16 15:22:13 (GMT)
committerGitHub <noreply@github.com>2025-01-16 15:22:13 (GMT)
commit3893a92d956363fa2443bc5e47d4bae3deddacef (patch)
treee87b4c94dfa6cc47ba4610d93db82dd15791a2fa /Lib/_opcode_metadata.py
parente81fe940c9bd092f6de558fa965100502b78da0f (diff)
downloadcpython-3893a92d956363fa2443bc5e47d4bae3deddacef.zip
cpython-3893a92d956363fa2443bc5e47d4bae3deddacef.tar.gz
cpython-3893a92d956363fa2443bc5e47d4bae3deddacef.tar.bz2
gh-100239: specialize long tail of binary operations (#128722)
Diffstat (limited to 'Lib/_opcode_metadata.py')
-rw-r--r--Lib/_opcode_metadata.py154
1 files changed, 78 insertions, 76 deletions
diff --git a/Lib/_opcode_metadata.py b/Lib/_opcode_metadata.py
index d93e8d8..7dd528e 100644
--- a/Lib/_opcode_metadata.py
+++ b/Lib/_opcode_metadata.py
@@ -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 = {