Branch data Line data Source code
1 : : // This file is generated by Tools/cases_generator/generate_cases.py
2 : : // from:
3 : : // Python/bytecodes.c
4 : : // Do not edit!
5 : :
6 : : #ifndef NEED_OPCODE_TABLES
7 : : extern int _PyOpcode_num_popped(int opcode, int oparg, bool jump);
8 : : #else
9 : : int
10 : 351088 : _PyOpcode_num_popped(int opcode, int oparg, bool jump) {
11 [ + + + + : 351088 : switch(opcode) {
+ + + - -
- - - + +
+ + + + -
- - - - -
- - + + +
- - - - +
+ + - - +
+ - + - +
+ - - + +
- + + + -
+ + + + +
+ - - - +
+ + + - +
+ - - + +
- + + + +
+ + + + +
+ + + + +
+ + + - -
- - - - -
- - - + -
- - - + +
- + + + -
- + + + +
+ + - + +
- + - + +
+ - - - -
+ + + + -
- - + + -
- - - - -
- - - - -
- - - - -
- + + + +
+ + + + -
- - ]
12 : 1257 : case NOP:
13 : 1257 : return 0;
14 : 8676 : case RESUME:
15 : 8676 : return 0;
16 : 1050 : case LOAD_CLOSURE:
17 : 1050 : return 0;
18 : 157 : case LOAD_FAST_CHECK:
19 : 157 : return 0;
20 : 56117 : case LOAD_FAST:
21 : 56117 : return 0;
22 : 44477 : case LOAD_CONST:
23 : 44477 : return 0;
24 : 15279 : case STORE_FAST:
25 : 15279 : return 1;
26 : 0 : case LOAD_FAST__LOAD_FAST:
27 : 0 : return 0+0;
28 : 0 : case LOAD_FAST__LOAD_CONST:
29 : 0 : return 0+0;
30 : 0 : case STORE_FAST__LOAD_FAST:
31 : 0 : return 1+0;
32 : 0 : case STORE_FAST__STORE_FAST:
33 : 0 : return 1+1;
34 : 0 : case LOAD_CONST__LOAD_FAST:
35 : 0 : return 0+0;
36 : 12741 : case POP_TOP:
37 : 12741 : return 1;
38 : 3730 : case PUSH_NULL:
39 : 3730 : return 0;
40 : 1705 : case END_FOR:
41 : 1705 : return 1+1;
42 : 168 : case UNARY_NEGATIVE:
43 : 168 : return 1;
44 : 73 : case UNARY_NOT:
45 : 73 : return 1;
46 : 25 : case UNARY_INVERT:
47 : 25 : return 1;
48 : 0 : case BINARY_OP_MULTIPLY_INT:
49 : 0 : return 2;
50 : 0 : case BINARY_OP_MULTIPLY_FLOAT:
51 : 0 : return 2;
52 : 0 : case BINARY_OP_SUBTRACT_INT:
53 : 0 : return 2;
54 : 0 : case BINARY_OP_SUBTRACT_FLOAT:
55 : 0 : return 2;
56 : 0 : case BINARY_OP_ADD_UNICODE:
57 : 0 : return 2;
58 : 0 : case BINARY_OP_INPLACE_ADD_UNICODE:
59 : 0 : return 2;
60 : 0 : case BINARY_OP_ADD_FLOAT:
61 : 0 : return 2;
62 : 0 : case BINARY_OP_ADD_INT:
63 : 0 : return 2;
64 : 1860 : case BINARY_SUBSCR:
65 : 1860 : return 2;
66 : 751 : case BINARY_SLICE:
67 : 751 : return 3;
68 : 42 : case STORE_SLICE:
69 : 42 : return 4;
70 : 0 : case BINARY_SUBSCR_LIST_INT:
71 : 0 : return 2;
72 : 0 : case BINARY_SUBSCR_TUPLE_INT:
73 : 0 : return 2;
74 : 0 : case BINARY_SUBSCR_DICT:
75 : 0 : return 2;
76 : 0 : case BINARY_SUBSCR_GETITEM:
77 : 0 : return 2;
78 : 228 : case LIST_APPEND:
79 : 228 : return (oparg-1) + 2;
80 : 14 : case SET_ADD:
81 : 14 : return (oparg-1) + 2;
82 : 787 : case STORE_SUBSCR:
83 : 787 : return 3;
84 : 0 : case STORE_SUBSCR_LIST_INT:
85 : 0 : return 3;
86 : 0 : case STORE_SUBSCR_DICT:
87 : 0 : return 3;
88 : 119 : case DELETE_SUBSCR:
89 : 119 : return 2;
90 : 762 : case CALL_INTRINSIC_1:
91 : 762 : return 1;
92 : 0 : case CALL_INTRINSIC_2:
93 : 0 : return 2;
94 : 2205 : case RAISE_VARARGS:
95 : 2205 : return oparg;
96 : 0 : case INTERPRETER_EXIT:
97 : 0 : return 1;
98 : 5637 : case RETURN_VALUE:
99 : 5637 : return 1;
100 : 5474 : case RETURN_CONST:
101 : 5474 : return 0;
102 : 0 : case GET_AITER:
103 : 0 : return 1;
104 : 0 : case GET_ANEXT:
105 : 0 : return 1;
106 : 146 : case GET_AWAITABLE:
107 : 146 : return 1;
108 : 380 : case SEND:
109 : 380 : return 2;
110 : 0 : case SEND_GEN:
111 : 0 : return 2;
112 : 635 : case YIELD_VALUE:
113 : 635 : return 1;
114 : 3477 : case POP_EXCEPT:
115 : 3477 : return 1;
116 : 4481 : case RERAISE:
117 : 4481 : return oparg + 1;
118 : 0 : case END_ASYNC_FOR:
119 : 0 : return 2;
120 : 190 : case CLEANUP_THROW:
121 : 190 : return 3;
122 : 246 : case LOAD_ASSERTION_ERROR:
123 : 246 : return 0;
124 : 733 : case LOAD_BUILD_CLASS:
125 : 733 : return 0;
126 : 13083 : case STORE_NAME:
127 : 13083 : return 1;
128 : 132 : case DELETE_NAME:
129 : 132 : return 0;
130 : 1019 : case UNPACK_SEQUENCE:
131 : 1019 : return 1;
132 : 0 : case UNPACK_SEQUENCE_TWO_TUPLE:
133 : 0 : return 1;
134 : 0 : case UNPACK_SEQUENCE_TUPLE:
135 : 0 : return 1;
136 : 0 : case UNPACK_SEQUENCE_LIST:
137 : 0 : return 1;
138 : 8 : case UNPACK_EX:
139 : 8 : return 1;
140 : 3043 : case STORE_ATTR:
141 : 3043 : return 2;
142 : 20 : case DELETE_ATTR:
143 : 20 : return 1;
144 : 157 : case STORE_GLOBAL:
145 : 157 : return 1;
146 : 0 : case DELETE_GLOBAL:
147 : 0 : return 0;
148 : 6998 : case LOAD_NAME:
149 : 6998 : return 0;
150 : 21395 : case LOAD_GLOBAL:
151 : 21395 : return 0;
152 : 0 : case LOAD_GLOBAL_MODULE:
153 : 0 : return 0;
154 : 0 : case LOAD_GLOBAL_BUILTIN:
155 : 0 : return 0;
156 : 493 : case DELETE_FAST:
157 : 493 : return 0;
158 : 699 : case MAKE_CELL:
159 : 699 : return 0;
160 : 0 : case DELETE_DEREF:
161 : 0 : return 0;
162 : 15 : case LOAD_CLASSDEREF:
163 : 15 : return 0;
164 : 2006 : case LOAD_DEREF:
165 : 2006 : return 0;
166 : 425 : case STORE_DEREF:
167 : 425 : return 1;
168 : 627 : case COPY_FREE_VARS:
169 : 627 : return 0;
170 : 1129 : case BUILD_STRING:
171 : 1129 : return oparg;
172 : 2765 : case BUILD_TUPLE:
173 : 2765 : return oparg;
174 : 1378 : case BUILD_LIST:
175 : 1378 : return oparg;
176 : 311 : case LIST_EXTEND:
177 : 311 : return (oparg-1) + 2;
178 : 8 : case SET_UPDATE:
179 : 8 : return (oparg-1) + 2;
180 : 54 : case BUILD_SET:
181 : 54 : return oparg;
182 : 629 : case BUILD_MAP:
183 : 629 : return oparg*2;
184 : 1 : case SETUP_ANNOTATIONS:
185 : 1 : return 0;
186 : 333 : case BUILD_CONST_KEY_MAP:
187 : 333 : return oparg + 1;
188 : 144 : case DICT_UPDATE:
189 : 144 : return 1;
190 : 181 : case DICT_MERGE:
191 : 181 : return 1;
192 : 2315 : case MAP_ADD:
193 : 2315 : return 2;
194 : 27047 : case LOAD_ATTR:
195 : 27047 : return 1;
196 : 0 : case LOAD_ATTR_INSTANCE_VALUE:
197 : 0 : return 1;
198 : 0 : case LOAD_ATTR_MODULE:
199 : 0 : return 1;
200 : 0 : case LOAD_ATTR_WITH_HINT:
201 : 0 : return 1;
202 : 0 : case LOAD_ATTR_SLOT:
203 : 0 : return 1;
204 : 0 : case LOAD_ATTR_CLASS:
205 : 0 : return 1;
206 : 0 : case LOAD_ATTR_PROPERTY:
207 : 0 : return 1;
208 : 0 : case LOAD_ATTR_GETATTRIBUTE_OVERRIDDEN:
209 : 0 : return 1;
210 : 0 : case STORE_ATTR_INSTANCE_VALUE:
211 : 0 : return 2;
212 : 0 : case STORE_ATTR_WITH_HINT:
213 : 0 : return 2;
214 : 0 : case STORE_ATTR_SLOT:
215 : 0 : return 2;
216 : 3069 : case COMPARE_OP:
217 : 3069 : return 2;
218 : 0 : case COMPARE_AND_BRANCH:
219 : 0 : return 2;
220 : 0 : case COMPARE_AND_BRANCH_FLOAT:
221 : 0 : return 2;
222 : 0 : case COMPARE_AND_BRANCH_INT:
223 : 0 : return 2;
224 : 0 : case COMPARE_AND_BRANCH_STR:
225 : 0 : return 2;
226 : 588 : case IS_OP:
227 : 588 : return 2;
228 : 991 : case CONTAINS_OP:
229 : 991 : return 2;
230 : 0 : case CHECK_EG_MATCH:
231 : 0 : return 2;
232 : 1372 : case CHECK_EXC_MATCH:
233 : 1372 : return 2;
234 : 1443 : case IMPORT_NAME:
235 : 1443 : return 2;
236 : 783 : case IMPORT_FROM:
237 : 783 : return 1;
238 : 0 : case JUMP_FORWARD:
239 : 0 : return 0;
240 : 0 : case JUMP_BACKWARD:
241 : 0 : return 0;
242 : 18192 : case POP_JUMP_IF_FALSE:
243 : 18192 : return 1;
244 : 4936 : case POP_JUMP_IF_TRUE:
245 : 4936 : return 1;
246 : 1768 : case POP_JUMP_IF_NOT_NONE:
247 : 1768 : return 1;
248 : 1778 : case POP_JUMP_IF_NONE:
249 : 1778 : return 1;
250 : 356 : case JUMP_IF_FALSE_OR_POP:
251 : 356 : return 1;
252 : 518 : case JUMP_IF_TRUE_OR_POP:
253 : 518 : return 1;
254 : 0 : case JUMP_BACKWARD_NO_INTERRUPT:
255 : 0 : return 0;
256 : 4 : case GET_LEN:
257 : 4 : return 1;
258 : 4 : case MATCH_CLASS:
259 : 4 : return 3;
260 : 0 : case MATCH_MAPPING:
261 : 0 : return 1;
262 : 5 : case MATCH_SEQUENCE:
263 : 5 : return 1;
264 : 0 : case MATCH_KEYS:
265 : 0 : return 2;
266 : 1705 : case GET_ITER:
267 : 1705 : return 1;
268 : 44 : case GET_YIELD_FROM_ITER:
269 : 44 : return 1;
270 : 3410 : case FOR_ITER:
271 : 3410 : return 1;
272 : 0 : case FOR_ITER_LIST:
273 : 0 : return 1;
274 : 0 : case FOR_ITER_TUPLE:
275 : 0 : return 1;
276 : 0 : case FOR_ITER_RANGE:
277 : 0 : return 1;
278 : 0 : case FOR_ITER_GEN:
279 : 0 : return 1;
280 : 5 : case BEFORE_ASYNC_WITH:
281 : 5 : return 1;
282 : 384 : case BEFORE_WITH:
283 : 384 : return 1;
284 : 389 : case WITH_EXCEPT_START:
285 : 389 : return 4;
286 : 1875 : case PUSH_EXC_INFO:
287 : 1875 : return 1;
288 : 0 : case LOAD_ATTR_METHOD_WITH_VALUES:
289 : 0 : return 1;
290 : 0 : case LOAD_ATTR_METHOD_NO_DICT:
291 : 0 : return 1;
292 : 0 : case LOAD_ATTR_METHOD_LAZY_DICT:
293 : 0 : return 1;
294 : 1196 : case KW_NAMES:
295 : 1196 : return 0;
296 : 28478 : case CALL:
297 : 28478 : return oparg + 2;
298 : 0 : case CALL_BOUND_METHOD_EXACT_ARGS:
299 : 0 : return oparg + 2;
300 : 0 : case CALL_PY_EXACT_ARGS:
301 : 0 : return oparg + 2;
302 : 0 : case CALL_PY_WITH_DEFAULTS:
303 : 0 : return oparg + 2;
304 : 0 : case CALL_NO_KW_TYPE_1:
305 : 0 : return oparg + 2;
306 : 0 : case CALL_NO_KW_STR_1:
307 : 0 : return oparg + 2;
308 : 0 : case CALL_NO_KW_TUPLE_1:
309 : 0 : return oparg + 2;
310 : 0 : case CALL_BUILTIN_CLASS:
311 : 0 : return oparg + 2;
312 : 0 : case CALL_NO_KW_BUILTIN_O:
313 : 0 : return oparg + 2;
314 : 0 : case CALL_NO_KW_BUILTIN_FAST:
315 : 0 : return oparg + 2;
316 : 0 : case CALL_BUILTIN_FAST_WITH_KEYWORDS:
317 : 0 : return oparg + 2;
318 : 0 : case CALL_NO_KW_LEN:
319 : 0 : return oparg + 2;
320 : 0 : case CALL_NO_KW_ISINSTANCE:
321 : 0 : return oparg + 2;
322 : 0 : case CALL_NO_KW_LIST_APPEND:
323 : 0 : return oparg + 2;
324 : 0 : case CALL_NO_KW_METHOD_DESCRIPTOR_O:
325 : 0 : return oparg + 2;
326 : 0 : case CALL_METHOD_DESCRIPTOR_FAST_WITH_KEYWORDS:
327 : 0 : return oparg + 2;
328 : 0 : case CALL_NO_KW_METHOD_DESCRIPTOR_NOARGS:
329 : 0 : return oparg + 2;
330 : 0 : case CALL_NO_KW_METHOD_DESCRIPTOR_FAST:
331 : 0 : return oparg + 2;
332 : 354 : case CALL_FUNCTION_EX:
333 : 354 : return ((oparg & 1) ? 1 : 0) + 3;
334 : 7722 : case MAKE_FUNCTION:
335 : 7722 : return ((oparg & 0x01) ? 1 : 0) + ((oparg & 0x02) ? 1 : 0) + ((oparg & 0x04) ? 1 : 0) + ((oparg & 0x08) ? 1 : 0) + 1;
336 : 532 : case RETURN_GENERATOR:
337 : 532 : return 0;
338 : 21 : case BUILD_SLICE:
339 [ + + ]: 21 : return ((oparg == 3) ? 1 : 0) + 2;
340 : 1824 : case FORMAT_VALUE:
341 : 1824 : return (((oparg & FVS_MASK) == FVS_HAVE_SPEC) ? 1 : 0) + 1;
342 : 2387 : case COPY:
343 : 2387 : return (oparg-1) + 1;
344 : 4261 : case BINARY_OP:
345 : 4261 : return 2;
346 : 657 : case SWAP:
347 : 657 : return (oparg-2) + 2;
348 : 0 : case EXTENDED_ARG:
349 : 0 : return 0;
350 : 0 : case CACHE:
351 : 0 : return 0;
352 : 0 : default:
353 : 0 : return -1;
354 : : }
355 : : }
356 : : #endif
357 : :
358 : : #ifndef NEED_OPCODE_TABLES
359 : : extern int _PyOpcode_num_pushed(int opcode, int oparg, bool jump);
360 : : #else
361 : : int
362 : 351088 : _PyOpcode_num_pushed(int opcode, int oparg, bool jump) {
363 [ + + + + : 351088 : switch(opcode) {
+ + + - -
- - - + +
+ + + + -
- - - - -
- - + + +
- - - - +
+ + - - +
+ - + - +
+ - - + +
- + + + -
+ + + + +
+ - - - +
+ + + - +
+ - - + +
- + + + +
+ + + + +
+ + + + +
+ + + - -
- - - - -
- - - + -
- - - + +
- + + + -
- + + + +
+ + - + +
- + - + +
+ - - - -
+ + + + -
- - + + -
- - - - -
- - - - -
- - - - -
- + + + +
+ + + + -
- - ]
364 : 1257 : case NOP:
365 : 1257 : return 0;
366 : 8676 : case RESUME:
367 : 8676 : return 0;
368 : 1050 : case LOAD_CLOSURE:
369 : 1050 : return 1;
370 : 157 : case LOAD_FAST_CHECK:
371 : 157 : return 1;
372 : 56117 : case LOAD_FAST:
373 : 56117 : return 1;
374 : 44477 : case LOAD_CONST:
375 : 44477 : return 1;
376 : 15279 : case STORE_FAST:
377 : 15279 : return 0;
378 : 0 : case LOAD_FAST__LOAD_FAST:
379 : 0 : return 1+1;
380 : 0 : case LOAD_FAST__LOAD_CONST:
381 : 0 : return 1+1;
382 : 0 : case STORE_FAST__LOAD_FAST:
383 : 0 : return 0+1;
384 : 0 : case STORE_FAST__STORE_FAST:
385 : 0 : return 0+0;
386 : 0 : case LOAD_CONST__LOAD_FAST:
387 : 0 : return 1+1;
388 : 12741 : case POP_TOP:
389 : 12741 : return 0;
390 : 3730 : case PUSH_NULL:
391 : 3730 : return 1;
392 : 1705 : case END_FOR:
393 : 1705 : return 0+0;
394 : 168 : case UNARY_NEGATIVE:
395 : 168 : return 1;
396 : 73 : case UNARY_NOT:
397 : 73 : return 1;
398 : 25 : case UNARY_INVERT:
399 : 25 : return 1;
400 : 0 : case BINARY_OP_MULTIPLY_INT:
401 : 0 : return 1;
402 : 0 : case BINARY_OP_MULTIPLY_FLOAT:
403 : 0 : return 1;
404 : 0 : case BINARY_OP_SUBTRACT_INT:
405 : 0 : return 1;
406 : 0 : case BINARY_OP_SUBTRACT_FLOAT:
407 : 0 : return 1;
408 : 0 : case BINARY_OP_ADD_UNICODE:
409 : 0 : return 1;
410 : 0 : case BINARY_OP_INPLACE_ADD_UNICODE:
411 : 0 : return 0;
412 : 0 : case BINARY_OP_ADD_FLOAT:
413 : 0 : return 1;
414 : 0 : case BINARY_OP_ADD_INT:
415 : 0 : return 1;
416 : 1860 : case BINARY_SUBSCR:
417 : 1860 : return 1;
418 : 751 : case BINARY_SLICE:
419 : 751 : return 1;
420 : 42 : case STORE_SLICE:
421 : 42 : return 0;
422 : 0 : case BINARY_SUBSCR_LIST_INT:
423 : 0 : return 1;
424 : 0 : case BINARY_SUBSCR_TUPLE_INT:
425 : 0 : return 1;
426 : 0 : case BINARY_SUBSCR_DICT:
427 : 0 : return 1;
428 : 0 : case BINARY_SUBSCR_GETITEM:
429 : 0 : return 1;
430 : 228 : case LIST_APPEND:
431 : 228 : return (oparg-1) + 1;
432 : 14 : case SET_ADD:
433 : 14 : return (oparg-1) + 1;
434 : 787 : case STORE_SUBSCR:
435 : 787 : return 0;
436 : 0 : case STORE_SUBSCR_LIST_INT:
437 : 0 : return 0;
438 : 0 : case STORE_SUBSCR_DICT:
439 : 0 : return 0;
440 : 119 : case DELETE_SUBSCR:
441 : 119 : return 0;
442 : 762 : case CALL_INTRINSIC_1:
443 : 762 : return 1;
444 : 0 : case CALL_INTRINSIC_2:
445 : 0 : return 1;
446 : 2205 : case RAISE_VARARGS:
447 : 2205 : return 0;
448 : 0 : case INTERPRETER_EXIT:
449 : 0 : return 0;
450 : 5637 : case RETURN_VALUE:
451 : 5637 : return 0;
452 : 5474 : case RETURN_CONST:
453 : 5474 : return 0;
454 : 0 : case GET_AITER:
455 : 0 : return 1;
456 : 0 : case GET_ANEXT:
457 : 0 : return 2;
458 : 146 : case GET_AWAITABLE:
459 : 146 : return 1;
460 : 380 : case SEND:
461 : 380 : return 2;
462 : 0 : case SEND_GEN:
463 : 0 : return 1;
464 : 635 : case YIELD_VALUE:
465 : 635 : return 1;
466 : 3477 : case POP_EXCEPT:
467 : 3477 : return 0;
468 : 4481 : case RERAISE:
469 : 4481 : return oparg;
470 : 0 : case END_ASYNC_FOR:
471 : 0 : return 0;
472 : 190 : case CLEANUP_THROW:
473 : 190 : return 2;
474 : 246 : case LOAD_ASSERTION_ERROR:
475 : 246 : return 1;
476 : 733 : case LOAD_BUILD_CLASS:
477 : 733 : return 1;
478 : 13083 : case STORE_NAME:
479 : 13083 : return 0;
480 : 132 : case DELETE_NAME:
481 : 132 : return 0;
482 : 1019 : case UNPACK_SEQUENCE:
483 : 1019 : return oparg;
484 : 0 : case UNPACK_SEQUENCE_TWO_TUPLE:
485 : 0 : return oparg;
486 : 0 : case UNPACK_SEQUENCE_TUPLE:
487 : 0 : return oparg;
488 : 0 : case UNPACK_SEQUENCE_LIST:
489 : 0 : return oparg;
490 : 8 : case UNPACK_EX:
491 : 8 : return (oparg & 0xFF) + (oparg >> 8) + 1;
492 : 3043 : case STORE_ATTR:
493 : 3043 : return 0;
494 : 20 : case DELETE_ATTR:
495 : 20 : return 0;
496 : 157 : case STORE_GLOBAL:
497 : 157 : return 0;
498 : 0 : case DELETE_GLOBAL:
499 : 0 : return 0;
500 : 6998 : case LOAD_NAME:
501 : 6998 : return 1;
502 : 21395 : case LOAD_GLOBAL:
503 : 21395 : return ((oparg & 1) ? 1 : 0) + 1;
504 : 0 : case LOAD_GLOBAL_MODULE:
505 : 0 : return ((oparg & 1) ? 1 : 0) + 1;
506 : 0 : case LOAD_GLOBAL_BUILTIN:
507 : 0 : return ((oparg & 1) ? 1 : 0) + 1;
508 : 493 : case DELETE_FAST:
509 : 493 : return 0;
510 : 699 : case MAKE_CELL:
511 : 699 : return 0;
512 : 0 : case DELETE_DEREF:
513 : 0 : return 0;
514 : 15 : case LOAD_CLASSDEREF:
515 : 15 : return 1;
516 : 2006 : case LOAD_DEREF:
517 : 2006 : return 1;
518 : 425 : case STORE_DEREF:
519 : 425 : return 0;
520 : 627 : case COPY_FREE_VARS:
521 : 627 : return 0;
522 : 1129 : case BUILD_STRING:
523 : 1129 : return 1;
524 : 2765 : case BUILD_TUPLE:
525 : 2765 : return 1;
526 : 1378 : case BUILD_LIST:
527 : 1378 : return 1;
528 : 311 : case LIST_EXTEND:
529 : 311 : return (oparg-1) + 1;
530 : 8 : case SET_UPDATE:
531 : 8 : return (oparg-1) + 1;
532 : 54 : case BUILD_SET:
533 : 54 : return 1;
534 : 629 : case BUILD_MAP:
535 : 629 : return 1;
536 : 1 : case SETUP_ANNOTATIONS:
537 : 1 : return 0;
538 : 333 : case BUILD_CONST_KEY_MAP:
539 : 333 : return 1;
540 : 144 : case DICT_UPDATE:
541 : 144 : return 0;
542 : 181 : case DICT_MERGE:
543 : 181 : return 0;
544 : 2315 : case MAP_ADD:
545 : 2315 : return 0;
546 : 27047 : case LOAD_ATTR:
547 : 27047 : return ((oparg & 1) ? 1 : 0) + 1;
548 : 0 : case LOAD_ATTR_INSTANCE_VALUE:
549 : 0 : return ((oparg & 1) ? 1 : 0) + 1;
550 : 0 : case LOAD_ATTR_MODULE:
551 : 0 : return ((oparg & 1) ? 1 : 0) + 1;
552 : 0 : case LOAD_ATTR_WITH_HINT:
553 : 0 : return ((oparg & 1) ? 1 : 0) + 1;
554 : 0 : case LOAD_ATTR_SLOT:
555 : 0 : return ((oparg & 1) ? 1 : 0) + 1;
556 : 0 : case LOAD_ATTR_CLASS:
557 : 0 : return ((oparg & 1) ? 1 : 0) + 1;
558 : 0 : case LOAD_ATTR_PROPERTY:
559 : 0 : return ((oparg & 1) ? 1 : 0) + 1;
560 : 0 : case LOAD_ATTR_GETATTRIBUTE_OVERRIDDEN:
561 : 0 : return ((oparg & 1) ? 1 : 0) + 1;
562 : 0 : case STORE_ATTR_INSTANCE_VALUE:
563 : 0 : return 0;
564 : 0 : case STORE_ATTR_WITH_HINT:
565 : 0 : return 0;
566 : 0 : case STORE_ATTR_SLOT:
567 : 0 : return 0;
568 : 3069 : case COMPARE_OP:
569 : 3069 : return 1;
570 : 0 : case COMPARE_AND_BRANCH:
571 : 0 : return 0;
572 : 0 : case COMPARE_AND_BRANCH_FLOAT:
573 : 0 : return 0;
574 : 0 : case COMPARE_AND_BRANCH_INT:
575 : 0 : return 0;
576 : 0 : case COMPARE_AND_BRANCH_STR:
577 : 0 : return 0;
578 : 588 : case IS_OP:
579 : 588 : return 1;
580 : 991 : case CONTAINS_OP:
581 : 991 : return 1;
582 : 0 : case CHECK_EG_MATCH:
583 : 0 : return 2;
584 : 1372 : case CHECK_EXC_MATCH:
585 : 1372 : return 2;
586 : 1443 : case IMPORT_NAME:
587 : 1443 : return 1;
588 : 783 : case IMPORT_FROM:
589 : 783 : return 2;
590 : 0 : case JUMP_FORWARD:
591 : 0 : return 0;
592 : 0 : case JUMP_BACKWARD:
593 : 0 : return 0;
594 : 18192 : case POP_JUMP_IF_FALSE:
595 : 18192 : return 0;
596 : 4936 : case POP_JUMP_IF_TRUE:
597 : 4936 : return 0;
598 : 1768 : case POP_JUMP_IF_NOT_NONE:
599 : 1768 : return 0;
600 : 1778 : case POP_JUMP_IF_NONE:
601 : 1778 : return 0;
602 : 356 : case JUMP_IF_FALSE_OR_POP:
603 : 356 : return (jump ? 1 : 0);
604 : 518 : case JUMP_IF_TRUE_OR_POP:
605 : 518 : return (jump ? 1 : 0);
606 : 0 : case JUMP_BACKWARD_NO_INTERRUPT:
607 : 0 : return 0;
608 : 4 : case GET_LEN:
609 : 4 : return 2;
610 : 4 : case MATCH_CLASS:
611 : 4 : return 1;
612 : 0 : case MATCH_MAPPING:
613 : 0 : return 2;
614 : 5 : case MATCH_SEQUENCE:
615 : 5 : return 2;
616 : 0 : case MATCH_KEYS:
617 : 0 : return 3;
618 : 1705 : case GET_ITER:
619 : 1705 : return 1;
620 : 44 : case GET_YIELD_FROM_ITER:
621 : 44 : return 1;
622 : 3410 : case FOR_ITER:
623 : 3410 : return 2;
624 : 0 : case FOR_ITER_LIST:
625 : 0 : return 2;
626 : 0 : case FOR_ITER_TUPLE:
627 : 0 : return 2;
628 : 0 : case FOR_ITER_RANGE:
629 : 0 : return 2;
630 : 0 : case FOR_ITER_GEN:
631 : 0 : return 2;
632 : 5 : case BEFORE_ASYNC_WITH:
633 : 5 : return 2;
634 : 384 : case BEFORE_WITH:
635 : 384 : return 2;
636 : 389 : case WITH_EXCEPT_START:
637 : 389 : return 5;
638 : 1875 : case PUSH_EXC_INFO:
639 : 1875 : return 2;
640 : 0 : case LOAD_ATTR_METHOD_WITH_VALUES:
641 : 0 : return ((oparg & 1) ? 1 : 0) + 1;
642 : 0 : case LOAD_ATTR_METHOD_NO_DICT:
643 : 0 : return ((oparg & 1) ? 1 : 0) + 1;
644 : 0 : case LOAD_ATTR_METHOD_LAZY_DICT:
645 : 0 : return ((oparg & 1) ? 1 : 0) + 1;
646 : 1196 : case KW_NAMES:
647 : 1196 : return 0;
648 : 28478 : case CALL:
649 : 28478 : return 1;
650 : 0 : case CALL_BOUND_METHOD_EXACT_ARGS:
651 : 0 : return 1;
652 : 0 : case CALL_PY_EXACT_ARGS:
653 : 0 : return 1;
654 : 0 : case CALL_PY_WITH_DEFAULTS:
655 : 0 : return 1;
656 : 0 : case CALL_NO_KW_TYPE_1:
657 : 0 : return 1;
658 : 0 : case CALL_NO_KW_STR_1:
659 : 0 : return 1;
660 : 0 : case CALL_NO_KW_TUPLE_1:
661 : 0 : return 1;
662 : 0 : case CALL_BUILTIN_CLASS:
663 : 0 : return 1;
664 : 0 : case CALL_NO_KW_BUILTIN_O:
665 : 0 : return 1;
666 : 0 : case CALL_NO_KW_BUILTIN_FAST:
667 : 0 : return 1;
668 : 0 : case CALL_BUILTIN_FAST_WITH_KEYWORDS:
669 : 0 : return 1;
670 : 0 : case CALL_NO_KW_LEN:
671 : 0 : return 1;
672 : 0 : case CALL_NO_KW_ISINSTANCE:
673 : 0 : return 1;
674 : 0 : case CALL_NO_KW_LIST_APPEND:
675 : 0 : return 1;
676 : 0 : case CALL_NO_KW_METHOD_DESCRIPTOR_O:
677 : 0 : return 1;
678 : 0 : case CALL_METHOD_DESCRIPTOR_FAST_WITH_KEYWORDS:
679 : 0 : return 1;
680 : 0 : case CALL_NO_KW_METHOD_DESCRIPTOR_NOARGS:
681 : 0 : return 1;
682 : 0 : case CALL_NO_KW_METHOD_DESCRIPTOR_FAST:
683 : 0 : return 1;
684 : 354 : case CALL_FUNCTION_EX:
685 : 354 : return 1;
686 : 7722 : case MAKE_FUNCTION:
687 : 7722 : return 1;
688 : 532 : case RETURN_GENERATOR:
689 : 532 : return 0;
690 : 21 : case BUILD_SLICE:
691 : 21 : return 1;
692 : 1824 : case FORMAT_VALUE:
693 : 1824 : return 1;
694 : 2387 : case COPY:
695 : 2387 : return (oparg-1) + 2;
696 : 4261 : case BINARY_OP:
697 : 4261 : return 1;
698 : 657 : case SWAP:
699 : 657 : return (oparg-2) + 2;
700 : 0 : case EXTENDED_ARG:
701 : 0 : return 0;
702 : 0 : case CACHE:
703 : 0 : return 0;
704 : 0 : default:
705 : 0 : return -1;
706 : : }
707 : : }
708 : : #endif
709 : :
710 : : enum InstructionFormat { INSTR_FMT_IB, INSTR_FMT_IBC, INSTR_FMT_IBC0, INSTR_FMT_IBC000, INSTR_FMT_IBC00000000, INSTR_FMT_IBIB, INSTR_FMT_IX, INSTR_FMT_IXC, INSTR_FMT_IXC000 };
711 : : struct opcode_metadata {
712 : : bool valid_entry;
713 : : enum InstructionFormat instr_format;
714 : : };
715 : :
716 : : #ifndef NEED_OPCODE_TABLES
717 : : extern const struct opcode_metadata _PyOpcode_opcode_metadata[256];
718 : : #else
719 : : const struct opcode_metadata _PyOpcode_opcode_metadata[256] = {
720 : : [NOP] = { true, INSTR_FMT_IX },
721 : : [RESUME] = { true, INSTR_FMT_IB },
722 : : [LOAD_CLOSURE] = { true, INSTR_FMT_IB },
723 : : [LOAD_FAST_CHECK] = { true, INSTR_FMT_IB },
724 : : [LOAD_FAST] = { true, INSTR_FMT_IB },
725 : : [LOAD_CONST] = { true, INSTR_FMT_IB },
726 : : [STORE_FAST] = { true, INSTR_FMT_IB },
727 : : [LOAD_FAST__LOAD_FAST] = { true, INSTR_FMT_IBIB },
728 : : [LOAD_FAST__LOAD_CONST] = { true, INSTR_FMT_IBIB },
729 : : [STORE_FAST__LOAD_FAST] = { true, INSTR_FMT_IBIB },
730 : : [STORE_FAST__STORE_FAST] = { true, INSTR_FMT_IBIB },
731 : : [LOAD_CONST__LOAD_FAST] = { true, INSTR_FMT_IBIB },
732 : : [POP_TOP] = { true, INSTR_FMT_IX },
733 : : [PUSH_NULL] = { true, INSTR_FMT_IX },
734 : : [END_FOR] = { true, INSTR_FMT_IB },
735 : : [UNARY_NEGATIVE] = { true, INSTR_FMT_IX },
736 : : [UNARY_NOT] = { true, INSTR_FMT_IX },
737 : : [UNARY_INVERT] = { true, INSTR_FMT_IX },
738 : : [BINARY_OP_MULTIPLY_INT] = { true, INSTR_FMT_IXC },
739 : : [BINARY_OP_MULTIPLY_FLOAT] = { true, INSTR_FMT_IXC },
740 : : [BINARY_OP_SUBTRACT_INT] = { true, INSTR_FMT_IXC },
741 : : [BINARY_OP_SUBTRACT_FLOAT] = { true, INSTR_FMT_IXC },
742 : : [BINARY_OP_ADD_UNICODE] = { true, INSTR_FMT_IXC },
743 : : [BINARY_OP_INPLACE_ADD_UNICODE] = { true, INSTR_FMT_IX },
744 : : [BINARY_OP_ADD_FLOAT] = { true, INSTR_FMT_IXC },
745 : : [BINARY_OP_ADD_INT] = { true, INSTR_FMT_IXC },
746 : : [BINARY_SUBSCR] = { true, INSTR_FMT_IXC000 },
747 : : [BINARY_SLICE] = { true, INSTR_FMT_IX },
748 : : [STORE_SLICE] = { true, INSTR_FMT_IX },
749 : : [BINARY_SUBSCR_LIST_INT] = { true, INSTR_FMT_IXC000 },
750 : : [BINARY_SUBSCR_TUPLE_INT] = { true, INSTR_FMT_IXC000 },
751 : : [BINARY_SUBSCR_DICT] = { true, INSTR_FMT_IXC000 },
752 : : [BINARY_SUBSCR_GETITEM] = { true, INSTR_FMT_IXC000 },
753 : : [LIST_APPEND] = { true, INSTR_FMT_IB },
754 : : [SET_ADD] = { true, INSTR_FMT_IB },
755 : : [STORE_SUBSCR] = { true, INSTR_FMT_IXC },
756 : : [STORE_SUBSCR_LIST_INT] = { true, INSTR_FMT_IXC },
757 : : [STORE_SUBSCR_DICT] = { true, INSTR_FMT_IXC },
758 : : [DELETE_SUBSCR] = { true, INSTR_FMT_IX },
759 : : [CALL_INTRINSIC_1] = { true, INSTR_FMT_IB },
760 : : [CALL_INTRINSIC_2] = { true, INSTR_FMT_IB },
761 : : [RAISE_VARARGS] = { true, INSTR_FMT_IB },
762 : : [INTERPRETER_EXIT] = { true, INSTR_FMT_IX },
763 : : [RETURN_VALUE] = { true, INSTR_FMT_IX },
764 : : [RETURN_CONST] = { true, INSTR_FMT_IB },
765 : : [GET_AITER] = { true, INSTR_FMT_IX },
766 : : [GET_ANEXT] = { true, INSTR_FMT_IX },
767 : : [GET_AWAITABLE] = { true, INSTR_FMT_IB },
768 : : [SEND] = { true, INSTR_FMT_IBC },
769 : : [SEND_GEN] = { true, INSTR_FMT_IBC },
770 : : [YIELD_VALUE] = { true, INSTR_FMT_IX },
771 : : [POP_EXCEPT] = { true, INSTR_FMT_IX },
772 : : [RERAISE] = { true, INSTR_FMT_IB },
773 : : [END_ASYNC_FOR] = { true, INSTR_FMT_IX },
774 : : [CLEANUP_THROW] = { true, INSTR_FMT_IX },
775 : : [LOAD_ASSERTION_ERROR] = { true, INSTR_FMT_IX },
776 : : [LOAD_BUILD_CLASS] = { true, INSTR_FMT_IX },
777 : : [STORE_NAME] = { true, INSTR_FMT_IB },
778 : : [DELETE_NAME] = { true, INSTR_FMT_IB },
779 : : [UNPACK_SEQUENCE] = { true, INSTR_FMT_IBC },
780 : : [UNPACK_SEQUENCE_TWO_TUPLE] = { true, INSTR_FMT_IBC },
781 : : [UNPACK_SEQUENCE_TUPLE] = { true, INSTR_FMT_IBC },
782 : : [UNPACK_SEQUENCE_LIST] = { true, INSTR_FMT_IBC },
783 : : [UNPACK_EX] = { true, INSTR_FMT_IB },
784 : : [STORE_ATTR] = { true, INSTR_FMT_IBC000 },
785 : : [DELETE_ATTR] = { true, INSTR_FMT_IB },
786 : : [STORE_GLOBAL] = { true, INSTR_FMT_IB },
787 : : [DELETE_GLOBAL] = { true, INSTR_FMT_IB },
788 : : [LOAD_NAME] = { true, INSTR_FMT_IB },
789 : : [LOAD_GLOBAL] = { true, INSTR_FMT_IBC000 },
790 : : [LOAD_GLOBAL_MODULE] = { true, INSTR_FMT_IBC000 },
791 : : [LOAD_GLOBAL_BUILTIN] = { true, INSTR_FMT_IBC000 },
792 : : [DELETE_FAST] = { true, INSTR_FMT_IB },
793 : : [MAKE_CELL] = { true, INSTR_FMT_IB },
794 : : [DELETE_DEREF] = { true, INSTR_FMT_IB },
795 : : [LOAD_CLASSDEREF] = { true, INSTR_FMT_IB },
796 : : [LOAD_DEREF] = { true, INSTR_FMT_IB },
797 : : [STORE_DEREF] = { true, INSTR_FMT_IB },
798 : : [COPY_FREE_VARS] = { true, INSTR_FMT_IB },
799 : : [BUILD_STRING] = { true, INSTR_FMT_IB },
800 : : [BUILD_TUPLE] = { true, INSTR_FMT_IB },
801 : : [BUILD_LIST] = { true, INSTR_FMT_IB },
802 : : [LIST_EXTEND] = { true, INSTR_FMT_IB },
803 : : [SET_UPDATE] = { true, INSTR_FMT_IB },
804 : : [BUILD_SET] = { true, INSTR_FMT_IB },
805 : : [BUILD_MAP] = { true, INSTR_FMT_IB },
806 : : [SETUP_ANNOTATIONS] = { true, INSTR_FMT_IX },
807 : : [BUILD_CONST_KEY_MAP] = { true, INSTR_FMT_IB },
808 : : [DICT_UPDATE] = { true, INSTR_FMT_IB },
809 : : [DICT_MERGE] = { true, INSTR_FMT_IB },
810 : : [MAP_ADD] = { true, INSTR_FMT_IB },
811 : : [LOAD_ATTR] = { true, INSTR_FMT_IBC00000000 },
812 : : [LOAD_ATTR_INSTANCE_VALUE] = { true, INSTR_FMT_IBC00000000 },
813 : : [LOAD_ATTR_MODULE] = { true, INSTR_FMT_IBC00000000 },
814 : : [LOAD_ATTR_WITH_HINT] = { true, INSTR_FMT_IBC00000000 },
815 : : [LOAD_ATTR_SLOT] = { true, INSTR_FMT_IBC00000000 },
816 : : [LOAD_ATTR_CLASS] = { true, INSTR_FMT_IBC00000000 },
817 : : [LOAD_ATTR_PROPERTY] = { true, INSTR_FMT_IBC00000000 },
818 : : [LOAD_ATTR_GETATTRIBUTE_OVERRIDDEN] = { true, INSTR_FMT_IBC00000000 },
819 : : [STORE_ATTR_INSTANCE_VALUE] = { true, INSTR_FMT_IXC000 },
820 : : [STORE_ATTR_WITH_HINT] = { true, INSTR_FMT_IBC000 },
821 : : [STORE_ATTR_SLOT] = { true, INSTR_FMT_IXC000 },
822 : : [COMPARE_OP] = { true, INSTR_FMT_IBC },
823 : : [COMPARE_AND_BRANCH] = { true, INSTR_FMT_IBC0 },
824 : : [COMPARE_AND_BRANCH_FLOAT] = { true, INSTR_FMT_IBC0 },
825 : : [COMPARE_AND_BRANCH_INT] = { true, INSTR_FMT_IBC0 },
826 : : [COMPARE_AND_BRANCH_STR] = { true, INSTR_FMT_IBC0 },
827 : : [IS_OP] = { true, INSTR_FMT_IB },
828 : : [CONTAINS_OP] = { true, INSTR_FMT_IB },
829 : : [CHECK_EG_MATCH] = { true, INSTR_FMT_IX },
830 : : [CHECK_EXC_MATCH] = { true, INSTR_FMT_IX },
831 : : [IMPORT_NAME] = { true, INSTR_FMT_IB },
832 : : [IMPORT_FROM] = { true, INSTR_FMT_IB },
833 : : [JUMP_FORWARD] = { true, INSTR_FMT_IB },
834 : : [JUMP_BACKWARD] = { true, INSTR_FMT_IB },
835 : : [POP_JUMP_IF_FALSE] = { true, INSTR_FMT_IB },
836 : : [POP_JUMP_IF_TRUE] = { true, INSTR_FMT_IB },
837 : : [POP_JUMP_IF_NOT_NONE] = { true, INSTR_FMT_IB },
838 : : [POP_JUMP_IF_NONE] = { true, INSTR_FMT_IB },
839 : : [JUMP_IF_FALSE_OR_POP] = { true, INSTR_FMT_IB },
840 : : [JUMP_IF_TRUE_OR_POP] = { true, INSTR_FMT_IB },
841 : : [JUMP_BACKWARD_NO_INTERRUPT] = { true, INSTR_FMT_IB },
842 : : [GET_LEN] = { true, INSTR_FMT_IX },
843 : : [MATCH_CLASS] = { true, INSTR_FMT_IB },
844 : : [MATCH_MAPPING] = { true, INSTR_FMT_IX },
845 : : [MATCH_SEQUENCE] = { true, INSTR_FMT_IX },
846 : : [MATCH_KEYS] = { true, INSTR_FMT_IX },
847 : : [GET_ITER] = { true, INSTR_FMT_IX },
848 : : [GET_YIELD_FROM_ITER] = { true, INSTR_FMT_IX },
849 : : [FOR_ITER] = { true, INSTR_FMT_IBC },
850 : : [FOR_ITER_LIST] = { true, INSTR_FMT_IBC },
851 : : [FOR_ITER_TUPLE] = { true, INSTR_FMT_IBC },
852 : : [FOR_ITER_RANGE] = { true, INSTR_FMT_IBC },
853 : : [FOR_ITER_GEN] = { true, INSTR_FMT_IBC },
854 : : [BEFORE_ASYNC_WITH] = { true, INSTR_FMT_IX },
855 : : [BEFORE_WITH] = { true, INSTR_FMT_IX },
856 : : [WITH_EXCEPT_START] = { true, INSTR_FMT_IX },
857 : : [PUSH_EXC_INFO] = { true, INSTR_FMT_IX },
858 : : [LOAD_ATTR_METHOD_WITH_VALUES] = { true, INSTR_FMT_IBC00000000 },
859 : : [LOAD_ATTR_METHOD_NO_DICT] = { true, INSTR_FMT_IBC00000000 },
860 : : [LOAD_ATTR_METHOD_LAZY_DICT] = { true, INSTR_FMT_IBC00000000 },
861 : : [KW_NAMES] = { true, INSTR_FMT_IB },
862 : : [CALL] = { true, INSTR_FMT_IBC000 },
863 : : [CALL_BOUND_METHOD_EXACT_ARGS] = { true, INSTR_FMT_IBC000 },
864 : : [CALL_PY_EXACT_ARGS] = { true, INSTR_FMT_IBC000 },
865 : : [CALL_PY_WITH_DEFAULTS] = { true, INSTR_FMT_IBC000 },
866 : : [CALL_NO_KW_TYPE_1] = { true, INSTR_FMT_IBC000 },
867 : : [CALL_NO_KW_STR_1] = { true, INSTR_FMT_IBC000 },
868 : : [CALL_NO_KW_TUPLE_1] = { true, INSTR_FMT_IBC000 },
869 : : [CALL_BUILTIN_CLASS] = { true, INSTR_FMT_IBC000 },
870 : : [CALL_NO_KW_BUILTIN_O] = { true, INSTR_FMT_IBC000 },
871 : : [CALL_NO_KW_BUILTIN_FAST] = { true, INSTR_FMT_IBC000 },
872 : : [CALL_BUILTIN_FAST_WITH_KEYWORDS] = { true, INSTR_FMT_IBC000 },
873 : : [CALL_NO_KW_LEN] = { true, INSTR_FMT_IBC000 },
874 : : [CALL_NO_KW_ISINSTANCE] = { true, INSTR_FMT_IBC000 },
875 : : [CALL_NO_KW_LIST_APPEND] = { true, INSTR_FMT_IBC000 },
876 : : [CALL_NO_KW_METHOD_DESCRIPTOR_O] = { true, INSTR_FMT_IBC000 },
877 : : [CALL_METHOD_DESCRIPTOR_FAST_WITH_KEYWORDS] = { true, INSTR_FMT_IBC000 },
878 : : [CALL_NO_KW_METHOD_DESCRIPTOR_NOARGS] = { true, INSTR_FMT_IBC000 },
879 : : [CALL_NO_KW_METHOD_DESCRIPTOR_FAST] = { true, INSTR_FMT_IBC000 },
880 : : [CALL_FUNCTION_EX] = { true, INSTR_FMT_IB },
881 : : [MAKE_FUNCTION] = { true, INSTR_FMT_IB },
882 : : [RETURN_GENERATOR] = { true, INSTR_FMT_IX },
883 : : [BUILD_SLICE] = { true, INSTR_FMT_IB },
884 : : [FORMAT_VALUE] = { true, INSTR_FMT_IB },
885 : : [COPY] = { true, INSTR_FMT_IB },
886 : : [BINARY_OP] = { true, INSTR_FMT_IBC },
887 : : [SWAP] = { true, INSTR_FMT_IB },
888 : : [EXTENDED_ARG] = { true, INSTR_FMT_IB },
889 : : [CACHE] = { true, INSTR_FMT_IX },
890 : : };
891 : : #endif
|