GH-118095: Use broader specializations of CALL in tier 1, for better tier 2 support of calls. (GH-118322)

* Add CALL_PY_GENERAL, CALL_BOUND_METHOD_GENERAL and call CALL_NON_PY_GENERAL specializations.

* Remove CALL_PY_WITH_DEFAULTS specialization

* Use CALL_NON_PY_GENERAL in more cases when otherwise failing to specialize
This commit is contained in:
Mark Shannon 2024-05-04 12:11:11 +01:00 • committed by GitHub
parent 00da0afa0d
commit 1ab6356ebe
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
19 changed files with 862 additions and 447 deletions

120
Lib/_opcode_metadata.py generated
View file

@ -88,7 +88,6 @@ _specializations = {
"CALL": [
"CALL_BOUND_METHOD_EXACT_ARGS",
"CALL_PY_EXACT_ARGS",
"CALL_PY_WITH_DEFAULTS",
"CALL_TYPE_1",
"CALL_STR_1",
"CALL_TUPLE_1",
@ -104,6 +103,9 @@ _specializations = {
"CALL_METHOD_DESCRIPTOR_NOARGS",
"CALL_METHOD_DESCRIPTOR_FAST",
"CALL_ALLOC_AND_ENTER_INIT",
"CALL_PY_GENERAL",
"CALL_BOUND_METHOD_GENERAL",
"CALL_NON_PY_GENERAL",
],
}
@ -123,63 +125,65 @@ _specialized_opmap = {
'BINARY_SUBSCR_TUPLE_INT': 161,
'CALL_ALLOC_AND_ENTER_INIT': 162,
'CALL_BOUND_METHOD_EXACT_ARGS': 163,
'CALL_BUILTIN_CLASS': 164,
'CALL_BUILTIN_FAST': 165,
'CALL_BUILTIN_FAST_WITH_KEYWORDS': 166,
'CALL_BUILTIN_O': 167,
'CALL_ISINSTANCE': 168,
'CALL_LEN': 169,
'CALL_LIST_APPEND': 170,
'CALL_METHOD_DESCRIPTOR_FAST': 171,
'CALL_METHOD_DESCRIPTOR_FAST_WITH_KEYWORDS': 172,
'CALL_METHOD_DESCRIPTOR_NOARGS': 173,
'CALL_METHOD_DESCRIPTOR_O': 174,
'CALL_PY_EXACT_ARGS': 175,
'CALL_PY_WITH_DEFAULTS': 176,
'CALL_STR_1': 177,
'CALL_TUPLE_1': 178,
'CALL_TYPE_1': 179,
'COMPARE_OP_FLOAT': 180,
'COMPARE_OP_INT': 181,
'COMPARE_OP_STR': 182,
'CONTAINS_OP_DICT': 183,
'CONTAINS_OP_SET': 184,
'FOR_ITER_GEN': 185,
'FOR_ITER_LIST': 186,
'FOR_ITER_RANGE': 187,
'FOR_ITER_TUPLE': 188,
'LOAD_ATTR_CLASS': 189,
'LOAD_ATTR_GETATTRIBUTE_OVERRIDDEN': 190,
'LOAD_ATTR_INSTANCE_VALUE': 191,
'LOAD_ATTR_METHOD_LAZY_DICT': 192,
'LOAD_ATTR_METHOD_NO_DICT': 193,
'LOAD_ATTR_METHOD_WITH_VALUES': 194,
'LOAD_ATTR_MODULE': 195,
'LOAD_ATTR_NONDESCRIPTOR_NO_DICT': 196,
'LOAD_ATTR_NONDESCRIPTOR_WITH_VALUES': 197,
'LOAD_ATTR_PROPERTY': 198,
'LOAD_ATTR_SLOT': 199,
'LOAD_ATTR_WITH_HINT': 200,
'LOAD_GLOBAL_BUILTIN': 201,
'LOAD_GLOBAL_MODULE': 202,
'LOAD_SUPER_ATTR_ATTR': 203,
'LOAD_SUPER_ATTR_METHOD': 204,
'RESUME_CHECK': 205,
'SEND_GEN': 206,
'STORE_ATTR_INSTANCE_VALUE': 207,
'STORE_ATTR_SLOT': 208,
'STORE_ATTR_WITH_HINT': 209,
'STORE_SUBSCR_DICT': 210,
'STORE_SUBSCR_LIST_INT': 211,
'TO_BOOL_ALWAYS_TRUE': 212,
'TO_BOOL_BOOL': 213,
'TO_BOOL_INT': 214,
'TO_BOOL_LIST': 215,
'TO_BOOL_NONE': 216,
'TO_BOOL_STR': 217,
'UNPACK_SEQUENCE_LIST': 218,
'UNPACK_SEQUENCE_TUPLE': 219,
'UNPACK_SEQUENCE_TWO_TUPLE': 220,
'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_LEN': 170,
'CALL_LIST_APPEND': 171,
'CALL_METHOD_DESCRIPTOR_FAST': 172,
'CALL_METHOD_DESCRIPTOR_FAST_WITH_KEYWORDS': 173,
'CALL_METHOD_DESCRIPTOR_NOARGS': 174,
'CALL_METHOD_DESCRIPTOR_O': 175,
'CALL_NON_PY_GENERAL': 176,
'CALL_PY_EXACT_ARGS': 177,
'CALL_PY_GENERAL': 178,
'CALL_STR_1': 179,
'CALL_TUPLE_1': 180,
'CALL_TYPE_1': 181,
'COMPARE_OP_FLOAT': 182,
'COMPARE_OP_INT': 183,
'COMPARE_OP_STR': 184,
'CONTAINS_OP_DICT': 185,
'CONTAINS_OP_SET': 186,
'FOR_ITER_GEN': 187,
'FOR_ITER_LIST': 188,
'FOR_ITER_RANGE': 189,
'FOR_ITER_TUPLE': 190,
'LOAD_ATTR_CLASS': 191,
'LOAD_ATTR_GETATTRIBUTE_OVERRIDDEN': 192,
'LOAD_ATTR_INSTANCE_VALUE': 193,
'LOAD_ATTR_METHOD_LAZY_DICT': 194,
'LOAD_ATTR_METHOD_NO_DICT': 195,
'LOAD_ATTR_METHOD_WITH_VALUES': 196,
'LOAD_ATTR_MODULE': 197,
'LOAD_ATTR_NONDESCRIPTOR_NO_DICT': 198,
'LOAD_ATTR_NONDESCRIPTOR_WITH_VALUES': 199,
'LOAD_ATTR_PROPERTY': 200,
'LOAD_ATTR_SLOT': 201,
'LOAD_ATTR_WITH_HINT': 202,
'LOAD_GLOBAL_BUILTIN': 203,
'LOAD_GLOBAL_MODULE': 204,
'LOAD_SUPER_ATTR_ATTR': 205,
'LOAD_SUPER_ATTR_METHOD': 206,
'RESUME_CHECK': 207,
'SEND_GEN': 208,
'STORE_ATTR_INSTANCE_VALUE': 209,
'STORE_ATTR_SLOT': 210,
'STORE_ATTR_WITH_HINT': 211,
'STORE_SUBSCR_DICT': 212,
'STORE_SUBSCR_LIST_INT': 213,
'TO_BOOL_ALWAYS_TRUE': 214,
'TO_BOOL_BOOL': 215,
'TO_BOOL_INT': 216,
'TO_BOOL_LIST': 217,
'TO_BOOL_NONE': 218,
'TO_BOOL_STR': 219,
'UNPACK_SEQUENCE_LIST': 220,
'UNPACK_SEQUENCE_TUPLE': 221,
'UNPACK_SEQUENCE_TWO_TUPLE': 222,
}
opmap = {