Skip to content

Commit 33f0a85

Browse files
authored
gh-105481: generate _specializations and _specialized_instructions from bytecodes.c (#105913)
1 parent 28187a9 commit 33f0a85

File tree

12 files changed

+345
-277
lines changed

12 files changed

+345
-277
lines changed

Include/internal/pycore_opcode.h

Lines changed: 52 additions & 52 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Include/opcode.h

Lines changed: 54 additions & 54 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Lib/_opcode_metadata.py

Lines changed: 94 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,94 @@
1+
# This file is generated by Tools/cases_generator/generate_cases.py
2+
# from:
3+
# Python/bytecodes.c
4+
# Do not edit!
5+
6+
_specializations = {
7+
"BINARY_OP": [
8+
"BINARY_OP_MULTIPLY_INT",
9+
"BINARY_OP_ADD_INT",
10+
"BINARY_OP_SUBTRACT_INT",
11+
"BINARY_OP_MULTIPLY_FLOAT",
12+
"BINARY_OP_ADD_FLOAT",
13+
"BINARY_OP_SUBTRACT_FLOAT",
14+
"BINARY_OP_ADD_UNICODE",
15+
],
16+
"BINARY_SUBSCR": [
17+
"BINARY_SUBSCR_DICT",
18+
"BINARY_SUBSCR_GETITEM",
19+
"BINARY_SUBSCR_LIST_INT",
20+
"BINARY_SUBSCR_TUPLE_INT",
21+
],
22+
"STORE_SUBSCR": [
23+
"STORE_SUBSCR_DICT",
24+
"STORE_SUBSCR_LIST_INT",
25+
],
26+
"SEND": [
27+
"SEND_GEN",
28+
],
29+
"UNPACK_SEQUENCE": [
30+
"UNPACK_SEQUENCE_TWO_TUPLE",
31+
"UNPACK_SEQUENCE_TUPLE",
32+
"UNPACK_SEQUENCE_LIST",
33+
],
34+
"STORE_ATTR": [
35+
"STORE_ATTR_INSTANCE_VALUE",
36+
"STORE_ATTR_SLOT",
37+
"STORE_ATTR_WITH_HINT",
38+
],
39+
"LOAD_GLOBAL": [
40+
"LOAD_GLOBAL_MODULE",
41+
"LOAD_GLOBAL_BUILTIN",
42+
],
43+
"LOAD_SUPER_ATTR": [
44+
"LOAD_SUPER_ATTR_ATTR",
45+
"LOAD_SUPER_ATTR_METHOD",
46+
],
47+
"LOAD_ATTR": [
48+
"LOAD_ATTR_INSTANCE_VALUE",
49+
"LOAD_ATTR_MODULE",
50+
"LOAD_ATTR_WITH_HINT",
51+
"LOAD_ATTR_SLOT",
52+
"LOAD_ATTR_CLASS",
53+
"LOAD_ATTR_PROPERTY",
54+
"LOAD_ATTR_GETATTRIBUTE_OVERRIDDEN",
55+
"LOAD_ATTR_METHOD_WITH_VALUES",
56+
"LOAD_ATTR_METHOD_NO_DICT",
57+
"LOAD_ATTR_METHOD_LAZY_DICT",
58+
],
59+
"COMPARE_OP": [
60+
"COMPARE_OP_FLOAT",
61+
"COMPARE_OP_INT",
62+
"COMPARE_OP_STR",
63+
],
64+
"FOR_ITER": [
65+
"FOR_ITER_LIST",
66+
"FOR_ITER_TUPLE",
67+
"FOR_ITER_RANGE",
68+
"FOR_ITER_GEN",
69+
],
70+
"CALL": [
71+
"CALL_BOUND_METHOD_EXACT_ARGS",
72+
"CALL_PY_EXACT_ARGS",
73+
"CALL_PY_WITH_DEFAULTS",
74+
"CALL_NO_KW_TYPE_1",
75+
"CALL_NO_KW_STR_1",
76+
"CALL_NO_KW_TUPLE_1",
77+
"CALL_BUILTIN_CLASS",
78+
"CALL_NO_KW_BUILTIN_O",
79+
"CALL_NO_KW_BUILTIN_FAST",
80+
"CALL_BUILTIN_FAST_WITH_KEYWORDS",
81+
"CALL_NO_KW_LEN",
82+
"CALL_NO_KW_ISINSTANCE",
83+
"CALL_NO_KW_LIST_APPEND",
84+
"CALL_NO_KW_METHOD_DESCRIPTOR_O",
85+
"CALL_METHOD_DESCRIPTOR_FAST_WITH_KEYWORDS",
86+
"CALL_NO_KW_METHOD_DESCRIPTOR_NOARGS",
87+
"CALL_NO_KW_METHOD_DESCRIPTOR_FAST",
88+
],
89+
}
90+
91+
# An irregular case:
92+
_specializations["BINARY_OP"].append("BINARY_OP_INPLACE_ADD_UNICODE")
93+
94+
_specialized_instructions = [opcode for family in _specializations.values() for opcode in family]

0 commit comments

Comments
 (0)