1 // Auto-generated by Tools/scripts/generate_opcode_h.py from Lib/opcode.py
2 
3 #ifndef Py_OPCODE_H
4 #define Py_OPCODE_H
5 #ifdef __cplusplus
6 extern "C" {
7 #endif
8 
9 
10 /* Instruction opcodes for compiled code */
11 #define CACHE                                    0
12 #define POP_TOP                                  1
13 #define PUSH_NULL                                2
14 #define NOP                                      9
15 #define UNARY_POSITIVE                          10
16 #define UNARY_NEGATIVE                          11
17 #define UNARY_NOT                               12
18 #define UNARY_INVERT                            15
19 #define BINARY_SUBSCR                           25
20 #define GET_LEN                                 30
21 #define MATCH_MAPPING                           31
22 #define MATCH_SEQUENCE                          32
23 #define MATCH_KEYS                              33
24 #define PUSH_EXC_INFO                           35
25 #define CHECK_EXC_MATCH                         36
26 #define CHECK_EG_MATCH                          37
27 #define WITH_EXCEPT_START                       49
28 #define GET_AITER                               50
29 #define GET_ANEXT                               51
30 #define BEFORE_ASYNC_WITH                       52
31 #define BEFORE_WITH                             53
32 #define END_ASYNC_FOR                           54
33 #define STORE_SUBSCR                            60
34 #define DELETE_SUBSCR                           61
35 #define GET_ITER                                68
36 #define GET_YIELD_FROM_ITER                     69
37 #define PRINT_EXPR                              70
38 #define LOAD_BUILD_CLASS                        71
39 #define LOAD_ASSERTION_ERROR                    74
40 #define RETURN_GENERATOR                        75
41 #define LIST_TO_TUPLE                           82
42 #define RETURN_VALUE                            83
43 #define IMPORT_STAR                             84
44 #define SETUP_ANNOTATIONS                       85
45 #define YIELD_VALUE                             86
46 #define ASYNC_GEN_WRAP                          87
47 #define PREP_RERAISE_STAR                       88
48 #define POP_EXCEPT                              89
49 #define HAVE_ARGUMENT                           90
50 #define STORE_NAME                              90
51 #define DELETE_NAME                             91
52 #define UNPACK_SEQUENCE                         92
53 #define FOR_ITER                                93
54 #define UNPACK_EX                               94
55 #define STORE_ATTR                              95
56 #define DELETE_ATTR                             96
57 #define STORE_GLOBAL                            97
58 #define DELETE_GLOBAL                           98
59 #define SWAP                                    99
60 #define LOAD_CONST                             100
61 #define LOAD_NAME                              101
62 #define BUILD_TUPLE                            102
63 #define BUILD_LIST                             103
64 #define BUILD_SET                              104
65 #define BUILD_MAP                              105
66 #define LOAD_ATTR                              106
67 #define COMPARE_OP                             107
68 #define IMPORT_NAME                            108
69 #define IMPORT_FROM                            109
70 #define JUMP_FORWARD                           110
71 #define JUMP_IF_FALSE_OR_POP                   111
72 #define JUMP_IF_TRUE_OR_POP                    112
73 #define POP_JUMP_FORWARD_IF_FALSE              114
74 #define POP_JUMP_FORWARD_IF_TRUE               115
75 #define LOAD_GLOBAL                            116
76 #define IS_OP                                  117
77 #define CONTAINS_OP                            118
78 #define RERAISE                                119
79 #define COPY                                   120
80 #define BINARY_OP                              122
81 #define SEND                                   123
82 #define LOAD_FAST                              124
83 #define STORE_FAST                             125
84 #define DELETE_FAST                            126
85 #define POP_JUMP_FORWARD_IF_NOT_NONE           128
86 #define POP_JUMP_FORWARD_IF_NONE               129
87 #define RAISE_VARARGS                          130
88 #define GET_AWAITABLE                          131
89 #define MAKE_FUNCTION                          132
90 #define BUILD_SLICE                            133
91 #define JUMP_BACKWARD_NO_INTERRUPT             134
92 #define MAKE_CELL                              135
93 #define LOAD_CLOSURE                           136
94 #define LOAD_DEREF                             137
95 #define STORE_DEREF                            138
96 #define DELETE_DEREF                           139
97 #define JUMP_BACKWARD                          140
98 #define CALL_FUNCTION_EX                       142
99 #define EXTENDED_ARG                           144
100 #define LIST_APPEND                            145
101 #define SET_ADD                                146
102 #define MAP_ADD                                147
103 #define LOAD_CLASSDEREF                        148
104 #define COPY_FREE_VARS                         149
105 #define RESUME                                 151
106 #define MATCH_CLASS                            152
107 #define FORMAT_VALUE                           155
108 #define BUILD_CONST_KEY_MAP                    156
109 #define BUILD_STRING                           157
110 #define LOAD_METHOD                            160
111 #define LIST_EXTEND                            162
112 #define SET_UPDATE                             163
113 #define DICT_MERGE                             164
114 #define DICT_UPDATE                            165
115 #define PRECALL                                166
116 #define CALL                                   171
117 #define KW_NAMES                               172
118 #define POP_JUMP_BACKWARD_IF_NOT_NONE          173
119 #define POP_JUMP_BACKWARD_IF_NONE              174
120 #define POP_JUMP_BACKWARD_IF_FALSE             175
121 #define POP_JUMP_BACKWARD_IF_TRUE              176
122 #define BINARY_OP_ADAPTIVE                       3
123 #define BINARY_OP_ADD_FLOAT                      4
124 #define BINARY_OP_ADD_INT                        5
125 #define BINARY_OP_ADD_UNICODE                    6
126 #define BINARY_OP_INPLACE_ADD_UNICODE            7
127 #define BINARY_OP_MULTIPLY_FLOAT                 8
128 #define BINARY_OP_MULTIPLY_INT                  13
129 #define BINARY_OP_SUBTRACT_FLOAT                14
130 #define BINARY_OP_SUBTRACT_INT                  16
131 #define BINARY_SUBSCR_ADAPTIVE                  17
132 #define BINARY_SUBSCR_DICT                      18
133 #define BINARY_SUBSCR_GETITEM                   19
134 #define BINARY_SUBSCR_LIST_INT                  20
135 #define BINARY_SUBSCR_TUPLE_INT                 21
136 #define CALL_ADAPTIVE                           22
137 #define CALL_PY_EXACT_ARGS                      23
138 #define CALL_PY_WITH_DEFAULTS                   24
139 #define COMPARE_OP_ADAPTIVE                     26
140 #define COMPARE_OP_FLOAT_JUMP                   27
141 #define COMPARE_OP_INT_JUMP                     28
142 #define COMPARE_OP_STR_JUMP                     29
143 #define EXTENDED_ARG_QUICK                      34
144 #define JUMP_BACKWARD_QUICK                     38
145 #define LOAD_ATTR_ADAPTIVE                      39
146 #define LOAD_ATTR_INSTANCE_VALUE                40
147 #define LOAD_ATTR_MODULE                        41
148 #define LOAD_ATTR_SLOT                          42
149 #define LOAD_ATTR_WITH_HINT                     43
150 #define LOAD_CONST__LOAD_FAST                   44
151 #define LOAD_FAST__LOAD_CONST                   45
152 #define LOAD_FAST__LOAD_FAST                    46
153 #define LOAD_GLOBAL_ADAPTIVE                    47
154 #define LOAD_GLOBAL_BUILTIN                     48
155 #define LOAD_GLOBAL_MODULE                      55
156 #define LOAD_METHOD_ADAPTIVE                    56
157 #define LOAD_METHOD_CLASS                       57
158 #define LOAD_METHOD_MODULE                      58
159 #define LOAD_METHOD_NO_DICT                     59
160 #define LOAD_METHOD_WITH_DICT                   62
161 #define LOAD_METHOD_WITH_VALUES                 63
162 #define PRECALL_ADAPTIVE                        64
163 #define PRECALL_BOUND_METHOD                    65
164 #define PRECALL_BUILTIN_CLASS                   66
165 #define PRECALL_BUILTIN_FAST_WITH_KEYWORDS      67
166 #define PRECALL_METHOD_DESCRIPTOR_FAST_WITH_KEYWORDS  72
167 #define PRECALL_NO_KW_BUILTIN_FAST              73
168 #define PRECALL_NO_KW_BUILTIN_O                 76
169 #define PRECALL_NO_KW_ISINSTANCE                77
170 #define PRECALL_NO_KW_LEN                       78
171 #define PRECALL_NO_KW_LIST_APPEND               79
172 #define PRECALL_NO_KW_METHOD_DESCRIPTOR_FAST    80
173 #define PRECALL_NO_KW_METHOD_DESCRIPTOR_NOARGS  81
174 #define PRECALL_NO_KW_METHOD_DESCRIPTOR_O      113
175 #define PRECALL_NO_KW_STR_1                    121
176 #define PRECALL_NO_KW_TUPLE_1                  127
177 #define PRECALL_NO_KW_TYPE_1                   141
178 #define PRECALL_PYFUNC                         143
179 #define RESUME_QUICK                           150
180 #define STORE_ATTR_ADAPTIVE                    153
181 #define STORE_ATTR_INSTANCE_VALUE              154
182 #define STORE_ATTR_SLOT                        158
183 #define STORE_ATTR_WITH_HINT                   159
184 #define STORE_FAST__LOAD_FAST                  161
185 #define STORE_FAST__STORE_FAST                 167
186 #define STORE_SUBSCR_ADAPTIVE                  168
187 #define STORE_SUBSCR_DICT                      169
188 #define STORE_SUBSCR_LIST_INT                  170
189 #define UNPACK_SEQUENCE_ADAPTIVE               177
190 #define UNPACK_SEQUENCE_LIST                   178
191 #define UNPACK_SEQUENCE_TUPLE                  179
192 #define UNPACK_SEQUENCE_TWO_TUPLE              180
193 #define DO_TRACING                             255
194 
195 #define HAS_CONST(op) (false\
196     || ((op) == 100) \
197     || ((op) == 172) \
198     )
199 
200 #define NB_ADD                                   0
201 #define NB_AND                                   1
202 #define NB_FLOOR_DIVIDE                          2
203 #define NB_LSHIFT                                3
204 #define NB_MATRIX_MULTIPLY                       4
205 #define NB_MULTIPLY                              5
206 #define NB_REMAINDER                             6
207 #define NB_OR                                    7
208 #define NB_POWER                                 8
209 #define NB_RSHIFT                                9
210 #define NB_SUBTRACT                             10
211 #define NB_TRUE_DIVIDE                          11
212 #define NB_XOR                                  12
213 #define NB_INPLACE_ADD                          13
214 #define NB_INPLACE_AND                          14
215 #define NB_INPLACE_FLOOR_DIVIDE                 15
216 #define NB_INPLACE_LSHIFT                       16
217 #define NB_INPLACE_MATRIX_MULTIPLY              17
218 #define NB_INPLACE_MULTIPLY                     18
219 #define NB_INPLACE_REMAINDER                    19
220 #define NB_INPLACE_OR                           20
221 #define NB_INPLACE_POWER                        21
222 #define NB_INPLACE_RSHIFT                       22
223 #define NB_INPLACE_SUBTRACT                     23
224 #define NB_INPLACE_TRUE_DIVIDE                  24
225 #define NB_INPLACE_XOR                          25
226 
227 #define HAS_ARG(op) ((op) >= HAVE_ARGUMENT)
228 
229 /* Reserve some bytecodes for internal use in the compiler.
230  * The value of 240 is arbitrary. */
231 #define IS_ARTIFICIAL(op) ((op) > 240)
232 
233 #ifdef __cplusplus
234 }
235 #endif
236 #endif /* !Py_OPCODE_H */
237