• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // This file is generated by Tools/cases_generator/opcode_metadata_generator.py
2 // from:
3 //   Python/bytecodes.c
4 // Do not edit!
5 
6 #ifndef Py_CORE_OPCODE_METADATA_H
7 #define Py_CORE_OPCODE_METADATA_H
8 #ifdef __cplusplus
9 extern "C" {
10 #endif
11 
12 #ifndef Py_BUILD_CORE
13 #  error "this header requires Py_BUILD_CORE define"
14 #endif
15 
16 #include <stdbool.h>              // bool
17 #include "opcode_ids.h"
18 
19 
20 #define IS_PSEUDO_INSTR(OP)  ( \
21     ((OP) == LOAD_CLOSURE) || \
22     ((OP) == STORE_FAST_MAYBE_NULL) || \
23     ((OP) == LOAD_SUPER_METHOD) || \
24     ((OP) == LOAD_ZERO_SUPER_METHOD) || \
25     ((OP) == LOAD_ZERO_SUPER_ATTR) || \
26     ((OP) == LOAD_METHOD) || \
27     ((OP) == JUMP) || \
28     ((OP) == JUMP_NO_INTERRUPT) || \
29     ((OP) == SETUP_FINALLY) || \
30     ((OP) == SETUP_CLEANUP) || \
31     ((OP) == SETUP_WITH) || \
32     ((OP) == POP_BLOCK) || \
33     0)
34 
35 #include "pycore_uop_ids.h"
36 extern int _PyOpcode_num_popped(int opcode, int oparg);
37 #ifdef NEED_OPCODE_METADATA
_PyOpcode_num_popped(int opcode,int oparg)38 int _PyOpcode_num_popped(int opcode, int oparg)  {
39     switch(opcode) {
40         case BEFORE_ASYNC_WITH:
41             return 1;
42         case BEFORE_WITH:
43             return 1;
44         case BINARY_OP:
45             return 2;
46         case BINARY_OP_ADD_FLOAT:
47             return 2;
48         case BINARY_OP_ADD_INT:
49             return 2;
50         case BINARY_OP_ADD_UNICODE:
51             return 2;
52         case BINARY_OP_INPLACE_ADD_UNICODE:
53             return 2;
54         case BINARY_OP_MULTIPLY_FLOAT:
55             return 2;
56         case BINARY_OP_MULTIPLY_INT:
57             return 2;
58         case BINARY_OP_SUBTRACT_FLOAT:
59             return 2;
60         case BINARY_OP_SUBTRACT_INT:
61             return 2;
62         case BINARY_SLICE:
63             return 3;
64         case BINARY_SUBSCR:
65             return 2;
66         case BINARY_SUBSCR_DICT:
67             return 2;
68         case BINARY_SUBSCR_GETITEM:
69             return 2;
70         case BINARY_SUBSCR_LIST_INT:
71             return 2;
72         case BINARY_SUBSCR_STR_INT:
73             return 2;
74         case BINARY_SUBSCR_TUPLE_INT:
75             return 2;
76         case BUILD_CONST_KEY_MAP:
77             return 1 + oparg;
78         case BUILD_LIST:
79             return oparg;
80         case BUILD_MAP:
81             return oparg*2;
82         case BUILD_SET:
83             return oparg;
84         case BUILD_SLICE:
85             return 2 + ((oparg == 3) ? 1 : 0);
86         case BUILD_STRING:
87             return oparg;
88         case BUILD_TUPLE:
89             return oparg;
90         case CACHE:
91             return 0;
92         case CALL:
93             return 2 + oparg;
94         case CALL_ALLOC_AND_ENTER_INIT:
95             return 2 + oparg;
96         case CALL_BOUND_METHOD_EXACT_ARGS:
97             return 2 + oparg;
98         case CALL_BOUND_METHOD_GENERAL:
99             return 2 + oparg;
100         case CALL_BUILTIN_CLASS:
101             return 2 + oparg;
102         case CALL_BUILTIN_FAST:
103             return 2 + oparg;
104         case CALL_BUILTIN_FAST_WITH_KEYWORDS:
105             return 2 + oparg;
106         case CALL_BUILTIN_O:
107             return 2 + oparg;
108         case CALL_FUNCTION_EX:
109             return 3 + (oparg & 1);
110         case CALL_INTRINSIC_1:
111             return 1;
112         case CALL_INTRINSIC_2:
113             return 2;
114         case CALL_ISINSTANCE:
115             return 2 + oparg;
116         case CALL_KW:
117             return 3 + oparg;
118         case CALL_LEN:
119             return 2 + oparg;
120         case CALL_LIST_APPEND:
121             return 3;
122         case CALL_METHOD_DESCRIPTOR_FAST:
123             return 2 + oparg;
124         case CALL_METHOD_DESCRIPTOR_FAST_WITH_KEYWORDS:
125             return 2 + oparg;
126         case CALL_METHOD_DESCRIPTOR_NOARGS:
127             return 2 + oparg;
128         case CALL_METHOD_DESCRIPTOR_O:
129             return 2 + oparg;
130         case CALL_NON_PY_GENERAL:
131             return 2 + oparg;
132         case CALL_PY_EXACT_ARGS:
133             return 2 + oparg;
134         case CALL_PY_GENERAL:
135             return 2 + oparg;
136         case CALL_STR_1:
137             return 3;
138         case CALL_TUPLE_1:
139             return 3;
140         case CALL_TYPE_1:
141             return 3;
142         case CHECK_EG_MATCH:
143             return 2;
144         case CHECK_EXC_MATCH:
145             return 2;
146         case CLEANUP_THROW:
147             return 3;
148         case COMPARE_OP:
149             return 2;
150         case COMPARE_OP_FLOAT:
151             return 2;
152         case COMPARE_OP_INT:
153             return 2;
154         case COMPARE_OP_STR:
155             return 2;
156         case CONTAINS_OP:
157             return 2;
158         case CONTAINS_OP_DICT:
159             return 2;
160         case CONTAINS_OP_SET:
161             return 2;
162         case CONVERT_VALUE:
163             return 1;
164         case COPY:
165             return 1 + (oparg-1);
166         case COPY_FREE_VARS:
167             return 0;
168         case DELETE_ATTR:
169             return 1;
170         case DELETE_DEREF:
171             return 0;
172         case DELETE_FAST:
173             return 0;
174         case DELETE_GLOBAL:
175             return 0;
176         case DELETE_NAME:
177             return 0;
178         case DELETE_SUBSCR:
179             return 2;
180         case DICT_MERGE:
181             return 5 + (oparg - 1);
182         case DICT_UPDATE:
183             return 2 + (oparg - 1);
184         case END_ASYNC_FOR:
185             return 2;
186         case END_FOR:
187             return 1;
188         case END_SEND:
189             return 2;
190         case ENTER_EXECUTOR:
191             return 0;
192         case EXIT_INIT_CHECK:
193             return 1;
194         case EXTENDED_ARG:
195             return 0;
196         case FORMAT_SIMPLE:
197             return 1;
198         case FORMAT_WITH_SPEC:
199             return 2;
200         case FOR_ITER:
201             return 1;
202         case FOR_ITER_GEN:
203             return 1;
204         case FOR_ITER_LIST:
205             return 1;
206         case FOR_ITER_RANGE:
207             return 1;
208         case FOR_ITER_TUPLE:
209             return 1;
210         case GET_AITER:
211             return 1;
212         case GET_ANEXT:
213             return 1;
214         case GET_AWAITABLE:
215             return 1;
216         case GET_ITER:
217             return 1;
218         case GET_LEN:
219             return 1;
220         case GET_YIELD_FROM_ITER:
221             return 1;
222         case IMPORT_FROM:
223             return 1;
224         case IMPORT_NAME:
225             return 2;
226         case INSTRUMENTED_CALL:
227             return 0;
228         case INSTRUMENTED_CALL_FUNCTION_EX:
229             return 0;
230         case INSTRUMENTED_CALL_KW:
231             return 0;
232         case INSTRUMENTED_END_FOR:
233             return 2;
234         case INSTRUMENTED_END_SEND:
235             return 2;
236         case INSTRUMENTED_FOR_ITER:
237             return 0;
238         case INSTRUMENTED_INSTRUCTION:
239             return 0;
240         case INSTRUMENTED_JUMP_BACKWARD:
241             return 0;
242         case INSTRUMENTED_JUMP_FORWARD:
243             return 0;
244         case INSTRUMENTED_LOAD_SUPER_ATTR:
245             return 3;
246         case INSTRUMENTED_POP_JUMP_IF_FALSE:
247             return 0;
248         case INSTRUMENTED_POP_JUMP_IF_NONE:
249             return 0;
250         case INSTRUMENTED_POP_JUMP_IF_NOT_NONE:
251             return 0;
252         case INSTRUMENTED_POP_JUMP_IF_TRUE:
253             return 0;
254         case INSTRUMENTED_RESUME:
255             return 0;
256         case INSTRUMENTED_RETURN_CONST:
257             return 0;
258         case INSTRUMENTED_RETURN_VALUE:
259             return 1;
260         case INSTRUMENTED_YIELD_VALUE:
261             return 1;
262         case INTERPRETER_EXIT:
263             return 1;
264         case IS_OP:
265             return 2;
266         case JUMP_BACKWARD:
267             return 0;
268         case JUMP_BACKWARD_NO_INTERRUPT:
269             return 0;
270         case JUMP_FORWARD:
271             return 0;
272         case LIST_APPEND:
273             return 2 + (oparg-1);
274         case LIST_EXTEND:
275             return 2 + (oparg-1);
276         case LOAD_ASSERTION_ERROR:
277             return 0;
278         case LOAD_ATTR:
279             return 1;
280         case LOAD_ATTR_CLASS:
281             return 1;
282         case LOAD_ATTR_GETATTRIBUTE_OVERRIDDEN:
283             return 1;
284         case LOAD_ATTR_INSTANCE_VALUE:
285             return 1;
286         case LOAD_ATTR_METHOD_LAZY_DICT:
287             return 1;
288         case LOAD_ATTR_METHOD_NO_DICT:
289             return 1;
290         case LOAD_ATTR_METHOD_WITH_VALUES:
291             return 1;
292         case LOAD_ATTR_MODULE:
293             return 1;
294         case LOAD_ATTR_NONDESCRIPTOR_NO_DICT:
295             return 1;
296         case LOAD_ATTR_NONDESCRIPTOR_WITH_VALUES:
297             return 1;
298         case LOAD_ATTR_PROPERTY:
299             return 1;
300         case LOAD_ATTR_SLOT:
301             return 1;
302         case LOAD_ATTR_WITH_HINT:
303             return 1;
304         case LOAD_BUILD_CLASS:
305             return 0;
306         case LOAD_CONST:
307             return 0;
308         case LOAD_DEREF:
309             return 0;
310         case LOAD_FAST:
311             return 0;
312         case LOAD_FAST_AND_CLEAR:
313             return 0;
314         case LOAD_FAST_CHECK:
315             return 0;
316         case LOAD_FAST_LOAD_FAST:
317             return 0;
318         case LOAD_FROM_DICT_OR_DEREF:
319             return 1;
320         case LOAD_FROM_DICT_OR_GLOBALS:
321             return 1;
322         case LOAD_GLOBAL:
323             return 0;
324         case LOAD_GLOBAL_BUILTIN:
325             return 0;
326         case LOAD_GLOBAL_MODULE:
327             return 0;
328         case LOAD_LOCALS:
329             return 0;
330         case LOAD_NAME:
331             return 0;
332         case LOAD_SUPER_ATTR:
333             return 3;
334         case LOAD_SUPER_ATTR_ATTR:
335             return 3;
336         case LOAD_SUPER_ATTR_METHOD:
337             return 3;
338         case MAKE_CELL:
339             return 0;
340         case MAKE_FUNCTION:
341             return 1;
342         case MAP_ADD:
343             return 3 + (oparg - 1);
344         case MATCH_CLASS:
345             return 3;
346         case MATCH_KEYS:
347             return 2;
348         case MATCH_MAPPING:
349             return 1;
350         case MATCH_SEQUENCE:
351             return 1;
352         case NOP:
353             return 0;
354         case POP_EXCEPT:
355             return 1;
356         case POP_JUMP_IF_FALSE:
357             return 1;
358         case POP_JUMP_IF_NONE:
359             return 1;
360         case POP_JUMP_IF_NOT_NONE:
361             return 1;
362         case POP_JUMP_IF_TRUE:
363             return 1;
364         case POP_TOP:
365             return 1;
366         case PUSH_EXC_INFO:
367             return 1;
368         case PUSH_NULL:
369             return 0;
370         case RAISE_VARARGS:
371             return oparg;
372         case RERAISE:
373             return 1 + oparg;
374         case RESERVED:
375             return 0;
376         case RESUME:
377             return 0;
378         case RESUME_CHECK:
379             return 0;
380         case RETURN_CONST:
381             return 0;
382         case RETURN_GENERATOR:
383             return 0;
384         case RETURN_VALUE:
385             return 1;
386         case SEND:
387             return 2;
388         case SEND_GEN:
389             return 2;
390         case SETUP_ANNOTATIONS:
391             return 0;
392         case SET_ADD:
393             return 2 + (oparg-1);
394         case SET_FUNCTION_ATTRIBUTE:
395             return 2;
396         case SET_UPDATE:
397             return 2 + (oparg-1);
398         case STORE_ATTR:
399             return 2;
400         case STORE_ATTR_INSTANCE_VALUE:
401             return 2;
402         case STORE_ATTR_SLOT:
403             return 2;
404         case STORE_ATTR_WITH_HINT:
405             return 2;
406         case STORE_DEREF:
407             return 1;
408         case STORE_FAST:
409             return 1;
410         case STORE_FAST_LOAD_FAST:
411             return 1;
412         case STORE_FAST_STORE_FAST:
413             return 2;
414         case STORE_GLOBAL:
415             return 1;
416         case STORE_NAME:
417             return 1;
418         case STORE_SLICE:
419             return 4;
420         case STORE_SUBSCR:
421             return 3;
422         case STORE_SUBSCR_DICT:
423             return 3;
424         case STORE_SUBSCR_LIST_INT:
425             return 3;
426         case SWAP:
427             return 2 + (oparg-2);
428         case TO_BOOL:
429             return 1;
430         case TO_BOOL_ALWAYS_TRUE:
431             return 1;
432         case TO_BOOL_BOOL:
433             return 1;
434         case TO_BOOL_INT:
435             return 1;
436         case TO_BOOL_LIST:
437             return 1;
438         case TO_BOOL_NONE:
439             return 1;
440         case TO_BOOL_STR:
441             return 1;
442         case UNARY_INVERT:
443             return 1;
444         case UNARY_NEGATIVE:
445             return 1;
446         case UNARY_NOT:
447             return 1;
448         case UNPACK_EX:
449             return 1;
450         case UNPACK_SEQUENCE:
451             return 1;
452         case UNPACK_SEQUENCE_LIST:
453             return 1;
454         case UNPACK_SEQUENCE_TUPLE:
455             return 1;
456         case UNPACK_SEQUENCE_TWO_TUPLE:
457             return 1;
458         case WITH_EXCEPT_START:
459             return 4;
460         case YIELD_VALUE:
461             return 1;
462         default:
463             return -1;
464     }
465 }
466 
467 #endif
468 
469 extern int _PyOpcode_num_pushed(int opcode, int oparg);
470 #ifdef NEED_OPCODE_METADATA
_PyOpcode_num_pushed(int opcode,int oparg)471 int _PyOpcode_num_pushed(int opcode, int oparg)  {
472     switch(opcode) {
473         case BEFORE_ASYNC_WITH:
474             return 2;
475         case BEFORE_WITH:
476             return 2;
477         case BINARY_OP:
478             return 1;
479         case BINARY_OP_ADD_FLOAT:
480             return 1;
481         case BINARY_OP_ADD_INT:
482             return 1;
483         case BINARY_OP_ADD_UNICODE:
484             return 1;
485         case BINARY_OP_INPLACE_ADD_UNICODE:
486             return 0;
487         case BINARY_OP_MULTIPLY_FLOAT:
488             return 1;
489         case BINARY_OP_MULTIPLY_INT:
490             return 1;
491         case BINARY_OP_SUBTRACT_FLOAT:
492             return 1;
493         case BINARY_OP_SUBTRACT_INT:
494             return 1;
495         case BINARY_SLICE:
496             return 1;
497         case BINARY_SUBSCR:
498             return 1;
499         case BINARY_SUBSCR_DICT:
500             return 1;
501         case BINARY_SUBSCR_GETITEM:
502             return 1;
503         case BINARY_SUBSCR_LIST_INT:
504             return 1;
505         case BINARY_SUBSCR_STR_INT:
506             return 1;
507         case BINARY_SUBSCR_TUPLE_INT:
508             return 1;
509         case BUILD_CONST_KEY_MAP:
510             return 1;
511         case BUILD_LIST:
512             return 1;
513         case BUILD_MAP:
514             return 1;
515         case BUILD_SET:
516             return 1;
517         case BUILD_SLICE:
518             return 1;
519         case BUILD_STRING:
520             return 1;
521         case BUILD_TUPLE:
522             return 1;
523         case CACHE:
524             return 0;
525         case CALL:
526             return 1;
527         case CALL_ALLOC_AND_ENTER_INIT:
528             return 1;
529         case CALL_BOUND_METHOD_EXACT_ARGS:
530             return 0;
531         case CALL_BOUND_METHOD_GENERAL:
532             return 0;
533         case CALL_BUILTIN_CLASS:
534             return 1;
535         case CALL_BUILTIN_FAST:
536             return 1;
537         case CALL_BUILTIN_FAST_WITH_KEYWORDS:
538             return 1;
539         case CALL_BUILTIN_O:
540             return 1;
541         case CALL_FUNCTION_EX:
542             return 1;
543         case CALL_INTRINSIC_1:
544             return 1;
545         case CALL_INTRINSIC_2:
546             return 1;
547         case CALL_ISINSTANCE:
548             return 1;
549         case CALL_KW:
550             return 1;
551         case CALL_LEN:
552             return 1;
553         case CALL_LIST_APPEND:
554             return 1;
555         case CALL_METHOD_DESCRIPTOR_FAST:
556             return 1;
557         case CALL_METHOD_DESCRIPTOR_FAST_WITH_KEYWORDS:
558             return 1;
559         case CALL_METHOD_DESCRIPTOR_NOARGS:
560             return 1;
561         case CALL_METHOD_DESCRIPTOR_O:
562             return 1;
563         case CALL_NON_PY_GENERAL:
564             return 1;
565         case CALL_PY_EXACT_ARGS:
566             return 0;
567         case CALL_PY_GENERAL:
568             return 0;
569         case CALL_STR_1:
570             return 1;
571         case CALL_TUPLE_1:
572             return 1;
573         case CALL_TYPE_1:
574             return 1;
575         case CHECK_EG_MATCH:
576             return 2;
577         case CHECK_EXC_MATCH:
578             return 2;
579         case CLEANUP_THROW:
580             return 2;
581         case COMPARE_OP:
582             return 1;
583         case COMPARE_OP_FLOAT:
584             return 1;
585         case COMPARE_OP_INT:
586             return 1;
587         case COMPARE_OP_STR:
588             return 1;
589         case CONTAINS_OP:
590             return 1;
591         case CONTAINS_OP_DICT:
592             return 1;
593         case CONTAINS_OP_SET:
594             return 1;
595         case CONVERT_VALUE:
596             return 1;
597         case COPY:
598             return 2 + (oparg-1);
599         case COPY_FREE_VARS:
600             return 0;
601         case DELETE_ATTR:
602             return 0;
603         case DELETE_DEREF:
604             return 0;
605         case DELETE_FAST:
606             return 0;
607         case DELETE_GLOBAL:
608             return 0;
609         case DELETE_NAME:
610             return 0;
611         case DELETE_SUBSCR:
612             return 0;
613         case DICT_MERGE:
614             return 4 + (oparg - 1);
615         case DICT_UPDATE:
616             return 1 + (oparg - 1);
617         case END_ASYNC_FOR:
618             return 0;
619         case END_FOR:
620             return 0;
621         case END_SEND:
622             return 1;
623         case ENTER_EXECUTOR:
624             return 0;
625         case EXIT_INIT_CHECK:
626             return 0;
627         case EXTENDED_ARG:
628             return 0;
629         case FORMAT_SIMPLE:
630             return 1;
631         case FORMAT_WITH_SPEC:
632             return 1;
633         case FOR_ITER:
634             return 2;
635         case FOR_ITER_GEN:
636             return 1;
637         case FOR_ITER_LIST:
638             return 2;
639         case FOR_ITER_RANGE:
640             return 2;
641         case FOR_ITER_TUPLE:
642             return 2;
643         case GET_AITER:
644             return 1;
645         case GET_ANEXT:
646             return 2;
647         case GET_AWAITABLE:
648             return 1;
649         case GET_ITER:
650             return 1;
651         case GET_LEN:
652             return 2;
653         case GET_YIELD_FROM_ITER:
654             return 1;
655         case IMPORT_FROM:
656             return 2;
657         case IMPORT_NAME:
658             return 1;
659         case INSTRUMENTED_CALL:
660             return 0;
661         case INSTRUMENTED_CALL_FUNCTION_EX:
662             return 0;
663         case INSTRUMENTED_CALL_KW:
664             return 0;
665         case INSTRUMENTED_END_FOR:
666             return 1;
667         case INSTRUMENTED_END_SEND:
668             return 1;
669         case INSTRUMENTED_FOR_ITER:
670             return 0;
671         case INSTRUMENTED_INSTRUCTION:
672             return 0;
673         case INSTRUMENTED_JUMP_BACKWARD:
674             return 0;
675         case INSTRUMENTED_JUMP_FORWARD:
676             return 0;
677         case INSTRUMENTED_LOAD_SUPER_ATTR:
678             return 1 + (oparg & 1);
679         case INSTRUMENTED_POP_JUMP_IF_FALSE:
680             return 0;
681         case INSTRUMENTED_POP_JUMP_IF_NONE:
682             return 0;
683         case INSTRUMENTED_POP_JUMP_IF_NOT_NONE:
684             return 0;
685         case INSTRUMENTED_POP_JUMP_IF_TRUE:
686             return 0;
687         case INSTRUMENTED_RESUME:
688             return 0;
689         case INSTRUMENTED_RETURN_CONST:
690             return 0;
691         case INSTRUMENTED_RETURN_VALUE:
692             return 0;
693         case INSTRUMENTED_YIELD_VALUE:
694             return 1;
695         case INTERPRETER_EXIT:
696             return 0;
697         case IS_OP:
698             return 1;
699         case JUMP_BACKWARD:
700             return 0;
701         case JUMP_BACKWARD_NO_INTERRUPT:
702             return 0;
703         case JUMP_FORWARD:
704             return 0;
705         case LIST_APPEND:
706             return 1 + (oparg-1);
707         case LIST_EXTEND:
708             return 1 + (oparg-1);
709         case LOAD_ASSERTION_ERROR:
710             return 1;
711         case LOAD_ATTR:
712             return 1 + (oparg & 1);
713         case LOAD_ATTR_CLASS:
714             return 1 + (oparg & 1);
715         case LOAD_ATTR_GETATTRIBUTE_OVERRIDDEN:
716             return 1;
717         case LOAD_ATTR_INSTANCE_VALUE:
718             return 1 + (oparg & 1);
719         case LOAD_ATTR_METHOD_LAZY_DICT:
720             return 2;
721         case LOAD_ATTR_METHOD_NO_DICT:
722             return 2;
723         case LOAD_ATTR_METHOD_WITH_VALUES:
724             return 2;
725         case LOAD_ATTR_MODULE:
726             return 1 + (oparg & 1);
727         case LOAD_ATTR_NONDESCRIPTOR_NO_DICT:
728             return 1;
729         case LOAD_ATTR_NONDESCRIPTOR_WITH_VALUES:
730             return 1;
731         case LOAD_ATTR_PROPERTY:
732             return 1;
733         case LOAD_ATTR_SLOT:
734             return 1 + (oparg & 1);
735         case LOAD_ATTR_WITH_HINT:
736             return 1 + (oparg & 1);
737         case LOAD_BUILD_CLASS:
738             return 1;
739         case LOAD_CONST:
740             return 1;
741         case LOAD_DEREF:
742             return 1;
743         case LOAD_FAST:
744             return 1;
745         case LOAD_FAST_AND_CLEAR:
746             return 1;
747         case LOAD_FAST_CHECK:
748             return 1;
749         case LOAD_FAST_LOAD_FAST:
750             return 2;
751         case LOAD_FROM_DICT_OR_DEREF:
752             return 1;
753         case LOAD_FROM_DICT_OR_GLOBALS:
754             return 1;
755         case LOAD_GLOBAL:
756             return 1 + (oparg & 1);
757         case LOAD_GLOBAL_BUILTIN:
758             return 1 + (oparg & 1);
759         case LOAD_GLOBAL_MODULE:
760             return 1 + (oparg & 1);
761         case LOAD_LOCALS:
762             return 1;
763         case LOAD_NAME:
764             return 1;
765         case LOAD_SUPER_ATTR:
766             return 1 + (oparg & 1);
767         case LOAD_SUPER_ATTR_ATTR:
768             return 1;
769         case LOAD_SUPER_ATTR_METHOD:
770             return 2;
771         case MAKE_CELL:
772             return 0;
773         case MAKE_FUNCTION:
774             return 1;
775         case MAP_ADD:
776             return 1 + (oparg - 1);
777         case MATCH_CLASS:
778             return 1;
779         case MATCH_KEYS:
780             return 3;
781         case MATCH_MAPPING:
782             return 2;
783         case MATCH_SEQUENCE:
784             return 2;
785         case NOP:
786             return 0;
787         case POP_EXCEPT:
788             return 0;
789         case POP_JUMP_IF_FALSE:
790             return 0;
791         case POP_JUMP_IF_NONE:
792             return 0;
793         case POP_JUMP_IF_NOT_NONE:
794             return 0;
795         case POP_JUMP_IF_TRUE:
796             return 0;
797         case POP_TOP:
798             return 0;
799         case PUSH_EXC_INFO:
800             return 2;
801         case PUSH_NULL:
802             return 1;
803         case RAISE_VARARGS:
804             return 0;
805         case RERAISE:
806             return oparg;
807         case RESERVED:
808             return 0;
809         case RESUME:
810             return 0;
811         case RESUME_CHECK:
812             return 0;
813         case RETURN_CONST:
814             return 0;
815         case RETURN_GENERATOR:
816             return 1;
817         case RETURN_VALUE:
818             return 0;
819         case SEND:
820             return 2;
821         case SEND_GEN:
822             return 2;
823         case SETUP_ANNOTATIONS:
824             return 0;
825         case SET_ADD:
826             return 1 + (oparg-1);
827         case SET_FUNCTION_ATTRIBUTE:
828             return 1;
829         case SET_UPDATE:
830             return 1 + (oparg-1);
831         case STORE_ATTR:
832             return 0;
833         case STORE_ATTR_INSTANCE_VALUE:
834             return 0;
835         case STORE_ATTR_SLOT:
836             return 0;
837         case STORE_ATTR_WITH_HINT:
838             return 0;
839         case STORE_DEREF:
840             return 0;
841         case STORE_FAST:
842             return 0;
843         case STORE_FAST_LOAD_FAST:
844             return 1;
845         case STORE_FAST_STORE_FAST:
846             return 0;
847         case STORE_GLOBAL:
848             return 0;
849         case STORE_NAME:
850             return 0;
851         case STORE_SLICE:
852             return 0;
853         case STORE_SUBSCR:
854             return 0;
855         case STORE_SUBSCR_DICT:
856             return 0;
857         case STORE_SUBSCR_LIST_INT:
858             return 0;
859         case SWAP:
860             return 2 + (oparg-2);
861         case TO_BOOL:
862             return 1;
863         case TO_BOOL_ALWAYS_TRUE:
864             return 1;
865         case TO_BOOL_BOOL:
866             return 1;
867         case TO_BOOL_INT:
868             return 1;
869         case TO_BOOL_LIST:
870             return 1;
871         case TO_BOOL_NONE:
872             return 1;
873         case TO_BOOL_STR:
874             return 1;
875         case UNARY_INVERT:
876             return 1;
877         case UNARY_NEGATIVE:
878             return 1;
879         case UNARY_NOT:
880             return 1;
881         case UNPACK_EX:
882             return 1 + (oparg >> 8) + (oparg & 0xFF);
883         case UNPACK_SEQUENCE:
884             return oparg;
885         case UNPACK_SEQUENCE_LIST:
886             return oparg;
887         case UNPACK_SEQUENCE_TUPLE:
888             return oparg;
889         case UNPACK_SEQUENCE_TWO_TUPLE:
890             return 2;
891         case WITH_EXCEPT_START:
892             return 5;
893         case YIELD_VALUE:
894             return 1;
895         default:
896             return -1;
897     }
898 }
899 
900 #endif
901 
902 enum InstructionFormat {
903     INSTR_FMT_IB = 1,
904     INSTR_FMT_IBC = 2,
905     INSTR_FMT_IBC00 = 3,
906     INSTR_FMT_IBC000 = 4,
907     INSTR_FMT_IBC00000000 = 5,
908     INSTR_FMT_IX = 6,
909     INSTR_FMT_IXC = 7,
910     INSTR_FMT_IXC00 = 8,
911     INSTR_FMT_IXC000 = 9,
912 };
913 
914 #define IS_VALID_OPCODE(OP) \
915     (((OP) >= 0) && ((OP) < 268) && \
916      (_PyOpcode_opcode_metadata[(OP)].valid_entry))
917 
918 #define HAS_ARG_FLAG (1)
919 #define HAS_CONST_FLAG (2)
920 #define HAS_NAME_FLAG (4)
921 #define HAS_JUMP_FLAG (8)
922 #define HAS_FREE_FLAG (16)
923 #define HAS_LOCAL_FLAG (32)
924 #define HAS_EVAL_BREAK_FLAG (64)
925 #define HAS_DEOPT_FLAG (128)
926 #define HAS_ERROR_FLAG (256)
927 #define HAS_ESCAPES_FLAG (512)
928 #define HAS_EXIT_FLAG (1024)
929 #define HAS_PURE_FLAG (2048)
930 #define HAS_PASSTHROUGH_FLAG (4096)
931 #define HAS_OPARG_AND_1_FLAG (8192)
932 #define HAS_ERROR_NO_POP_FLAG (16384)
933 #define OPCODE_HAS_ARG(OP) (_PyOpcode_opcode_metadata[OP].flags & (HAS_ARG_FLAG))
934 #define OPCODE_HAS_CONST(OP) (_PyOpcode_opcode_metadata[OP].flags & (HAS_CONST_FLAG))
935 #define OPCODE_HAS_NAME(OP) (_PyOpcode_opcode_metadata[OP].flags & (HAS_NAME_FLAG))
936 #define OPCODE_HAS_JUMP(OP) (_PyOpcode_opcode_metadata[OP].flags & (HAS_JUMP_FLAG))
937 #define OPCODE_HAS_FREE(OP) (_PyOpcode_opcode_metadata[OP].flags & (HAS_FREE_FLAG))
938 #define OPCODE_HAS_LOCAL(OP) (_PyOpcode_opcode_metadata[OP].flags & (HAS_LOCAL_FLAG))
939 #define OPCODE_HAS_EVAL_BREAK(OP) (_PyOpcode_opcode_metadata[OP].flags & (HAS_EVAL_BREAK_FLAG))
940 #define OPCODE_HAS_DEOPT(OP) (_PyOpcode_opcode_metadata[OP].flags & (HAS_DEOPT_FLAG))
941 #define OPCODE_HAS_ERROR(OP) (_PyOpcode_opcode_metadata[OP].flags & (HAS_ERROR_FLAG))
942 #define OPCODE_HAS_ESCAPES(OP) (_PyOpcode_opcode_metadata[OP].flags & (HAS_ESCAPES_FLAG))
943 #define OPCODE_HAS_EXIT(OP) (_PyOpcode_opcode_metadata[OP].flags & (HAS_EXIT_FLAG))
944 #define OPCODE_HAS_PURE(OP) (_PyOpcode_opcode_metadata[OP].flags & (HAS_PURE_FLAG))
945 #define OPCODE_HAS_PASSTHROUGH(OP) (_PyOpcode_opcode_metadata[OP].flags & (HAS_PASSTHROUGH_FLAG))
946 #define OPCODE_HAS_OPARG_AND_1(OP) (_PyOpcode_opcode_metadata[OP].flags & (HAS_OPARG_AND_1_FLAG))
947 #define OPCODE_HAS_ERROR_NO_POP(OP) (_PyOpcode_opcode_metadata[OP].flags & (HAS_ERROR_NO_POP_FLAG))
948 
949 #define OPARG_FULL 0
950 #define OPARG_CACHE_1 1
951 #define OPARG_CACHE_2 2
952 #define OPARG_CACHE_4 4
953 #define OPARG_TOP 5
954 #define OPARG_BOTTOM 6
955 #define OPARG_SAVE_RETURN_OFFSET 7
956 #define OPARG_REPLACED 9
957 
958 struct opcode_metadata {
959     uint8_t valid_entry;
960     int8_t instr_format;
961     int16_t flags;
962 };
963 
964 extern const struct opcode_metadata _PyOpcode_opcode_metadata[268];
965 #ifdef NEED_OPCODE_METADATA
966 const struct opcode_metadata _PyOpcode_opcode_metadata[268] = {
967     [BEFORE_ASYNC_WITH] = { true, INSTR_FMT_IX, HAS_ERROR_FLAG | HAS_ERROR_NO_POP_FLAG | HAS_ESCAPES_FLAG },
968     [BEFORE_WITH] = { true, INSTR_FMT_IX, HAS_ERROR_FLAG | HAS_ERROR_NO_POP_FLAG | HAS_ESCAPES_FLAG },
969     [BINARY_OP] = { true, INSTR_FMT_IBC, HAS_ARG_FLAG | HAS_ERROR_FLAG | HAS_ESCAPES_FLAG },
970     [BINARY_OP_ADD_FLOAT] = { true, INSTR_FMT_IXC, HAS_EXIT_FLAG },
971     [BINARY_OP_ADD_INT] = { true, INSTR_FMT_IXC, HAS_EXIT_FLAG | HAS_ERROR_FLAG },
972     [BINARY_OP_ADD_UNICODE] = { true, INSTR_FMT_IXC, HAS_EXIT_FLAG | HAS_ERROR_FLAG },
973     [BINARY_OP_INPLACE_ADD_UNICODE] = { true, INSTR_FMT_IXC, HAS_LOCAL_FLAG | HAS_DEOPT_FLAG | HAS_EXIT_FLAG | HAS_ERROR_FLAG | HAS_ESCAPES_FLAG },
974     [BINARY_OP_MULTIPLY_FLOAT] = { true, INSTR_FMT_IXC, HAS_EXIT_FLAG },
975     [BINARY_OP_MULTIPLY_INT] = { true, INSTR_FMT_IXC, HAS_EXIT_FLAG | HAS_ERROR_FLAG },
976     [BINARY_OP_SUBTRACT_FLOAT] = { true, INSTR_FMT_IXC, HAS_EXIT_FLAG },
977     [BINARY_OP_SUBTRACT_INT] = { true, INSTR_FMT_IXC, HAS_EXIT_FLAG | HAS_ERROR_FLAG },
978     [BINARY_SLICE] = { true, INSTR_FMT_IX, HAS_ERROR_FLAG | HAS_ESCAPES_FLAG },
979     [BINARY_SUBSCR] = { true, INSTR_FMT_IXC, HAS_ERROR_FLAG | HAS_ESCAPES_FLAG },
980     [BINARY_SUBSCR_DICT] = { true, INSTR_FMT_IXC, HAS_DEOPT_FLAG | HAS_ERROR_FLAG | HAS_ESCAPES_FLAG },
981     [BINARY_SUBSCR_GETITEM] = { true, INSTR_FMT_IXC, HAS_DEOPT_FLAG | HAS_ESCAPES_FLAG },
982     [BINARY_SUBSCR_LIST_INT] = { true, INSTR_FMT_IXC, HAS_DEOPT_FLAG },
983     [BINARY_SUBSCR_STR_INT] = { true, INSTR_FMT_IXC, HAS_DEOPT_FLAG },
984     [BINARY_SUBSCR_TUPLE_INT] = { true, INSTR_FMT_IXC, HAS_DEOPT_FLAG },
985     [BUILD_CONST_KEY_MAP] = { true, INSTR_FMT_IB, HAS_ARG_FLAG | HAS_ERROR_FLAG | HAS_ESCAPES_FLAG },
986     [BUILD_LIST] = { true, INSTR_FMT_IB, HAS_ARG_FLAG | HAS_ERROR_FLAG },
987     [BUILD_MAP] = { true, INSTR_FMT_IB, HAS_ARG_FLAG | HAS_ERROR_FLAG | HAS_ESCAPES_FLAG },
988     [BUILD_SET] = { true, INSTR_FMT_IB, HAS_ARG_FLAG | HAS_ERROR_FLAG | HAS_ERROR_NO_POP_FLAG | HAS_ESCAPES_FLAG },
989     [BUILD_SLICE] = { true, INSTR_FMT_IB, HAS_ARG_FLAG | HAS_ERROR_FLAG },
990     [BUILD_STRING] = { true, INSTR_FMT_IB, HAS_ARG_FLAG | HAS_ERROR_FLAG },
991     [BUILD_TUPLE] = { true, INSTR_FMT_IB, HAS_ARG_FLAG | HAS_ERROR_FLAG },
992     [CACHE] = { true, INSTR_FMT_IX, 0 },
993     [CALL] = { true, INSTR_FMT_IBC00, HAS_ARG_FLAG | HAS_EVAL_BREAK_FLAG | HAS_ERROR_FLAG | HAS_ERROR_NO_POP_FLAG | HAS_ESCAPES_FLAG },
994     [CALL_ALLOC_AND_ENTER_INIT] = { true, INSTR_FMT_IBC00, HAS_ARG_FLAG | HAS_DEOPT_FLAG | HAS_ERROR_FLAG | HAS_ERROR_NO_POP_FLAG | HAS_ESCAPES_FLAG },
995     [CALL_BOUND_METHOD_EXACT_ARGS] = { true, INSTR_FMT_IBC00, HAS_ARG_FLAG | HAS_DEOPT_FLAG | HAS_EXIT_FLAG },
996     [CALL_BOUND_METHOD_GENERAL] = { true, INSTR_FMT_IBC00, HAS_ARG_FLAG | HAS_DEOPT_FLAG | HAS_EXIT_FLAG | HAS_ERROR_FLAG | HAS_ERROR_NO_POP_FLAG | HAS_ESCAPES_FLAG },
997     [CALL_BUILTIN_CLASS] = { true, INSTR_FMT_IBC00, HAS_ARG_FLAG | HAS_EVAL_BREAK_FLAG | HAS_DEOPT_FLAG | HAS_ERROR_FLAG | HAS_ESCAPES_FLAG },
998     [CALL_BUILTIN_FAST] = { true, INSTR_FMT_IBC00, HAS_ARG_FLAG | HAS_EVAL_BREAK_FLAG | HAS_DEOPT_FLAG | HAS_ERROR_FLAG | HAS_ESCAPES_FLAG },
999     [CALL_BUILTIN_FAST_WITH_KEYWORDS] = { true, INSTR_FMT_IBC00, HAS_ARG_FLAG | HAS_EVAL_BREAK_FLAG | HAS_DEOPT_FLAG | HAS_ERROR_FLAG | HAS_ESCAPES_FLAG },
1000     [CALL_BUILTIN_O] = { true, INSTR_FMT_IBC00, HAS_ARG_FLAG | HAS_EVAL_BREAK_FLAG | HAS_DEOPT_FLAG | HAS_ERROR_FLAG | HAS_ESCAPES_FLAG },
1001     [CALL_FUNCTION_EX] = { true, INSTR_FMT_IB, HAS_ARG_FLAG | HAS_EVAL_BREAK_FLAG | HAS_ERROR_FLAG | HAS_ERROR_NO_POP_FLAG | HAS_ESCAPES_FLAG },
1002     [CALL_INTRINSIC_1] = { true, INSTR_FMT_IB, HAS_ARG_FLAG | HAS_ERROR_FLAG | HAS_ESCAPES_FLAG },
1003     [CALL_INTRINSIC_2] = { true, INSTR_FMT_IB, HAS_ARG_FLAG | HAS_ERROR_FLAG | HAS_ESCAPES_FLAG },
1004     [CALL_ISINSTANCE] = { true, INSTR_FMT_IBC00, HAS_ARG_FLAG | HAS_DEOPT_FLAG | HAS_ERROR_FLAG | HAS_ERROR_NO_POP_FLAG | HAS_ESCAPES_FLAG },
1005     [CALL_KW] = { true, INSTR_FMT_IB, HAS_ARG_FLAG | HAS_EVAL_BREAK_FLAG | HAS_ERROR_FLAG | HAS_ERROR_NO_POP_FLAG | HAS_ESCAPES_FLAG },
1006     [CALL_LEN] = { true, INSTR_FMT_IBC00, HAS_ARG_FLAG | HAS_DEOPT_FLAG | HAS_ERROR_FLAG | HAS_ERROR_NO_POP_FLAG | HAS_ESCAPES_FLAG },
1007     [CALL_LIST_APPEND] = { true, INSTR_FMT_IBC00, HAS_ARG_FLAG | HAS_DEOPT_FLAG | HAS_ERROR_FLAG | HAS_ERROR_NO_POP_FLAG },
1008     [CALL_METHOD_DESCRIPTOR_FAST] = { true, INSTR_FMT_IBC00, HAS_ARG_FLAG | HAS_EVAL_BREAK_FLAG | HAS_DEOPT_FLAG | HAS_ERROR_FLAG | HAS_ESCAPES_FLAG },
1009     [CALL_METHOD_DESCRIPTOR_FAST_WITH_KEYWORDS] = { true, INSTR_FMT_IBC00, HAS_ARG_FLAG | HAS_EVAL_BREAK_FLAG | HAS_DEOPT_FLAG | HAS_ERROR_FLAG | HAS_ESCAPES_FLAG },
1010     [CALL_METHOD_DESCRIPTOR_NOARGS] = { true, INSTR_FMT_IBC00, HAS_ARG_FLAG | HAS_EVAL_BREAK_FLAG | HAS_DEOPT_FLAG | HAS_ERROR_FLAG | HAS_ESCAPES_FLAG },
1011     [CALL_METHOD_DESCRIPTOR_O] = { true, INSTR_FMT_IBC00, HAS_ARG_FLAG | HAS_EVAL_BREAK_FLAG | HAS_DEOPT_FLAG | HAS_ERROR_FLAG | HAS_ESCAPES_FLAG },
1012     [CALL_NON_PY_GENERAL] = { true, INSTR_FMT_IBC00, HAS_ARG_FLAG | HAS_EVAL_BREAK_FLAG | HAS_EXIT_FLAG | HAS_ERROR_FLAG | HAS_ESCAPES_FLAG },
1013     [CALL_PY_EXACT_ARGS] = { true, INSTR_FMT_IBC00, HAS_ARG_FLAG | HAS_DEOPT_FLAG | HAS_EXIT_FLAG },
1014     [CALL_PY_GENERAL] = { true, INSTR_FMT_IBC00, HAS_ARG_FLAG | HAS_DEOPT_FLAG | HAS_EXIT_FLAG | HAS_ERROR_FLAG | HAS_ERROR_NO_POP_FLAG | HAS_ESCAPES_FLAG },
1015     [CALL_STR_1] = { true, INSTR_FMT_IBC00, HAS_ARG_FLAG | HAS_EVAL_BREAK_FLAG | HAS_DEOPT_FLAG | HAS_ERROR_FLAG | HAS_ESCAPES_FLAG },
1016     [CALL_TUPLE_1] = { true, INSTR_FMT_IBC00, HAS_ARG_FLAG | HAS_EVAL_BREAK_FLAG | HAS_DEOPT_FLAG | HAS_ERROR_FLAG | HAS_ESCAPES_FLAG },
1017     [CALL_TYPE_1] = { true, INSTR_FMT_IBC00, HAS_ARG_FLAG | HAS_DEOPT_FLAG },
1018     [CHECK_EG_MATCH] = { true, INSTR_FMT_IX, HAS_ERROR_FLAG | HAS_ESCAPES_FLAG },
1019     [CHECK_EXC_MATCH] = { true, INSTR_FMT_IX, HAS_ERROR_FLAG | HAS_ESCAPES_FLAG },
1020     [CLEANUP_THROW] = { true, INSTR_FMT_IX, HAS_ERROR_FLAG | HAS_ERROR_NO_POP_FLAG | HAS_ESCAPES_FLAG },
1021     [COMPARE_OP] = { true, INSTR_FMT_IBC, HAS_ARG_FLAG | HAS_ERROR_FLAG | HAS_ESCAPES_FLAG },
1022     [COMPARE_OP_FLOAT] = { true, INSTR_FMT_IBC, HAS_ARG_FLAG | HAS_EXIT_FLAG },
1023     [COMPARE_OP_INT] = { true, INSTR_FMT_IBC, HAS_ARG_FLAG | HAS_DEOPT_FLAG | HAS_EXIT_FLAG },
1024     [COMPARE_OP_STR] = { true, INSTR_FMT_IBC, HAS_ARG_FLAG | HAS_EXIT_FLAG },
1025     [CONTAINS_OP] = { true, INSTR_FMT_IBC, HAS_ARG_FLAG | HAS_ERROR_FLAG | HAS_ESCAPES_FLAG },
1026     [CONTAINS_OP_DICT] = { true, INSTR_FMT_IBC, HAS_ARG_FLAG | HAS_DEOPT_FLAG | HAS_ERROR_FLAG | HAS_ESCAPES_FLAG },
1027     [CONTAINS_OP_SET] = { true, INSTR_FMT_IBC, HAS_ARG_FLAG | HAS_DEOPT_FLAG | HAS_ERROR_FLAG | HAS_ESCAPES_FLAG },
1028     [CONVERT_VALUE] = { true, INSTR_FMT_IB, HAS_ARG_FLAG | HAS_ERROR_FLAG },
1029     [COPY] = { true, INSTR_FMT_IB, HAS_ARG_FLAG | HAS_PURE_FLAG },
1030     [COPY_FREE_VARS] = { true, INSTR_FMT_IB, HAS_ARG_FLAG },
1031     [DELETE_ATTR] = { true, INSTR_FMT_IB, HAS_ARG_FLAG | HAS_NAME_FLAG | HAS_ERROR_FLAG | HAS_ESCAPES_FLAG },
1032     [DELETE_DEREF] = { true, INSTR_FMT_IB, HAS_ARG_FLAG | HAS_FREE_FLAG | HAS_ERROR_FLAG | HAS_ERROR_NO_POP_FLAG | HAS_ESCAPES_FLAG },
1033     [DELETE_FAST] = { true, INSTR_FMT_IB, HAS_ARG_FLAG | HAS_LOCAL_FLAG | HAS_ERROR_FLAG | HAS_ESCAPES_FLAG },
1034     [DELETE_GLOBAL] = { true, INSTR_FMT_IB, HAS_ARG_FLAG | HAS_NAME_FLAG | HAS_ERROR_FLAG | HAS_ERROR_NO_POP_FLAG | HAS_ESCAPES_FLAG },
1035     [DELETE_NAME] = { true, INSTR_FMT_IB, HAS_ARG_FLAG | HAS_NAME_FLAG | HAS_ERROR_FLAG | HAS_ERROR_NO_POP_FLAG | HAS_ESCAPES_FLAG },
1036     [DELETE_SUBSCR] = { true, INSTR_FMT_IX, HAS_ERROR_FLAG | HAS_ESCAPES_FLAG },
1037     [DICT_MERGE] = { true, INSTR_FMT_IB, HAS_ARG_FLAG | HAS_ERROR_FLAG | HAS_ESCAPES_FLAG },
1038     [DICT_UPDATE] = { true, INSTR_FMT_IB, HAS_ARG_FLAG | HAS_ERROR_FLAG | HAS_ESCAPES_FLAG },
1039     [END_ASYNC_FOR] = { true, INSTR_FMT_IX, HAS_ERROR_FLAG | HAS_ERROR_NO_POP_FLAG | HAS_ESCAPES_FLAG },
1040     [END_FOR] = { true, INSTR_FMT_IX, HAS_PURE_FLAG },
1041     [END_SEND] = { true, INSTR_FMT_IX, HAS_PURE_FLAG },
1042     [ENTER_EXECUTOR] = { true, INSTR_FMT_IB, HAS_ARG_FLAG },
1043     [EXIT_INIT_CHECK] = { true, INSTR_FMT_IX, HAS_ERROR_FLAG | HAS_ERROR_NO_POP_FLAG | HAS_ESCAPES_FLAG },
1044     [EXTENDED_ARG] = { true, INSTR_FMT_IB, HAS_ARG_FLAG },
1045     [FORMAT_SIMPLE] = { true, INSTR_FMT_IX, HAS_ERROR_FLAG | HAS_ESCAPES_FLAG },
1046     [FORMAT_WITH_SPEC] = { true, INSTR_FMT_IX, HAS_ERROR_FLAG | HAS_ESCAPES_FLAG },
1047     [FOR_ITER] = { true, INSTR_FMT_IBC, HAS_ARG_FLAG | HAS_JUMP_FLAG | HAS_ERROR_FLAG | HAS_ERROR_NO_POP_FLAG | HAS_ESCAPES_FLAG },
1048     [FOR_ITER_GEN] = { true, INSTR_FMT_IBC, HAS_ARG_FLAG | HAS_DEOPT_FLAG },
1049     [FOR_ITER_LIST] = { true, INSTR_FMT_IBC, HAS_ARG_FLAG | HAS_JUMP_FLAG | HAS_EXIT_FLAG },
1050     [FOR_ITER_RANGE] = { true, INSTR_FMT_IBC, HAS_ARG_FLAG | HAS_JUMP_FLAG | HAS_EXIT_FLAG | HAS_ERROR_FLAG },
1051     [FOR_ITER_TUPLE] = { true, INSTR_FMT_IBC, HAS_ARG_FLAG | HAS_JUMP_FLAG | HAS_EXIT_FLAG },
1052     [GET_AITER] = { true, INSTR_FMT_IX, HAS_ERROR_FLAG | HAS_ESCAPES_FLAG },
1053     [GET_ANEXT] = { true, INSTR_FMT_IX, HAS_ERROR_FLAG | HAS_ERROR_NO_POP_FLAG | HAS_ESCAPES_FLAG },
1054     [GET_AWAITABLE] = { true, INSTR_FMT_IB, HAS_ARG_FLAG | HAS_ERROR_FLAG | HAS_ESCAPES_FLAG },
1055     [GET_ITER] = { true, INSTR_FMT_IX, HAS_ERROR_FLAG | HAS_ESCAPES_FLAG },
1056     [GET_LEN] = { true, INSTR_FMT_IX, HAS_ERROR_FLAG | HAS_ESCAPES_FLAG },
1057     [GET_YIELD_FROM_ITER] = { true, INSTR_FMT_IX, HAS_ERROR_FLAG | HAS_ERROR_NO_POP_FLAG | HAS_ESCAPES_FLAG },
1058     [IMPORT_FROM] = { true, INSTR_FMT_IB, HAS_ARG_FLAG | HAS_NAME_FLAG | HAS_ERROR_FLAG | HAS_ESCAPES_FLAG },
1059     [IMPORT_NAME] = { true, INSTR_FMT_IB, HAS_ARG_FLAG | HAS_NAME_FLAG | HAS_ERROR_FLAG | HAS_ESCAPES_FLAG },
1060     [INSTRUMENTED_CALL] = { true, INSTR_FMT_IBC00, HAS_ARG_FLAG | HAS_ERROR_FLAG | HAS_ESCAPES_FLAG },
1061     [INSTRUMENTED_CALL_FUNCTION_EX] = { true, INSTR_FMT_IX, 0 },
1062     [INSTRUMENTED_CALL_KW] = { true, INSTR_FMT_IB, HAS_ARG_FLAG | HAS_ERROR_FLAG | HAS_ESCAPES_FLAG },
1063     [INSTRUMENTED_END_FOR] = { true, INSTR_FMT_IX, HAS_ERROR_FLAG | HAS_ERROR_NO_POP_FLAG },
1064     [INSTRUMENTED_END_SEND] = { true, INSTR_FMT_IX, HAS_ERROR_FLAG | HAS_ERROR_NO_POP_FLAG },
1065     [INSTRUMENTED_FOR_ITER] = { true, INSTR_FMT_IBC, HAS_ARG_FLAG | HAS_ERROR_FLAG | HAS_ERROR_NO_POP_FLAG | HAS_ESCAPES_FLAG },
1066     [INSTRUMENTED_INSTRUCTION] = { true, INSTR_FMT_IX, HAS_ERROR_FLAG | HAS_ESCAPES_FLAG },
1067     [INSTRUMENTED_JUMP_BACKWARD] = { true, INSTR_FMT_IBC, HAS_ARG_FLAG | HAS_EVAL_BREAK_FLAG },
1068     [INSTRUMENTED_JUMP_FORWARD] = { true, INSTR_FMT_IB, HAS_ARG_FLAG },
1069     [INSTRUMENTED_LOAD_SUPER_ATTR] = { true, INSTR_FMT_IBC, HAS_ARG_FLAG },
1070     [INSTRUMENTED_POP_JUMP_IF_FALSE] = { true, INSTR_FMT_IBC, HAS_ARG_FLAG },
1071     [INSTRUMENTED_POP_JUMP_IF_NONE] = { true, INSTR_FMT_IBC, HAS_ARG_FLAG },
1072     [INSTRUMENTED_POP_JUMP_IF_NOT_NONE] = { true, INSTR_FMT_IBC, HAS_ARG_FLAG },
1073     [INSTRUMENTED_POP_JUMP_IF_TRUE] = { true, INSTR_FMT_IBC, HAS_ARG_FLAG },
1074     [INSTRUMENTED_RESUME] = { true, INSTR_FMT_IB, HAS_ARG_FLAG | HAS_EVAL_BREAK_FLAG | HAS_ERROR_FLAG | HAS_ERROR_NO_POP_FLAG | HAS_ESCAPES_FLAG },
1075     [INSTRUMENTED_RETURN_CONST] = { true, INSTR_FMT_IB, HAS_ARG_FLAG | HAS_CONST_FLAG | HAS_ERROR_FLAG | HAS_ERROR_NO_POP_FLAG | HAS_ESCAPES_FLAG },
1076     [INSTRUMENTED_RETURN_VALUE] = { true, INSTR_FMT_IX, HAS_ERROR_FLAG | HAS_ERROR_NO_POP_FLAG | HAS_ESCAPES_FLAG },
1077     [INSTRUMENTED_YIELD_VALUE] = { true, INSTR_FMT_IB, HAS_ARG_FLAG | HAS_ERROR_FLAG | HAS_ERROR_NO_POP_FLAG | HAS_ESCAPES_FLAG },
1078     [INTERPRETER_EXIT] = { true, INSTR_FMT_IX, HAS_ESCAPES_FLAG },
1079     [IS_OP] = { true, INSTR_FMT_IB, HAS_ARG_FLAG },
1080     [JUMP_BACKWARD] = { true, INSTR_FMT_IBC, HAS_ARG_FLAG | HAS_JUMP_FLAG | HAS_EVAL_BREAK_FLAG | HAS_ERROR_FLAG | HAS_ESCAPES_FLAG },
1081     [JUMP_BACKWARD_NO_INTERRUPT] = { true, INSTR_FMT_IB, HAS_ARG_FLAG | HAS_JUMP_FLAG },
1082     [JUMP_FORWARD] = { true, INSTR_FMT_IB, HAS_ARG_FLAG | HAS_JUMP_FLAG },
1083     [LIST_APPEND] = { true, INSTR_FMT_IB, HAS_ARG_FLAG | HAS_ERROR_FLAG },
1084     [LIST_EXTEND] = { true, INSTR_FMT_IB, HAS_ARG_FLAG | HAS_ERROR_FLAG | HAS_ESCAPES_FLAG },
1085     [LOAD_ASSERTION_ERROR] = { true, INSTR_FMT_IX, 0 },
1086     [LOAD_ATTR] = { true, INSTR_FMT_IBC00000000, HAS_ARG_FLAG | HAS_NAME_FLAG | HAS_ERROR_FLAG | HAS_ESCAPES_FLAG },
1087     [LOAD_ATTR_CLASS] = { true, INSTR_FMT_IBC00000000, HAS_ARG_FLAG | HAS_DEOPT_FLAG },
1088     [LOAD_ATTR_GETATTRIBUTE_OVERRIDDEN] = { true, INSTR_FMT_IBC00000000, HAS_ARG_FLAG | HAS_NAME_FLAG | HAS_DEOPT_FLAG | HAS_ESCAPES_FLAG },
1089     [LOAD_ATTR_INSTANCE_VALUE] = { true, INSTR_FMT_IBC00000000, HAS_ARG_FLAG | HAS_DEOPT_FLAG | HAS_EXIT_FLAG },
1090     [LOAD_ATTR_METHOD_LAZY_DICT] = { true, INSTR_FMT_IBC00000000, HAS_ARG_FLAG | HAS_DEOPT_FLAG | HAS_EXIT_FLAG },
1091     [LOAD_ATTR_METHOD_NO_DICT] = { true, INSTR_FMT_IBC00000000, HAS_ARG_FLAG | HAS_EXIT_FLAG },
1092     [LOAD_ATTR_METHOD_WITH_VALUES] = { true, INSTR_FMT_IBC00000000, HAS_ARG_FLAG | HAS_DEOPT_FLAG | HAS_EXIT_FLAG },
1093     [LOAD_ATTR_MODULE] = { true, INSTR_FMT_IBC00000000, HAS_ARG_FLAG | HAS_DEOPT_FLAG },
1094     [LOAD_ATTR_NONDESCRIPTOR_NO_DICT] = { true, INSTR_FMT_IBC00000000, HAS_ARG_FLAG | HAS_EXIT_FLAG },
1095     [LOAD_ATTR_NONDESCRIPTOR_WITH_VALUES] = { true, INSTR_FMT_IBC00000000, HAS_ARG_FLAG | HAS_DEOPT_FLAG | HAS_EXIT_FLAG },
1096     [LOAD_ATTR_PROPERTY] = { true, INSTR_FMT_IBC00000000, HAS_ARG_FLAG | HAS_DEOPT_FLAG | HAS_ESCAPES_FLAG },
1097     [LOAD_ATTR_SLOT] = { true, INSTR_FMT_IBC00000000, HAS_ARG_FLAG | HAS_DEOPT_FLAG | HAS_EXIT_FLAG },
1098     [LOAD_ATTR_WITH_HINT] = { true, INSTR_FMT_IBC00000000, HAS_ARG_FLAG | HAS_NAME_FLAG | HAS_DEOPT_FLAG | HAS_EXIT_FLAG },
1099     [LOAD_BUILD_CLASS] = { true, INSTR_FMT_IX, HAS_ERROR_FLAG | HAS_ESCAPES_FLAG },
1100     [LOAD_CONST] = { true, INSTR_FMT_IB, HAS_ARG_FLAG | HAS_CONST_FLAG | HAS_PURE_FLAG },
1101     [LOAD_DEREF] = { true, INSTR_FMT_IB, HAS_ARG_FLAG | HAS_FREE_FLAG | HAS_ERROR_FLAG | HAS_ESCAPES_FLAG },
1102     [LOAD_FAST] = { true, INSTR_FMT_IB, HAS_ARG_FLAG | HAS_LOCAL_FLAG | HAS_PURE_FLAG },
1103     [LOAD_FAST_AND_CLEAR] = { true, INSTR_FMT_IB, HAS_ARG_FLAG | HAS_LOCAL_FLAG },
1104     [LOAD_FAST_CHECK] = { true, INSTR_FMT_IB, HAS_ARG_FLAG | HAS_LOCAL_FLAG | HAS_ERROR_FLAG | HAS_ESCAPES_FLAG },
1105     [LOAD_FAST_LOAD_FAST] = { true, INSTR_FMT_IB, HAS_ARG_FLAG | HAS_LOCAL_FLAG },
1106     [LOAD_FROM_DICT_OR_DEREF] = { true, INSTR_FMT_IB, HAS_ARG_FLAG | HAS_FREE_FLAG | HAS_ERROR_FLAG | HAS_ERROR_NO_POP_FLAG | HAS_ESCAPES_FLAG },
1107     [LOAD_FROM_DICT_OR_GLOBALS] = { true, INSTR_FMT_IB, HAS_ARG_FLAG | HAS_NAME_FLAG | HAS_ERROR_FLAG | HAS_ERROR_NO_POP_FLAG | HAS_ESCAPES_FLAG },
1108     [LOAD_GLOBAL] = { true, INSTR_FMT_IBC000, HAS_ARG_FLAG | HAS_NAME_FLAG | HAS_ERROR_FLAG | HAS_ESCAPES_FLAG },
1109     [LOAD_GLOBAL_BUILTIN] = { true, INSTR_FMT_IBC000, HAS_ARG_FLAG | HAS_DEOPT_FLAG },
1110     [LOAD_GLOBAL_MODULE] = { true, INSTR_FMT_IBC000, HAS_ARG_FLAG | HAS_DEOPT_FLAG },
1111     [LOAD_LOCALS] = { true, INSTR_FMT_IX, HAS_ERROR_FLAG | HAS_ESCAPES_FLAG },
1112     [LOAD_NAME] = { true, INSTR_FMT_IB, HAS_ARG_FLAG | HAS_NAME_FLAG | HAS_ERROR_FLAG | HAS_ERROR_NO_POP_FLAG | HAS_ESCAPES_FLAG },
1113     [LOAD_SUPER_ATTR] = { true, INSTR_FMT_IBC, HAS_ARG_FLAG | HAS_NAME_FLAG | HAS_ERROR_FLAG | HAS_ESCAPES_FLAG },
1114     [LOAD_SUPER_ATTR_ATTR] = { true, INSTR_FMT_IBC, HAS_ARG_FLAG | HAS_NAME_FLAG | HAS_DEOPT_FLAG | HAS_ERROR_FLAG | HAS_ESCAPES_FLAG },
1115     [LOAD_SUPER_ATTR_METHOD] = { true, INSTR_FMT_IBC, HAS_ARG_FLAG | HAS_NAME_FLAG | HAS_DEOPT_FLAG | HAS_ERROR_FLAG | HAS_ESCAPES_FLAG },
1116     [MAKE_CELL] = { true, INSTR_FMT_IB, HAS_ARG_FLAG | HAS_FREE_FLAG | HAS_ERROR_FLAG | HAS_ERROR_NO_POP_FLAG },
1117     [MAKE_FUNCTION] = { true, INSTR_FMT_IX, HAS_ERROR_FLAG | HAS_ERROR_NO_POP_FLAG | HAS_ESCAPES_FLAG },
1118     [MAP_ADD] = { true, INSTR_FMT_IB, HAS_ARG_FLAG | HAS_ERROR_FLAG | HAS_ESCAPES_FLAG },
1119     [MATCH_CLASS] = { true, INSTR_FMT_IB, HAS_ARG_FLAG | HAS_ERROR_FLAG | HAS_ESCAPES_FLAG },
1120     [MATCH_KEYS] = { true, INSTR_FMT_IX, HAS_ERROR_FLAG | HAS_ESCAPES_FLAG },
1121     [MATCH_MAPPING] = { true, INSTR_FMT_IX, 0 },
1122     [MATCH_SEQUENCE] = { true, INSTR_FMT_IX, 0 },
1123     [NOP] = { true, INSTR_FMT_IX, HAS_PURE_FLAG },
1124     [POP_EXCEPT] = { true, INSTR_FMT_IX, HAS_ESCAPES_FLAG },
1125     [POP_JUMP_IF_FALSE] = { true, INSTR_FMT_IBC, HAS_ARG_FLAG | HAS_JUMP_FLAG },
1126     [POP_JUMP_IF_NONE] = { true, INSTR_FMT_IBC, HAS_ARG_FLAG | HAS_JUMP_FLAG },
1127     [POP_JUMP_IF_NOT_NONE] = { true, INSTR_FMT_IBC, HAS_ARG_FLAG | HAS_JUMP_FLAG },
1128     [POP_JUMP_IF_TRUE] = { true, INSTR_FMT_IBC, HAS_ARG_FLAG | HAS_JUMP_FLAG },
1129     [POP_TOP] = { true, INSTR_FMT_IX, HAS_PURE_FLAG },
1130     [PUSH_EXC_INFO] = { true, INSTR_FMT_IX, 0 },
1131     [PUSH_NULL] = { true, INSTR_FMT_IX, HAS_PURE_FLAG },
1132     [RAISE_VARARGS] = { true, INSTR_FMT_IB, HAS_ARG_FLAG | HAS_ERROR_FLAG | HAS_ERROR_NO_POP_FLAG | HAS_ESCAPES_FLAG },
1133     [RERAISE] = { true, INSTR_FMT_IB, HAS_ARG_FLAG | HAS_ERROR_FLAG | HAS_ERROR_NO_POP_FLAG | HAS_ESCAPES_FLAG },
1134     [RESERVED] = { true, INSTR_FMT_IX, 0 },
1135     [RESUME] = { true, INSTR_FMT_IB, HAS_ARG_FLAG | HAS_EVAL_BREAK_FLAG | HAS_ERROR_FLAG | HAS_ESCAPES_FLAG },
1136     [RESUME_CHECK] = { true, INSTR_FMT_IX, HAS_DEOPT_FLAG },
1137     [RETURN_CONST] = { true, INSTR_FMT_IB, HAS_ARG_FLAG | HAS_CONST_FLAG },
1138     [RETURN_GENERATOR] = { true, INSTR_FMT_IX, HAS_ERROR_FLAG | HAS_ERROR_NO_POP_FLAG | HAS_ESCAPES_FLAG },
1139     [RETURN_VALUE] = { true, INSTR_FMT_IX, 0 },
1140     [SEND] = { true, INSTR_FMT_IBC, HAS_ARG_FLAG | HAS_JUMP_FLAG | HAS_ERROR_FLAG | HAS_ERROR_NO_POP_FLAG | HAS_ESCAPES_FLAG },
1141     [SEND_GEN] = { true, INSTR_FMT_IBC, HAS_ARG_FLAG | HAS_DEOPT_FLAG },
1142     [SETUP_ANNOTATIONS] = { true, INSTR_FMT_IX, HAS_ERROR_FLAG | HAS_ESCAPES_FLAG },
1143     [SET_ADD] = { true, INSTR_FMT_IB, HAS_ARG_FLAG | HAS_ERROR_FLAG | HAS_ESCAPES_FLAG },
1144     [SET_FUNCTION_ATTRIBUTE] = { true, INSTR_FMT_IB, HAS_ARG_FLAG | HAS_ESCAPES_FLAG },
1145     [SET_UPDATE] = { true, INSTR_FMT_IB, HAS_ARG_FLAG | HAS_ERROR_FLAG | HAS_ESCAPES_FLAG },
1146     [STORE_ATTR] = { true, INSTR_FMT_IBC000, HAS_ARG_FLAG | HAS_NAME_FLAG | HAS_ERROR_FLAG | HAS_ESCAPES_FLAG },
1147     [STORE_ATTR_INSTANCE_VALUE] = { true, INSTR_FMT_IXC000, HAS_DEOPT_FLAG | HAS_EXIT_FLAG },
1148     [STORE_ATTR_SLOT] = { true, INSTR_FMT_IXC000, HAS_EXIT_FLAG },
1149     [STORE_ATTR_WITH_HINT] = { true, INSTR_FMT_IBC000, HAS_ARG_FLAG | HAS_NAME_FLAG | HAS_DEOPT_FLAG | HAS_ESCAPES_FLAG },
1150     [STORE_DEREF] = { true, INSTR_FMT_IB, HAS_ARG_FLAG | HAS_FREE_FLAG | HAS_ESCAPES_FLAG },
1151     [STORE_FAST] = { true, INSTR_FMT_IB, HAS_ARG_FLAG | HAS_LOCAL_FLAG },
1152     [STORE_FAST_LOAD_FAST] = { true, INSTR_FMT_IB, HAS_ARG_FLAG | HAS_LOCAL_FLAG },
1153     [STORE_FAST_STORE_FAST] = { true, INSTR_FMT_IB, HAS_ARG_FLAG | HAS_LOCAL_FLAG },
1154     [STORE_GLOBAL] = { true, INSTR_FMT_IB, HAS_ARG_FLAG | HAS_NAME_FLAG | HAS_ERROR_FLAG | HAS_ESCAPES_FLAG },
1155     [STORE_NAME] = { true, INSTR_FMT_IB, HAS_ARG_FLAG | HAS_NAME_FLAG | HAS_ERROR_FLAG | HAS_ESCAPES_FLAG },
1156     [STORE_SLICE] = { true, INSTR_FMT_IX, HAS_ERROR_FLAG | HAS_ESCAPES_FLAG },
1157     [STORE_SUBSCR] = { true, INSTR_FMT_IXC, HAS_ERROR_FLAG | HAS_ESCAPES_FLAG },
1158     [STORE_SUBSCR_DICT] = { true, INSTR_FMT_IXC, HAS_DEOPT_FLAG | HAS_ERROR_FLAG | HAS_ESCAPES_FLAG },
1159     [STORE_SUBSCR_LIST_INT] = { true, INSTR_FMT_IXC, HAS_DEOPT_FLAG },
1160     [SWAP] = { true, INSTR_FMT_IB, HAS_ARG_FLAG | HAS_PURE_FLAG },
1161     [TO_BOOL] = { true, INSTR_FMT_IXC00, HAS_ERROR_FLAG | HAS_ESCAPES_FLAG },
1162     [TO_BOOL_ALWAYS_TRUE] = { true, INSTR_FMT_IXC00, HAS_EXIT_FLAG },
1163     [TO_BOOL_BOOL] = { true, INSTR_FMT_IXC00, HAS_EXIT_FLAG },
1164     [TO_BOOL_INT] = { true, INSTR_FMT_IXC00, HAS_EXIT_FLAG | HAS_ESCAPES_FLAG },
1165     [TO_BOOL_LIST] = { true, INSTR_FMT_IXC00, HAS_EXIT_FLAG },
1166     [TO_BOOL_NONE] = { true, INSTR_FMT_IXC00, HAS_EXIT_FLAG },
1167     [TO_BOOL_STR] = { true, INSTR_FMT_IXC00, HAS_EXIT_FLAG | HAS_ESCAPES_FLAG },
1168     [UNARY_INVERT] = { true, INSTR_FMT_IX, HAS_ERROR_FLAG | HAS_ESCAPES_FLAG },
1169     [UNARY_NEGATIVE] = { true, INSTR_FMT_IX, HAS_ERROR_FLAG | HAS_ESCAPES_FLAG },
1170     [UNARY_NOT] = { true, INSTR_FMT_IX, HAS_PURE_FLAG },
1171     [UNPACK_EX] = { true, INSTR_FMT_IB, HAS_ARG_FLAG | HAS_ERROR_FLAG | HAS_ESCAPES_FLAG },
1172     [UNPACK_SEQUENCE] = { true, INSTR_FMT_IBC, HAS_ARG_FLAG | HAS_ERROR_FLAG | HAS_ESCAPES_FLAG },
1173     [UNPACK_SEQUENCE_LIST] = { true, INSTR_FMT_IBC, HAS_ARG_FLAG | HAS_DEOPT_FLAG },
1174     [UNPACK_SEQUENCE_TUPLE] = { true, INSTR_FMT_IBC, HAS_ARG_FLAG | HAS_DEOPT_FLAG },
1175     [UNPACK_SEQUENCE_TWO_TUPLE] = { true, INSTR_FMT_IBC, HAS_ARG_FLAG | HAS_DEOPT_FLAG },
1176     [WITH_EXCEPT_START] = { true, INSTR_FMT_IX, HAS_ERROR_FLAG | HAS_ESCAPES_FLAG },
1177     [YIELD_VALUE] = { true, INSTR_FMT_IB, HAS_ARG_FLAG | HAS_ESCAPES_FLAG },
1178     [JUMP] = { true, -1, HAS_ARG_FLAG | HAS_JUMP_FLAG | HAS_EVAL_BREAK_FLAG | HAS_ERROR_FLAG | HAS_ESCAPES_FLAG },
1179     [JUMP_NO_INTERRUPT] = { true, -1, HAS_ARG_FLAG | HAS_JUMP_FLAG },
1180     [LOAD_CLOSURE] = { true, -1, HAS_ARG_FLAG | HAS_LOCAL_FLAG | HAS_PURE_FLAG },
1181     [LOAD_METHOD] = { true, -1, HAS_ARG_FLAG | HAS_NAME_FLAG | HAS_ERROR_FLAG | HAS_ESCAPES_FLAG },
1182     [LOAD_SUPER_METHOD] = { true, -1, HAS_ARG_FLAG | HAS_NAME_FLAG | HAS_ERROR_FLAG | HAS_ESCAPES_FLAG },
1183     [LOAD_ZERO_SUPER_ATTR] = { true, -1, HAS_ARG_FLAG | HAS_NAME_FLAG | HAS_ERROR_FLAG | HAS_ESCAPES_FLAG },
1184     [LOAD_ZERO_SUPER_METHOD] = { true, -1, HAS_ARG_FLAG | HAS_NAME_FLAG | HAS_ERROR_FLAG | HAS_ESCAPES_FLAG },
1185     [POP_BLOCK] = { true, -1, HAS_PURE_FLAG },
1186     [SETUP_CLEANUP] = { true, -1, HAS_PURE_FLAG | HAS_ARG_FLAG },
1187     [SETUP_FINALLY] = { true, -1, HAS_PURE_FLAG | HAS_ARG_FLAG },
1188     [SETUP_WITH] = { true, -1, HAS_PURE_FLAG | HAS_ARG_FLAG },
1189     [STORE_FAST_MAYBE_NULL] = { true, -1, HAS_ARG_FLAG | HAS_LOCAL_FLAG },
1190 };
1191 #endif
1192 
1193 #define MAX_UOP_PER_EXPANSION 8
1194 struct opcode_macro_expansion {
1195     int nuops;
1196     struct { int16_t uop; int8_t size; int8_t offset; } uops[MAX_UOP_PER_EXPANSION];
1197 };
1198 extern const struct opcode_macro_expansion _PyOpcode_macro_expansion[256];
1199 
1200 #ifdef NEED_OPCODE_METADATA
1201 const struct opcode_macro_expansion
1202 _PyOpcode_macro_expansion[256] = {
1203     [BINARY_OP] = { .nuops = 1, .uops = { { _BINARY_OP, 0, 0 } } },
1204     [BINARY_OP_ADD_FLOAT] = { .nuops = 2, .uops = { { _GUARD_BOTH_FLOAT, 0, 0 }, { _BINARY_OP_ADD_FLOAT, 0, 0 } } },
1205     [BINARY_OP_ADD_INT] = { .nuops = 2, .uops = { { _GUARD_BOTH_INT, 0, 0 }, { _BINARY_OP_ADD_INT, 0, 0 } } },
1206     [BINARY_OP_ADD_UNICODE] = { .nuops = 2, .uops = { { _GUARD_BOTH_UNICODE, 0, 0 }, { _BINARY_OP_ADD_UNICODE, 0, 0 } } },
1207     [BINARY_OP_MULTIPLY_FLOAT] = { .nuops = 2, .uops = { { _GUARD_BOTH_FLOAT, 0, 0 }, { _BINARY_OP_MULTIPLY_FLOAT, 0, 0 } } },
1208     [BINARY_OP_MULTIPLY_INT] = { .nuops = 2, .uops = { { _GUARD_BOTH_INT, 0, 0 }, { _BINARY_OP_MULTIPLY_INT, 0, 0 } } },
1209     [BINARY_OP_SUBTRACT_FLOAT] = { .nuops = 2, .uops = { { _GUARD_BOTH_FLOAT, 0, 0 }, { _BINARY_OP_SUBTRACT_FLOAT, 0, 0 } } },
1210     [BINARY_OP_SUBTRACT_INT] = { .nuops = 2, .uops = { { _GUARD_BOTH_INT, 0, 0 }, { _BINARY_OP_SUBTRACT_INT, 0, 0 } } },
1211     [BINARY_SLICE] = { .nuops = 1, .uops = { { _BINARY_SLICE, 0, 0 } } },
1212     [BINARY_SUBSCR] = { .nuops = 1, .uops = { { _BINARY_SUBSCR, 0, 0 } } },
1213     [BINARY_SUBSCR_DICT] = { .nuops = 1, .uops = { { _BINARY_SUBSCR_DICT, 0, 0 } } },
1214     [BINARY_SUBSCR_LIST_INT] = { .nuops = 1, .uops = { { _BINARY_SUBSCR_LIST_INT, 0, 0 } } },
1215     [BINARY_SUBSCR_STR_INT] = { .nuops = 1, .uops = { { _BINARY_SUBSCR_STR_INT, 0, 0 } } },
1216     [BINARY_SUBSCR_TUPLE_INT] = { .nuops = 1, .uops = { { _BINARY_SUBSCR_TUPLE_INT, 0, 0 } } },
1217     [BUILD_CONST_KEY_MAP] = { .nuops = 1, .uops = { { _BUILD_CONST_KEY_MAP, 0, 0 } } },
1218     [BUILD_LIST] = { .nuops = 1, .uops = { { _BUILD_LIST, 0, 0 } } },
1219     [BUILD_MAP] = { .nuops = 1, .uops = { { _BUILD_MAP, 0, 0 } } },
1220     [BUILD_SLICE] = { .nuops = 1, .uops = { { _BUILD_SLICE, 0, 0 } } },
1221     [BUILD_STRING] = { .nuops = 1, .uops = { { _BUILD_STRING, 0, 0 } } },
1222     [BUILD_TUPLE] = { .nuops = 1, .uops = { { _BUILD_TUPLE, 0, 0 } } },
1223     [CALL_BOUND_METHOD_EXACT_ARGS] = { .nuops = 8, .uops = { { _CHECK_PEP_523, 0, 0 }, { _CHECK_CALL_BOUND_METHOD_EXACT_ARGS, 0, 0 }, { _INIT_CALL_BOUND_METHOD_EXACT_ARGS, 0, 0 }, { _CHECK_FUNCTION_EXACT_ARGS, 2, 1 }, { _CHECK_STACK_SPACE, 0, 0 }, { _INIT_CALL_PY_EXACT_ARGS, 0, 0 }, { _SAVE_RETURN_OFFSET, 7, 3 }, { _PUSH_FRAME, 0, 0 } } },
1224     [CALL_BOUND_METHOD_GENERAL] = { .nuops = 6, .uops = { { _CHECK_PEP_523, 0, 0 }, { _CHECK_METHOD_VERSION, 2, 1 }, { _EXPAND_METHOD, 0, 0 }, { _PY_FRAME_GENERAL, 0, 0 }, { _SAVE_RETURN_OFFSET, 7, 3 }, { _PUSH_FRAME, 0, 0 } } },
1225     [CALL_BUILTIN_CLASS] = { .nuops = 2, .uops = { { _CALL_BUILTIN_CLASS, 0, 0 }, { _CHECK_PERIODIC, 0, 0 } } },
1226     [CALL_BUILTIN_FAST] = { .nuops = 2, .uops = { { _CALL_BUILTIN_FAST, 0, 0 }, { _CHECK_PERIODIC, 0, 0 } } },
1227     [CALL_BUILTIN_FAST_WITH_KEYWORDS] = { .nuops = 2, .uops = { { _CALL_BUILTIN_FAST_WITH_KEYWORDS, 0, 0 }, { _CHECK_PERIODIC, 0, 0 } } },
1228     [CALL_BUILTIN_O] = { .nuops = 2, .uops = { { _CALL_BUILTIN_O, 0, 0 }, { _CHECK_PERIODIC, 0, 0 } } },
1229     [CALL_INTRINSIC_1] = { .nuops = 1, .uops = { { _CALL_INTRINSIC_1, 0, 0 } } },
1230     [CALL_INTRINSIC_2] = { .nuops = 1, .uops = { { _CALL_INTRINSIC_2, 0, 0 } } },
1231     [CALL_ISINSTANCE] = { .nuops = 1, .uops = { { _CALL_ISINSTANCE, 0, 0 } } },
1232     [CALL_LEN] = { .nuops = 1, .uops = { { _CALL_LEN, 0, 0 } } },
1233     [CALL_METHOD_DESCRIPTOR_FAST] = { .nuops = 2, .uops = { { _CALL_METHOD_DESCRIPTOR_FAST, 0, 0 }, { _CHECK_PERIODIC, 0, 0 } } },
1234     [CALL_METHOD_DESCRIPTOR_FAST_WITH_KEYWORDS] = { .nuops = 2, .uops = { { _CALL_METHOD_DESCRIPTOR_FAST_WITH_KEYWORDS, 0, 0 }, { _CHECK_PERIODIC, 0, 0 } } },
1235     [CALL_METHOD_DESCRIPTOR_NOARGS] = { .nuops = 2, .uops = { { _CALL_METHOD_DESCRIPTOR_NOARGS, 0, 0 }, { _CHECK_PERIODIC, 0, 0 } } },
1236     [CALL_METHOD_DESCRIPTOR_O] = { .nuops = 2, .uops = { { _CALL_METHOD_DESCRIPTOR_O, 0, 0 }, { _CHECK_PERIODIC, 0, 0 } } },
1237     [CALL_NON_PY_GENERAL] = { .nuops = 3, .uops = { { _CHECK_IS_NOT_PY_CALLABLE, 0, 0 }, { _CALL_NON_PY_GENERAL, 0, 0 }, { _CHECK_PERIODIC, 0, 0 } } },
1238     [CALL_PY_EXACT_ARGS] = { .nuops = 6, .uops = { { _CHECK_PEP_523, 0, 0 }, { _CHECK_FUNCTION_EXACT_ARGS, 2, 1 }, { _CHECK_STACK_SPACE, 0, 0 }, { _INIT_CALL_PY_EXACT_ARGS, 0, 0 }, { _SAVE_RETURN_OFFSET, 7, 3 }, { _PUSH_FRAME, 0, 0 } } },
1239     [CALL_PY_GENERAL] = { .nuops = 5, .uops = { { _CHECK_PEP_523, 0, 0 }, { _CHECK_FUNCTION_VERSION, 2, 1 }, { _PY_FRAME_GENERAL, 0, 0 }, { _SAVE_RETURN_OFFSET, 7, 3 }, { _PUSH_FRAME, 0, 0 } } },
1240     [CALL_STR_1] = { .nuops = 2, .uops = { { _CALL_STR_1, 0, 0 }, { _CHECK_PERIODIC, 0, 0 } } },
1241     [CALL_TUPLE_1] = { .nuops = 2, .uops = { { _CALL_TUPLE_1, 0, 0 }, { _CHECK_PERIODIC, 0, 0 } } },
1242     [CALL_TYPE_1] = { .nuops = 1, .uops = { { _CALL_TYPE_1, 0, 0 } } },
1243     [CHECK_EG_MATCH] = { .nuops = 1, .uops = { { _CHECK_EG_MATCH, 0, 0 } } },
1244     [CHECK_EXC_MATCH] = { .nuops = 1, .uops = { { _CHECK_EXC_MATCH, 0, 0 } } },
1245     [COMPARE_OP] = { .nuops = 1, .uops = { { _COMPARE_OP, 0, 0 } } },
1246     [COMPARE_OP_FLOAT] = { .nuops = 2, .uops = { { _GUARD_BOTH_FLOAT, 0, 0 }, { _COMPARE_OP_FLOAT, 0, 0 } } },
1247     [COMPARE_OP_INT] = { .nuops = 2, .uops = { { _GUARD_BOTH_INT, 0, 0 }, { _COMPARE_OP_INT, 0, 0 } } },
1248     [COMPARE_OP_STR] = { .nuops = 2, .uops = { { _GUARD_BOTH_UNICODE, 0, 0 }, { _COMPARE_OP_STR, 0, 0 } } },
1249     [CONTAINS_OP] = { .nuops = 1, .uops = { { _CONTAINS_OP, 0, 0 } } },
1250     [CONTAINS_OP_DICT] = { .nuops = 1, .uops = { { _CONTAINS_OP_DICT, 0, 0 } } },
1251     [CONTAINS_OP_SET] = { .nuops = 1, .uops = { { _CONTAINS_OP_SET, 0, 0 } } },
1252     [CONVERT_VALUE] = { .nuops = 1, .uops = { { _CONVERT_VALUE, 0, 0 } } },
1253     [COPY] = { .nuops = 1, .uops = { { _COPY, 0, 0 } } },
1254     [COPY_FREE_VARS] = { .nuops = 1, .uops = { { _COPY_FREE_VARS, 0, 0 } } },
1255     [DELETE_ATTR] = { .nuops = 1, .uops = { { _DELETE_ATTR, 0, 0 } } },
1256     [DELETE_DEREF] = { .nuops = 1, .uops = { { _DELETE_DEREF, 0, 0 } } },
1257     [DELETE_FAST] = { .nuops = 1, .uops = { { _DELETE_FAST, 0, 0 } } },
1258     [DELETE_GLOBAL] = { .nuops = 1, .uops = { { _DELETE_GLOBAL, 0, 0 } } },
1259     [DELETE_NAME] = { .nuops = 1, .uops = { { _DELETE_NAME, 0, 0 } } },
1260     [DELETE_SUBSCR] = { .nuops = 1, .uops = { { _DELETE_SUBSCR, 0, 0 } } },
1261     [DICT_MERGE] = { .nuops = 1, .uops = { { _DICT_MERGE, 0, 0 } } },
1262     [DICT_UPDATE] = { .nuops = 1, .uops = { { _DICT_UPDATE, 0, 0 } } },
1263     [END_FOR] = { .nuops = 1, .uops = { { _POP_TOP, 0, 0 } } },
1264     [END_SEND] = { .nuops = 1, .uops = { { _END_SEND, 0, 0 } } },
1265     [EXIT_INIT_CHECK] = { .nuops = 1, .uops = { { _EXIT_INIT_CHECK, 0, 0 } } },
1266     [FORMAT_SIMPLE] = { .nuops = 1, .uops = { { _FORMAT_SIMPLE, 0, 0 } } },
1267     [FORMAT_WITH_SPEC] = { .nuops = 1, .uops = { { _FORMAT_WITH_SPEC, 0, 0 } } },
1268     [FOR_ITER] = { .nuops = 1, .uops = { { _FOR_ITER, 9, 0 } } },
1269     [FOR_ITER_GEN] = { .nuops = 3, .uops = { { _CHECK_PEP_523, 0, 0 }, { _FOR_ITER_GEN_FRAME, 0, 0 }, { _PUSH_FRAME, 0, 0 } } },
1270     [FOR_ITER_LIST] = { .nuops = 3, .uops = { { _ITER_CHECK_LIST, 0, 0 }, { _ITER_JUMP_LIST, 9, 1 }, { _ITER_NEXT_LIST, 0, 0 } } },
1271     [FOR_ITER_RANGE] = { .nuops = 3, .uops = { { _ITER_CHECK_RANGE, 0, 0 }, { _ITER_JUMP_RANGE, 9, 1 }, { _ITER_NEXT_RANGE, 0, 0 } } },
1272     [FOR_ITER_TUPLE] = { .nuops = 3, .uops = { { _ITER_CHECK_TUPLE, 0, 0 }, { _ITER_JUMP_TUPLE, 9, 1 }, { _ITER_NEXT_TUPLE, 0, 0 } } },
1273     [GET_AITER] = { .nuops = 1, .uops = { { _GET_AITER, 0, 0 } } },
1274     [GET_ANEXT] = { .nuops = 1, .uops = { { _GET_ANEXT, 0, 0 } } },
1275     [GET_AWAITABLE] = { .nuops = 1, .uops = { { _GET_AWAITABLE, 0, 0 } } },
1276     [GET_ITER] = { .nuops = 1, .uops = { { _GET_ITER, 0, 0 } } },
1277     [GET_LEN] = { .nuops = 1, .uops = { { _GET_LEN, 0, 0 } } },
1278     [GET_YIELD_FROM_ITER] = { .nuops = 1, .uops = { { _GET_YIELD_FROM_ITER, 0, 0 } } },
1279     [IS_OP] = { .nuops = 1, .uops = { { _IS_OP, 0, 0 } } },
1280     [LIST_APPEND] = { .nuops = 1, .uops = { { _LIST_APPEND, 0, 0 } } },
1281     [LIST_EXTEND] = { .nuops = 1, .uops = { { _LIST_EXTEND, 0, 0 } } },
1282     [LOAD_ASSERTION_ERROR] = { .nuops = 1, .uops = { { _LOAD_ASSERTION_ERROR, 0, 0 } } },
1283     [LOAD_ATTR] = { .nuops = 1, .uops = { { _LOAD_ATTR, 0, 0 } } },
1284     [LOAD_ATTR_CLASS] = { .nuops = 2, .uops = { { _CHECK_ATTR_CLASS, 2, 1 }, { _LOAD_ATTR_CLASS, 4, 5 } } },
1285     [LOAD_ATTR_INSTANCE_VALUE] = { .nuops = 3, .uops = { { _GUARD_TYPE_VERSION, 2, 1 }, { _CHECK_MANAGED_OBJECT_HAS_VALUES, 0, 0 }, { _LOAD_ATTR_INSTANCE_VALUE, 1, 3 } } },
1286     [LOAD_ATTR_METHOD_LAZY_DICT] = { .nuops = 3, .uops = { { _GUARD_TYPE_VERSION, 2, 1 }, { _CHECK_ATTR_METHOD_LAZY_DICT, 1, 3 }, { _LOAD_ATTR_METHOD_LAZY_DICT, 4, 5 } } },
1287     [LOAD_ATTR_METHOD_NO_DICT] = { .nuops = 2, .uops = { { _GUARD_TYPE_VERSION, 2, 1 }, { _LOAD_ATTR_METHOD_NO_DICT, 4, 5 } } },
1288     [LOAD_ATTR_METHOD_WITH_VALUES] = { .nuops = 4, .uops = { { _GUARD_TYPE_VERSION, 2, 1 }, { _GUARD_DORV_VALUES_INST_ATTR_FROM_DICT, 0, 0 }, { _GUARD_KEYS_VERSION, 2, 3 }, { _LOAD_ATTR_METHOD_WITH_VALUES, 4, 5 } } },
1289     [LOAD_ATTR_MODULE] = { .nuops = 2, .uops = { { _CHECK_ATTR_MODULE, 2, 1 }, { _LOAD_ATTR_MODULE, 1, 3 } } },
1290     [LOAD_ATTR_NONDESCRIPTOR_NO_DICT] = { .nuops = 2, .uops = { { _GUARD_TYPE_VERSION, 2, 1 }, { _LOAD_ATTR_NONDESCRIPTOR_NO_DICT, 4, 5 } } },
1291     [LOAD_ATTR_NONDESCRIPTOR_WITH_VALUES] = { .nuops = 4, .uops = { { _GUARD_TYPE_VERSION, 2, 1 }, { _GUARD_DORV_VALUES_INST_ATTR_FROM_DICT, 0, 0 }, { _GUARD_KEYS_VERSION, 2, 3 }, { _LOAD_ATTR_NONDESCRIPTOR_WITH_VALUES, 4, 5 } } },
1292     [LOAD_ATTR_SLOT] = { .nuops = 2, .uops = { { _GUARD_TYPE_VERSION, 2, 1 }, { _LOAD_ATTR_SLOT, 1, 3 } } },
1293     [LOAD_ATTR_WITH_HINT] = { .nuops = 3, .uops = { { _GUARD_TYPE_VERSION, 2, 1 }, { _CHECK_ATTR_WITH_HINT, 0, 0 }, { _LOAD_ATTR_WITH_HINT, 1, 3 } } },
1294     [LOAD_BUILD_CLASS] = { .nuops = 1, .uops = { { _LOAD_BUILD_CLASS, 0, 0 } } },
1295     [LOAD_CONST] = { .nuops = 1, .uops = { { _LOAD_CONST, 0, 0 } } },
1296     [LOAD_DEREF] = { .nuops = 1, .uops = { { _LOAD_DEREF, 0, 0 } } },
1297     [LOAD_FAST] = { .nuops = 1, .uops = { { _LOAD_FAST, 0, 0 } } },
1298     [LOAD_FAST_AND_CLEAR] = { .nuops = 1, .uops = { { _LOAD_FAST_AND_CLEAR, 0, 0 } } },
1299     [LOAD_FAST_CHECK] = { .nuops = 1, .uops = { { _LOAD_FAST_CHECK, 0, 0 } } },
1300     [LOAD_FAST_LOAD_FAST] = { .nuops = 2, .uops = { { _LOAD_FAST, 5, 0 }, { _LOAD_FAST, 6, 0 } } },
1301     [LOAD_FROM_DICT_OR_DEREF] = { .nuops = 1, .uops = { { _LOAD_FROM_DICT_OR_DEREF, 0, 0 } } },
1302     [LOAD_GLOBAL] = { .nuops = 1, .uops = { { _LOAD_GLOBAL, 0, 0 } } },
1303     [LOAD_GLOBAL_BUILTIN] = { .nuops = 3, .uops = { { _GUARD_GLOBALS_VERSION, 1, 1 }, { _GUARD_BUILTINS_VERSION, 1, 2 }, { _LOAD_GLOBAL_BUILTINS, 1, 3 } } },
1304     [LOAD_GLOBAL_MODULE] = { .nuops = 2, .uops = { { _GUARD_GLOBALS_VERSION, 1, 1 }, { _LOAD_GLOBAL_MODULE, 1, 3 } } },
1305     [LOAD_LOCALS] = { .nuops = 1, .uops = { { _LOAD_LOCALS, 0, 0 } } },
1306     [LOAD_SUPER_ATTR_ATTR] = { .nuops = 1, .uops = { { _LOAD_SUPER_ATTR_ATTR, 0, 0 } } },
1307     [LOAD_SUPER_ATTR_METHOD] = { .nuops = 1, .uops = { { _LOAD_SUPER_ATTR_METHOD, 0, 0 } } },
1308     [MAKE_CELL] = { .nuops = 1, .uops = { { _MAKE_CELL, 0, 0 } } },
1309     [MAKE_FUNCTION] = { .nuops = 1, .uops = { { _MAKE_FUNCTION, 0, 0 } } },
1310     [MAP_ADD] = { .nuops = 1, .uops = { { _MAP_ADD, 0, 0 } } },
1311     [MATCH_CLASS] = { .nuops = 1, .uops = { { _MATCH_CLASS, 0, 0 } } },
1312     [MATCH_KEYS] = { .nuops = 1, .uops = { { _MATCH_KEYS, 0, 0 } } },
1313     [MATCH_MAPPING] = { .nuops = 1, .uops = { { _MATCH_MAPPING, 0, 0 } } },
1314     [MATCH_SEQUENCE] = { .nuops = 1, .uops = { { _MATCH_SEQUENCE, 0, 0 } } },
1315     [NOP] = { .nuops = 1, .uops = { { _NOP, 0, 0 } } },
1316     [POP_EXCEPT] = { .nuops = 1, .uops = { { _POP_EXCEPT, 0, 0 } } },
1317     [POP_JUMP_IF_FALSE] = { .nuops = 1, .uops = { { _POP_JUMP_IF_FALSE, 9, 1 } } },
1318     [POP_JUMP_IF_NONE] = { .nuops = 2, .uops = { { _IS_NONE, 0, 0 }, { _POP_JUMP_IF_TRUE, 9, 1 } } },
1319     [POP_JUMP_IF_NOT_NONE] = { .nuops = 2, .uops = { { _IS_NONE, 0, 0 }, { _POP_JUMP_IF_FALSE, 9, 1 } } },
1320     [POP_JUMP_IF_TRUE] = { .nuops = 1, .uops = { { _POP_JUMP_IF_TRUE, 9, 1 } } },
1321     [POP_TOP] = { .nuops = 1, .uops = { { _POP_TOP, 0, 0 } } },
1322     [PUSH_EXC_INFO] = { .nuops = 1, .uops = { { _PUSH_EXC_INFO, 0, 0 } } },
1323     [PUSH_NULL] = { .nuops = 1, .uops = { { _PUSH_NULL, 0, 0 } } },
1324     [RESUME_CHECK] = { .nuops = 1, .uops = { { _RESUME_CHECK, 0, 0 } } },
1325     [RETURN_CONST] = { .nuops = 2, .uops = { { _LOAD_CONST, 0, 0 }, { _POP_FRAME, 0, 0 } } },
1326     [RETURN_GENERATOR] = { .nuops = 1, .uops = { { _RETURN_GENERATOR, 0, 0 } } },
1327     [RETURN_VALUE] = { .nuops = 1, .uops = { { _POP_FRAME, 0, 0 } } },
1328     [SETUP_ANNOTATIONS] = { .nuops = 1, .uops = { { _SETUP_ANNOTATIONS, 0, 0 } } },
1329     [SET_ADD] = { .nuops = 1, .uops = { { _SET_ADD, 0, 0 } } },
1330     [SET_FUNCTION_ATTRIBUTE] = { .nuops = 1, .uops = { { _SET_FUNCTION_ATTRIBUTE, 0, 0 } } },
1331     [SET_UPDATE] = { .nuops = 1, .uops = { { _SET_UPDATE, 0, 0 } } },
1332     [STORE_ATTR] = { .nuops = 1, .uops = { { _STORE_ATTR, 0, 0 } } },
1333     [STORE_ATTR_INSTANCE_VALUE] = { .nuops = 3, .uops = { { _GUARD_TYPE_VERSION, 2, 1 }, { _GUARD_DORV_NO_DICT, 0, 0 }, { _STORE_ATTR_INSTANCE_VALUE, 1, 3 } } },
1334     [STORE_ATTR_SLOT] = { .nuops = 2, .uops = { { _GUARD_TYPE_VERSION, 2, 1 }, { _STORE_ATTR_SLOT, 1, 3 } } },
1335     [STORE_DEREF] = { .nuops = 1, .uops = { { _STORE_DEREF, 0, 0 } } },
1336     [STORE_FAST] = { .nuops = 1, .uops = { { _STORE_FAST, 0, 0 } } },
1337     [STORE_FAST_LOAD_FAST] = { .nuops = 2, .uops = { { _STORE_FAST, 5, 0 }, { _LOAD_FAST, 6, 0 } } },
1338     [STORE_FAST_STORE_FAST] = { .nuops = 2, .uops = { { _STORE_FAST, 5, 0 }, { _STORE_FAST, 6, 0 } } },
1339     [STORE_GLOBAL] = { .nuops = 1, .uops = { { _STORE_GLOBAL, 0, 0 } } },
1340     [STORE_NAME] = { .nuops = 1, .uops = { { _STORE_NAME, 0, 0 } } },
1341     [STORE_SLICE] = { .nuops = 1, .uops = { { _STORE_SLICE, 0, 0 } } },
1342     [STORE_SUBSCR] = { .nuops = 1, .uops = { { _STORE_SUBSCR, 0, 0 } } },
1343     [STORE_SUBSCR_DICT] = { .nuops = 1, .uops = { { _STORE_SUBSCR_DICT, 0, 0 } } },
1344     [STORE_SUBSCR_LIST_INT] = { .nuops = 1, .uops = { { _STORE_SUBSCR_LIST_INT, 0, 0 } } },
1345     [SWAP] = { .nuops = 1, .uops = { { _SWAP, 0, 0 } } },
1346     [TO_BOOL] = { .nuops = 1, .uops = { { _TO_BOOL, 0, 0 } } },
1347     [TO_BOOL_ALWAYS_TRUE] = { .nuops = 2, .uops = { { _GUARD_TYPE_VERSION, 2, 1 }, { _REPLACE_WITH_TRUE, 0, 0 } } },
1348     [TO_BOOL_BOOL] = { .nuops = 1, .uops = { { _TO_BOOL_BOOL, 0, 0 } } },
1349     [TO_BOOL_INT] = { .nuops = 1, .uops = { { _TO_BOOL_INT, 0, 0 } } },
1350     [TO_BOOL_LIST] = { .nuops = 1, .uops = { { _TO_BOOL_LIST, 0, 0 } } },
1351     [TO_BOOL_NONE] = { .nuops = 1, .uops = { { _TO_BOOL_NONE, 0, 0 } } },
1352     [TO_BOOL_STR] = { .nuops = 1, .uops = { { _TO_BOOL_STR, 0, 0 } } },
1353     [UNARY_INVERT] = { .nuops = 1, .uops = { { _UNARY_INVERT, 0, 0 } } },
1354     [UNARY_NEGATIVE] = { .nuops = 1, .uops = { { _UNARY_NEGATIVE, 0, 0 } } },
1355     [UNARY_NOT] = { .nuops = 1, .uops = { { _UNARY_NOT, 0, 0 } } },
1356     [UNPACK_EX] = { .nuops = 1, .uops = { { _UNPACK_EX, 0, 0 } } },
1357     [UNPACK_SEQUENCE] = { .nuops = 1, .uops = { { _UNPACK_SEQUENCE, 0, 0 } } },
1358     [UNPACK_SEQUENCE_LIST] = { .nuops = 1, .uops = { { _UNPACK_SEQUENCE_LIST, 0, 0 } } },
1359     [UNPACK_SEQUENCE_TUPLE] = { .nuops = 1, .uops = { { _UNPACK_SEQUENCE_TUPLE, 0, 0 } } },
1360     [UNPACK_SEQUENCE_TWO_TUPLE] = { .nuops = 1, .uops = { { _UNPACK_SEQUENCE_TWO_TUPLE, 0, 0 } } },
1361     [WITH_EXCEPT_START] = { .nuops = 1, .uops = { { _WITH_EXCEPT_START, 0, 0 } } },
1362     [YIELD_VALUE] = { .nuops = 1, .uops = { { _YIELD_VALUE, 0, 0 } } },
1363 };
1364 #endif // NEED_OPCODE_METADATA
1365 
1366 extern const char *_PyOpcode_OpName[268];
1367 #ifdef NEED_OPCODE_METADATA
1368 const char *_PyOpcode_OpName[268] = {
1369     [BEFORE_ASYNC_WITH] = "BEFORE_ASYNC_WITH",
1370     [BEFORE_WITH] = "BEFORE_WITH",
1371     [BINARY_OP] = "BINARY_OP",
1372     [BINARY_OP_ADD_FLOAT] = "BINARY_OP_ADD_FLOAT",
1373     [BINARY_OP_ADD_INT] = "BINARY_OP_ADD_INT",
1374     [BINARY_OP_ADD_UNICODE] = "BINARY_OP_ADD_UNICODE",
1375     [BINARY_OP_INPLACE_ADD_UNICODE] = "BINARY_OP_INPLACE_ADD_UNICODE",
1376     [BINARY_OP_MULTIPLY_FLOAT] = "BINARY_OP_MULTIPLY_FLOAT",
1377     [BINARY_OP_MULTIPLY_INT] = "BINARY_OP_MULTIPLY_INT",
1378     [BINARY_OP_SUBTRACT_FLOAT] = "BINARY_OP_SUBTRACT_FLOAT",
1379     [BINARY_OP_SUBTRACT_INT] = "BINARY_OP_SUBTRACT_INT",
1380     [BINARY_SLICE] = "BINARY_SLICE",
1381     [BINARY_SUBSCR] = "BINARY_SUBSCR",
1382     [BINARY_SUBSCR_DICT] = "BINARY_SUBSCR_DICT",
1383     [BINARY_SUBSCR_GETITEM] = "BINARY_SUBSCR_GETITEM",
1384     [BINARY_SUBSCR_LIST_INT] = "BINARY_SUBSCR_LIST_INT",
1385     [BINARY_SUBSCR_STR_INT] = "BINARY_SUBSCR_STR_INT",
1386     [BINARY_SUBSCR_TUPLE_INT] = "BINARY_SUBSCR_TUPLE_INT",
1387     [BUILD_CONST_KEY_MAP] = "BUILD_CONST_KEY_MAP",
1388     [BUILD_LIST] = "BUILD_LIST",
1389     [BUILD_MAP] = "BUILD_MAP",
1390     [BUILD_SET] = "BUILD_SET",
1391     [BUILD_SLICE] = "BUILD_SLICE",
1392     [BUILD_STRING] = "BUILD_STRING",
1393     [BUILD_TUPLE] = "BUILD_TUPLE",
1394     [CACHE] = "CACHE",
1395     [CALL] = "CALL",
1396     [CALL_ALLOC_AND_ENTER_INIT] = "CALL_ALLOC_AND_ENTER_INIT",
1397     [CALL_BOUND_METHOD_EXACT_ARGS] = "CALL_BOUND_METHOD_EXACT_ARGS",
1398     [CALL_BOUND_METHOD_GENERAL] = "CALL_BOUND_METHOD_GENERAL",
1399     [CALL_BUILTIN_CLASS] = "CALL_BUILTIN_CLASS",
1400     [CALL_BUILTIN_FAST] = "CALL_BUILTIN_FAST",
1401     [CALL_BUILTIN_FAST_WITH_KEYWORDS] = "CALL_BUILTIN_FAST_WITH_KEYWORDS",
1402     [CALL_BUILTIN_O] = "CALL_BUILTIN_O",
1403     [CALL_FUNCTION_EX] = "CALL_FUNCTION_EX",
1404     [CALL_INTRINSIC_1] = "CALL_INTRINSIC_1",
1405     [CALL_INTRINSIC_2] = "CALL_INTRINSIC_2",
1406     [CALL_ISINSTANCE] = "CALL_ISINSTANCE",
1407     [CALL_KW] = "CALL_KW",
1408     [CALL_LEN] = "CALL_LEN",
1409     [CALL_LIST_APPEND] = "CALL_LIST_APPEND",
1410     [CALL_METHOD_DESCRIPTOR_FAST] = "CALL_METHOD_DESCRIPTOR_FAST",
1411     [CALL_METHOD_DESCRIPTOR_FAST_WITH_KEYWORDS] = "CALL_METHOD_DESCRIPTOR_FAST_WITH_KEYWORDS",
1412     [CALL_METHOD_DESCRIPTOR_NOARGS] = "CALL_METHOD_DESCRIPTOR_NOARGS",
1413     [CALL_METHOD_DESCRIPTOR_O] = "CALL_METHOD_DESCRIPTOR_O",
1414     [CALL_NON_PY_GENERAL] = "CALL_NON_PY_GENERAL",
1415     [CALL_PY_EXACT_ARGS] = "CALL_PY_EXACT_ARGS",
1416     [CALL_PY_GENERAL] = "CALL_PY_GENERAL",
1417     [CALL_STR_1] = "CALL_STR_1",
1418     [CALL_TUPLE_1] = "CALL_TUPLE_1",
1419     [CALL_TYPE_1] = "CALL_TYPE_1",
1420     [CHECK_EG_MATCH] = "CHECK_EG_MATCH",
1421     [CHECK_EXC_MATCH] = "CHECK_EXC_MATCH",
1422     [CLEANUP_THROW] = "CLEANUP_THROW",
1423     [COMPARE_OP] = "COMPARE_OP",
1424     [COMPARE_OP_FLOAT] = "COMPARE_OP_FLOAT",
1425     [COMPARE_OP_INT] = "COMPARE_OP_INT",
1426     [COMPARE_OP_STR] = "COMPARE_OP_STR",
1427     [CONTAINS_OP] = "CONTAINS_OP",
1428     [CONTAINS_OP_DICT] = "CONTAINS_OP_DICT",
1429     [CONTAINS_OP_SET] = "CONTAINS_OP_SET",
1430     [CONVERT_VALUE] = "CONVERT_VALUE",
1431     [COPY] = "COPY",
1432     [COPY_FREE_VARS] = "COPY_FREE_VARS",
1433     [DELETE_ATTR] = "DELETE_ATTR",
1434     [DELETE_DEREF] = "DELETE_DEREF",
1435     [DELETE_FAST] = "DELETE_FAST",
1436     [DELETE_GLOBAL] = "DELETE_GLOBAL",
1437     [DELETE_NAME] = "DELETE_NAME",
1438     [DELETE_SUBSCR] = "DELETE_SUBSCR",
1439     [DICT_MERGE] = "DICT_MERGE",
1440     [DICT_UPDATE] = "DICT_UPDATE",
1441     [END_ASYNC_FOR] = "END_ASYNC_FOR",
1442     [END_FOR] = "END_FOR",
1443     [END_SEND] = "END_SEND",
1444     [ENTER_EXECUTOR] = "ENTER_EXECUTOR",
1445     [EXIT_INIT_CHECK] = "EXIT_INIT_CHECK",
1446     [EXTENDED_ARG] = "EXTENDED_ARG",
1447     [FORMAT_SIMPLE] = "FORMAT_SIMPLE",
1448     [FORMAT_WITH_SPEC] = "FORMAT_WITH_SPEC",
1449     [FOR_ITER] = "FOR_ITER",
1450     [FOR_ITER_GEN] = "FOR_ITER_GEN",
1451     [FOR_ITER_LIST] = "FOR_ITER_LIST",
1452     [FOR_ITER_RANGE] = "FOR_ITER_RANGE",
1453     [FOR_ITER_TUPLE] = "FOR_ITER_TUPLE",
1454     [GET_AITER] = "GET_AITER",
1455     [GET_ANEXT] = "GET_ANEXT",
1456     [GET_AWAITABLE] = "GET_AWAITABLE",
1457     [GET_ITER] = "GET_ITER",
1458     [GET_LEN] = "GET_LEN",
1459     [GET_YIELD_FROM_ITER] = "GET_YIELD_FROM_ITER",
1460     [IMPORT_FROM] = "IMPORT_FROM",
1461     [IMPORT_NAME] = "IMPORT_NAME",
1462     [INSTRUMENTED_CALL] = "INSTRUMENTED_CALL",
1463     [INSTRUMENTED_CALL_FUNCTION_EX] = "INSTRUMENTED_CALL_FUNCTION_EX",
1464     [INSTRUMENTED_CALL_KW] = "INSTRUMENTED_CALL_KW",
1465     [INSTRUMENTED_END_FOR] = "INSTRUMENTED_END_FOR",
1466     [INSTRUMENTED_END_SEND] = "INSTRUMENTED_END_SEND",
1467     [INSTRUMENTED_FOR_ITER] = "INSTRUMENTED_FOR_ITER",
1468     [INSTRUMENTED_INSTRUCTION] = "INSTRUMENTED_INSTRUCTION",
1469     [INSTRUMENTED_JUMP_BACKWARD] = "INSTRUMENTED_JUMP_BACKWARD",
1470     [INSTRUMENTED_JUMP_FORWARD] = "INSTRUMENTED_JUMP_FORWARD",
1471     [INSTRUMENTED_LINE] = "INSTRUMENTED_LINE",
1472     [INSTRUMENTED_LOAD_SUPER_ATTR] = "INSTRUMENTED_LOAD_SUPER_ATTR",
1473     [INSTRUMENTED_POP_JUMP_IF_FALSE] = "INSTRUMENTED_POP_JUMP_IF_FALSE",
1474     [INSTRUMENTED_POP_JUMP_IF_NONE] = "INSTRUMENTED_POP_JUMP_IF_NONE",
1475     [INSTRUMENTED_POP_JUMP_IF_NOT_NONE] = "INSTRUMENTED_POP_JUMP_IF_NOT_NONE",
1476     [INSTRUMENTED_POP_JUMP_IF_TRUE] = "INSTRUMENTED_POP_JUMP_IF_TRUE",
1477     [INSTRUMENTED_RESUME] = "INSTRUMENTED_RESUME",
1478     [INSTRUMENTED_RETURN_CONST] = "INSTRUMENTED_RETURN_CONST",
1479     [INSTRUMENTED_RETURN_VALUE] = "INSTRUMENTED_RETURN_VALUE",
1480     [INSTRUMENTED_YIELD_VALUE] = "INSTRUMENTED_YIELD_VALUE",
1481     [INTERPRETER_EXIT] = "INTERPRETER_EXIT",
1482     [IS_OP] = "IS_OP",
1483     [JUMP] = "JUMP",
1484     [JUMP_BACKWARD] = "JUMP_BACKWARD",
1485     [JUMP_BACKWARD_NO_INTERRUPT] = "JUMP_BACKWARD_NO_INTERRUPT",
1486     [JUMP_FORWARD] = "JUMP_FORWARD",
1487     [JUMP_NO_INTERRUPT] = "JUMP_NO_INTERRUPT",
1488     [LIST_APPEND] = "LIST_APPEND",
1489     [LIST_EXTEND] = "LIST_EXTEND",
1490     [LOAD_ASSERTION_ERROR] = "LOAD_ASSERTION_ERROR",
1491     [LOAD_ATTR] = "LOAD_ATTR",
1492     [LOAD_ATTR_CLASS] = "LOAD_ATTR_CLASS",
1493     [LOAD_ATTR_GETATTRIBUTE_OVERRIDDEN] = "LOAD_ATTR_GETATTRIBUTE_OVERRIDDEN",
1494     [LOAD_ATTR_INSTANCE_VALUE] = "LOAD_ATTR_INSTANCE_VALUE",
1495     [LOAD_ATTR_METHOD_LAZY_DICT] = "LOAD_ATTR_METHOD_LAZY_DICT",
1496     [LOAD_ATTR_METHOD_NO_DICT] = "LOAD_ATTR_METHOD_NO_DICT",
1497     [LOAD_ATTR_METHOD_WITH_VALUES] = "LOAD_ATTR_METHOD_WITH_VALUES",
1498     [LOAD_ATTR_MODULE] = "LOAD_ATTR_MODULE",
1499     [LOAD_ATTR_NONDESCRIPTOR_NO_DICT] = "LOAD_ATTR_NONDESCRIPTOR_NO_DICT",
1500     [LOAD_ATTR_NONDESCRIPTOR_WITH_VALUES] = "LOAD_ATTR_NONDESCRIPTOR_WITH_VALUES",
1501     [LOAD_ATTR_PROPERTY] = "LOAD_ATTR_PROPERTY",
1502     [LOAD_ATTR_SLOT] = "LOAD_ATTR_SLOT",
1503     [LOAD_ATTR_WITH_HINT] = "LOAD_ATTR_WITH_HINT",
1504     [LOAD_BUILD_CLASS] = "LOAD_BUILD_CLASS",
1505     [LOAD_CLOSURE] = "LOAD_CLOSURE",
1506     [LOAD_CONST] = "LOAD_CONST",
1507     [LOAD_DEREF] = "LOAD_DEREF",
1508     [LOAD_FAST] = "LOAD_FAST",
1509     [LOAD_FAST_AND_CLEAR] = "LOAD_FAST_AND_CLEAR",
1510     [LOAD_FAST_CHECK] = "LOAD_FAST_CHECK",
1511     [LOAD_FAST_LOAD_FAST] = "LOAD_FAST_LOAD_FAST",
1512     [LOAD_FROM_DICT_OR_DEREF] = "LOAD_FROM_DICT_OR_DEREF",
1513     [LOAD_FROM_DICT_OR_GLOBALS] = "LOAD_FROM_DICT_OR_GLOBALS",
1514     [LOAD_GLOBAL] = "LOAD_GLOBAL",
1515     [LOAD_GLOBAL_BUILTIN] = "LOAD_GLOBAL_BUILTIN",
1516     [LOAD_GLOBAL_MODULE] = "LOAD_GLOBAL_MODULE",
1517     [LOAD_LOCALS] = "LOAD_LOCALS",
1518     [LOAD_METHOD] = "LOAD_METHOD",
1519     [LOAD_NAME] = "LOAD_NAME",
1520     [LOAD_SUPER_ATTR] = "LOAD_SUPER_ATTR",
1521     [LOAD_SUPER_ATTR_ATTR] = "LOAD_SUPER_ATTR_ATTR",
1522     [LOAD_SUPER_ATTR_METHOD] = "LOAD_SUPER_ATTR_METHOD",
1523     [LOAD_SUPER_METHOD] = "LOAD_SUPER_METHOD",
1524     [LOAD_ZERO_SUPER_ATTR] = "LOAD_ZERO_SUPER_ATTR",
1525     [LOAD_ZERO_SUPER_METHOD] = "LOAD_ZERO_SUPER_METHOD",
1526     [MAKE_CELL] = "MAKE_CELL",
1527     [MAKE_FUNCTION] = "MAKE_FUNCTION",
1528     [MAP_ADD] = "MAP_ADD",
1529     [MATCH_CLASS] = "MATCH_CLASS",
1530     [MATCH_KEYS] = "MATCH_KEYS",
1531     [MATCH_MAPPING] = "MATCH_MAPPING",
1532     [MATCH_SEQUENCE] = "MATCH_SEQUENCE",
1533     [NOP] = "NOP",
1534     [POP_BLOCK] = "POP_BLOCK",
1535     [POP_EXCEPT] = "POP_EXCEPT",
1536     [POP_JUMP_IF_FALSE] = "POP_JUMP_IF_FALSE",
1537     [POP_JUMP_IF_NONE] = "POP_JUMP_IF_NONE",
1538     [POP_JUMP_IF_NOT_NONE] = "POP_JUMP_IF_NOT_NONE",
1539     [POP_JUMP_IF_TRUE] = "POP_JUMP_IF_TRUE",
1540     [POP_TOP] = "POP_TOP",
1541     [PUSH_EXC_INFO] = "PUSH_EXC_INFO",
1542     [PUSH_NULL] = "PUSH_NULL",
1543     [RAISE_VARARGS] = "RAISE_VARARGS",
1544     [RERAISE] = "RERAISE",
1545     [RESERVED] = "RESERVED",
1546     [RESUME] = "RESUME",
1547     [RESUME_CHECK] = "RESUME_CHECK",
1548     [RETURN_CONST] = "RETURN_CONST",
1549     [RETURN_GENERATOR] = "RETURN_GENERATOR",
1550     [RETURN_VALUE] = "RETURN_VALUE",
1551     [SEND] = "SEND",
1552     [SEND_GEN] = "SEND_GEN",
1553     [SETUP_ANNOTATIONS] = "SETUP_ANNOTATIONS",
1554     [SETUP_CLEANUP] = "SETUP_CLEANUP",
1555     [SETUP_FINALLY] = "SETUP_FINALLY",
1556     [SETUP_WITH] = "SETUP_WITH",
1557     [SET_ADD] = "SET_ADD",
1558     [SET_FUNCTION_ATTRIBUTE] = "SET_FUNCTION_ATTRIBUTE",
1559     [SET_UPDATE] = "SET_UPDATE",
1560     [STORE_ATTR] = "STORE_ATTR",
1561     [STORE_ATTR_INSTANCE_VALUE] = "STORE_ATTR_INSTANCE_VALUE",
1562     [STORE_ATTR_SLOT] = "STORE_ATTR_SLOT",
1563     [STORE_ATTR_WITH_HINT] = "STORE_ATTR_WITH_HINT",
1564     [STORE_DEREF] = "STORE_DEREF",
1565     [STORE_FAST] = "STORE_FAST",
1566     [STORE_FAST_LOAD_FAST] = "STORE_FAST_LOAD_FAST",
1567     [STORE_FAST_MAYBE_NULL] = "STORE_FAST_MAYBE_NULL",
1568     [STORE_FAST_STORE_FAST] = "STORE_FAST_STORE_FAST",
1569     [STORE_GLOBAL] = "STORE_GLOBAL",
1570     [STORE_NAME] = "STORE_NAME",
1571     [STORE_SLICE] = "STORE_SLICE",
1572     [STORE_SUBSCR] = "STORE_SUBSCR",
1573     [STORE_SUBSCR_DICT] = "STORE_SUBSCR_DICT",
1574     [STORE_SUBSCR_LIST_INT] = "STORE_SUBSCR_LIST_INT",
1575     [SWAP] = "SWAP",
1576     [TO_BOOL] = "TO_BOOL",
1577     [TO_BOOL_ALWAYS_TRUE] = "TO_BOOL_ALWAYS_TRUE",
1578     [TO_BOOL_BOOL] = "TO_BOOL_BOOL",
1579     [TO_BOOL_INT] = "TO_BOOL_INT",
1580     [TO_BOOL_LIST] = "TO_BOOL_LIST",
1581     [TO_BOOL_NONE] = "TO_BOOL_NONE",
1582     [TO_BOOL_STR] = "TO_BOOL_STR",
1583     [UNARY_INVERT] = "UNARY_INVERT",
1584     [UNARY_NEGATIVE] = "UNARY_NEGATIVE",
1585     [UNARY_NOT] = "UNARY_NOT",
1586     [UNPACK_EX] = "UNPACK_EX",
1587     [UNPACK_SEQUENCE] = "UNPACK_SEQUENCE",
1588     [UNPACK_SEQUENCE_LIST] = "UNPACK_SEQUENCE_LIST",
1589     [UNPACK_SEQUENCE_TUPLE] = "UNPACK_SEQUENCE_TUPLE",
1590     [UNPACK_SEQUENCE_TWO_TUPLE] = "UNPACK_SEQUENCE_TWO_TUPLE",
1591     [WITH_EXCEPT_START] = "WITH_EXCEPT_START",
1592     [YIELD_VALUE] = "YIELD_VALUE",
1593 };
1594 #endif
1595 
1596 extern const uint8_t _PyOpcode_Caches[256];
1597 #ifdef NEED_OPCODE_METADATA
1598 const uint8_t _PyOpcode_Caches[256] = {
1599     [JUMP_BACKWARD] = 1,
1600     [TO_BOOL] = 3,
1601     [BINARY_SUBSCR] = 1,
1602     [STORE_SUBSCR] = 1,
1603     [SEND] = 1,
1604     [UNPACK_SEQUENCE] = 1,
1605     [STORE_ATTR] = 4,
1606     [LOAD_GLOBAL] = 4,
1607     [LOAD_SUPER_ATTR] = 1,
1608     [LOAD_ATTR] = 9,
1609     [COMPARE_OP] = 1,
1610     [CONTAINS_OP] = 1,
1611     [POP_JUMP_IF_TRUE] = 1,
1612     [POP_JUMP_IF_FALSE] = 1,
1613     [POP_JUMP_IF_NONE] = 1,
1614     [POP_JUMP_IF_NOT_NONE] = 1,
1615     [FOR_ITER] = 1,
1616     [CALL] = 3,
1617     [BINARY_OP] = 1,
1618 };
1619 #endif
1620 
1621 extern const uint8_t _PyOpcode_Deopt[256];
1622 #ifdef NEED_OPCODE_METADATA
1623 const uint8_t _PyOpcode_Deopt[256] = {
1624     [BEFORE_ASYNC_WITH] = BEFORE_ASYNC_WITH,
1625     [BEFORE_WITH] = BEFORE_WITH,
1626     [BINARY_OP] = BINARY_OP,
1627     [BINARY_OP_ADD_FLOAT] = BINARY_OP,
1628     [BINARY_OP_ADD_INT] = BINARY_OP,
1629     [BINARY_OP_ADD_UNICODE] = BINARY_OP,
1630     [BINARY_OP_INPLACE_ADD_UNICODE] = BINARY_OP,
1631     [BINARY_OP_MULTIPLY_FLOAT] = BINARY_OP,
1632     [BINARY_OP_MULTIPLY_INT] = BINARY_OP,
1633     [BINARY_OP_SUBTRACT_FLOAT] = BINARY_OP,
1634     [BINARY_OP_SUBTRACT_INT] = BINARY_OP,
1635     [BINARY_SLICE] = BINARY_SLICE,
1636     [BINARY_SUBSCR] = BINARY_SUBSCR,
1637     [BINARY_SUBSCR_DICT] = BINARY_SUBSCR,
1638     [BINARY_SUBSCR_GETITEM] = BINARY_SUBSCR,
1639     [BINARY_SUBSCR_LIST_INT] = BINARY_SUBSCR,
1640     [BINARY_SUBSCR_STR_INT] = BINARY_SUBSCR,
1641     [BINARY_SUBSCR_TUPLE_INT] = BINARY_SUBSCR,
1642     [BUILD_CONST_KEY_MAP] = BUILD_CONST_KEY_MAP,
1643     [BUILD_LIST] = BUILD_LIST,
1644     [BUILD_MAP] = BUILD_MAP,
1645     [BUILD_SET] = BUILD_SET,
1646     [BUILD_SLICE] = BUILD_SLICE,
1647     [BUILD_STRING] = BUILD_STRING,
1648     [BUILD_TUPLE] = BUILD_TUPLE,
1649     [CACHE] = CACHE,
1650     [CALL] = CALL,
1651     [CALL_ALLOC_AND_ENTER_INIT] = CALL,
1652     [CALL_BOUND_METHOD_EXACT_ARGS] = CALL,
1653     [CALL_BOUND_METHOD_GENERAL] = CALL,
1654     [CALL_BUILTIN_CLASS] = CALL,
1655     [CALL_BUILTIN_FAST] = CALL,
1656     [CALL_BUILTIN_FAST_WITH_KEYWORDS] = CALL,
1657     [CALL_BUILTIN_O] = CALL,
1658     [CALL_FUNCTION_EX] = CALL_FUNCTION_EX,
1659     [CALL_INTRINSIC_1] = CALL_INTRINSIC_1,
1660     [CALL_INTRINSIC_2] = CALL_INTRINSIC_2,
1661     [CALL_ISINSTANCE] = CALL,
1662     [CALL_KW] = CALL_KW,
1663     [CALL_LEN] = CALL,
1664     [CALL_LIST_APPEND] = CALL,
1665     [CALL_METHOD_DESCRIPTOR_FAST] = CALL,
1666     [CALL_METHOD_DESCRIPTOR_FAST_WITH_KEYWORDS] = CALL,
1667     [CALL_METHOD_DESCRIPTOR_NOARGS] = CALL,
1668     [CALL_METHOD_DESCRIPTOR_O] = CALL,
1669     [CALL_NON_PY_GENERAL] = CALL,
1670     [CALL_PY_EXACT_ARGS] = CALL,
1671     [CALL_PY_GENERAL] = CALL,
1672     [CALL_STR_1] = CALL,
1673     [CALL_TUPLE_1] = CALL,
1674     [CALL_TYPE_1] = CALL,
1675     [CHECK_EG_MATCH] = CHECK_EG_MATCH,
1676     [CHECK_EXC_MATCH] = CHECK_EXC_MATCH,
1677     [CLEANUP_THROW] = CLEANUP_THROW,
1678     [COMPARE_OP] = COMPARE_OP,
1679     [COMPARE_OP_FLOAT] = COMPARE_OP,
1680     [COMPARE_OP_INT] = COMPARE_OP,
1681     [COMPARE_OP_STR] = COMPARE_OP,
1682     [CONTAINS_OP] = CONTAINS_OP,
1683     [CONTAINS_OP_DICT] = CONTAINS_OP,
1684     [CONTAINS_OP_SET] = CONTAINS_OP,
1685     [CONVERT_VALUE] = CONVERT_VALUE,
1686     [COPY] = COPY,
1687     [COPY_FREE_VARS] = COPY_FREE_VARS,
1688     [DELETE_ATTR] = DELETE_ATTR,
1689     [DELETE_DEREF] = DELETE_DEREF,
1690     [DELETE_FAST] = DELETE_FAST,
1691     [DELETE_GLOBAL] = DELETE_GLOBAL,
1692     [DELETE_NAME] = DELETE_NAME,
1693     [DELETE_SUBSCR] = DELETE_SUBSCR,
1694     [DICT_MERGE] = DICT_MERGE,
1695     [DICT_UPDATE] = DICT_UPDATE,
1696     [END_ASYNC_FOR] = END_ASYNC_FOR,
1697     [END_FOR] = END_FOR,
1698     [END_SEND] = END_SEND,
1699     [ENTER_EXECUTOR] = ENTER_EXECUTOR,
1700     [EXIT_INIT_CHECK] = EXIT_INIT_CHECK,
1701     [EXTENDED_ARG] = EXTENDED_ARG,
1702     [FORMAT_SIMPLE] = FORMAT_SIMPLE,
1703     [FORMAT_WITH_SPEC] = FORMAT_WITH_SPEC,
1704     [FOR_ITER] = FOR_ITER,
1705     [FOR_ITER_GEN] = FOR_ITER,
1706     [FOR_ITER_LIST] = FOR_ITER,
1707     [FOR_ITER_RANGE] = FOR_ITER,
1708     [FOR_ITER_TUPLE] = FOR_ITER,
1709     [GET_AITER] = GET_AITER,
1710     [GET_ANEXT] = GET_ANEXT,
1711     [GET_AWAITABLE] = GET_AWAITABLE,
1712     [GET_ITER] = GET_ITER,
1713     [GET_LEN] = GET_LEN,
1714     [GET_YIELD_FROM_ITER] = GET_YIELD_FROM_ITER,
1715     [IMPORT_FROM] = IMPORT_FROM,
1716     [IMPORT_NAME] = IMPORT_NAME,
1717     [INSTRUMENTED_CALL] = INSTRUMENTED_CALL,
1718     [INSTRUMENTED_CALL_FUNCTION_EX] = INSTRUMENTED_CALL_FUNCTION_EX,
1719     [INSTRUMENTED_CALL_KW] = INSTRUMENTED_CALL_KW,
1720     [INSTRUMENTED_END_FOR] = INSTRUMENTED_END_FOR,
1721     [INSTRUMENTED_END_SEND] = INSTRUMENTED_END_SEND,
1722     [INSTRUMENTED_FOR_ITER] = INSTRUMENTED_FOR_ITER,
1723     [INSTRUMENTED_INSTRUCTION] = INSTRUMENTED_INSTRUCTION,
1724     [INSTRUMENTED_JUMP_BACKWARD] = INSTRUMENTED_JUMP_BACKWARD,
1725     [INSTRUMENTED_JUMP_FORWARD] = INSTRUMENTED_JUMP_FORWARD,
1726     [INSTRUMENTED_LINE] = INSTRUMENTED_LINE,
1727     [INSTRUMENTED_LOAD_SUPER_ATTR] = INSTRUMENTED_LOAD_SUPER_ATTR,
1728     [INSTRUMENTED_POP_JUMP_IF_FALSE] = INSTRUMENTED_POP_JUMP_IF_FALSE,
1729     [INSTRUMENTED_POP_JUMP_IF_NONE] = INSTRUMENTED_POP_JUMP_IF_NONE,
1730     [INSTRUMENTED_POP_JUMP_IF_NOT_NONE] = INSTRUMENTED_POP_JUMP_IF_NOT_NONE,
1731     [INSTRUMENTED_POP_JUMP_IF_TRUE] = INSTRUMENTED_POP_JUMP_IF_TRUE,
1732     [INSTRUMENTED_RESUME] = INSTRUMENTED_RESUME,
1733     [INSTRUMENTED_RETURN_CONST] = INSTRUMENTED_RETURN_CONST,
1734     [INSTRUMENTED_RETURN_VALUE] = INSTRUMENTED_RETURN_VALUE,
1735     [INSTRUMENTED_YIELD_VALUE] = INSTRUMENTED_YIELD_VALUE,
1736     [INTERPRETER_EXIT] = INTERPRETER_EXIT,
1737     [IS_OP] = IS_OP,
1738     [JUMP_BACKWARD] = JUMP_BACKWARD,
1739     [JUMP_BACKWARD_NO_INTERRUPT] = JUMP_BACKWARD_NO_INTERRUPT,
1740     [JUMP_FORWARD] = JUMP_FORWARD,
1741     [LIST_APPEND] = LIST_APPEND,
1742     [LIST_EXTEND] = LIST_EXTEND,
1743     [LOAD_ASSERTION_ERROR] = LOAD_ASSERTION_ERROR,
1744     [LOAD_ATTR] = LOAD_ATTR,
1745     [LOAD_ATTR_CLASS] = LOAD_ATTR,
1746     [LOAD_ATTR_GETATTRIBUTE_OVERRIDDEN] = LOAD_ATTR,
1747     [LOAD_ATTR_INSTANCE_VALUE] = LOAD_ATTR,
1748     [LOAD_ATTR_METHOD_LAZY_DICT] = LOAD_ATTR,
1749     [LOAD_ATTR_METHOD_NO_DICT] = LOAD_ATTR,
1750     [LOAD_ATTR_METHOD_WITH_VALUES] = LOAD_ATTR,
1751     [LOAD_ATTR_MODULE] = LOAD_ATTR,
1752     [LOAD_ATTR_NONDESCRIPTOR_NO_DICT] = LOAD_ATTR,
1753     [LOAD_ATTR_NONDESCRIPTOR_WITH_VALUES] = LOAD_ATTR,
1754     [LOAD_ATTR_PROPERTY] = LOAD_ATTR,
1755     [LOAD_ATTR_SLOT] = LOAD_ATTR,
1756     [LOAD_ATTR_WITH_HINT] = LOAD_ATTR,
1757     [LOAD_BUILD_CLASS] = LOAD_BUILD_CLASS,
1758     [LOAD_CONST] = LOAD_CONST,
1759     [LOAD_DEREF] = LOAD_DEREF,
1760     [LOAD_FAST] = LOAD_FAST,
1761     [LOAD_FAST_AND_CLEAR] = LOAD_FAST_AND_CLEAR,
1762     [LOAD_FAST_CHECK] = LOAD_FAST_CHECK,
1763     [LOAD_FAST_LOAD_FAST] = LOAD_FAST_LOAD_FAST,
1764     [LOAD_FROM_DICT_OR_DEREF] = LOAD_FROM_DICT_OR_DEREF,
1765     [LOAD_FROM_DICT_OR_GLOBALS] = LOAD_FROM_DICT_OR_GLOBALS,
1766     [LOAD_GLOBAL] = LOAD_GLOBAL,
1767     [LOAD_GLOBAL_BUILTIN] = LOAD_GLOBAL,
1768     [LOAD_GLOBAL_MODULE] = LOAD_GLOBAL,
1769     [LOAD_LOCALS] = LOAD_LOCALS,
1770     [LOAD_NAME] = LOAD_NAME,
1771     [LOAD_SUPER_ATTR] = LOAD_SUPER_ATTR,
1772     [LOAD_SUPER_ATTR_ATTR] = LOAD_SUPER_ATTR,
1773     [LOAD_SUPER_ATTR_METHOD] = LOAD_SUPER_ATTR,
1774     [MAKE_CELL] = MAKE_CELL,
1775     [MAKE_FUNCTION] = MAKE_FUNCTION,
1776     [MAP_ADD] = MAP_ADD,
1777     [MATCH_CLASS] = MATCH_CLASS,
1778     [MATCH_KEYS] = MATCH_KEYS,
1779     [MATCH_MAPPING] = MATCH_MAPPING,
1780     [MATCH_SEQUENCE] = MATCH_SEQUENCE,
1781     [NOP] = NOP,
1782     [POP_EXCEPT] = POP_EXCEPT,
1783     [POP_JUMP_IF_FALSE] = POP_JUMP_IF_FALSE,
1784     [POP_JUMP_IF_NONE] = POP_JUMP_IF_NONE,
1785     [POP_JUMP_IF_NOT_NONE] = POP_JUMP_IF_NOT_NONE,
1786     [POP_JUMP_IF_TRUE] = POP_JUMP_IF_TRUE,
1787     [POP_TOP] = POP_TOP,
1788     [PUSH_EXC_INFO] = PUSH_EXC_INFO,
1789     [PUSH_NULL] = PUSH_NULL,
1790     [RAISE_VARARGS] = RAISE_VARARGS,
1791     [RERAISE] = RERAISE,
1792     [RESERVED] = RESERVED,
1793     [RESUME] = RESUME,
1794     [RESUME_CHECK] = RESUME,
1795     [RETURN_CONST] = RETURN_CONST,
1796     [RETURN_GENERATOR] = RETURN_GENERATOR,
1797     [RETURN_VALUE] = RETURN_VALUE,
1798     [SEND] = SEND,
1799     [SEND_GEN] = SEND,
1800     [SETUP_ANNOTATIONS] = SETUP_ANNOTATIONS,
1801     [SET_ADD] = SET_ADD,
1802     [SET_FUNCTION_ATTRIBUTE] = SET_FUNCTION_ATTRIBUTE,
1803     [SET_UPDATE] = SET_UPDATE,
1804     [STORE_ATTR] = STORE_ATTR,
1805     [STORE_ATTR_INSTANCE_VALUE] = STORE_ATTR,
1806     [STORE_ATTR_SLOT] = STORE_ATTR,
1807     [STORE_ATTR_WITH_HINT] = STORE_ATTR,
1808     [STORE_DEREF] = STORE_DEREF,
1809     [STORE_FAST] = STORE_FAST,
1810     [STORE_FAST_LOAD_FAST] = STORE_FAST_LOAD_FAST,
1811     [STORE_FAST_STORE_FAST] = STORE_FAST_STORE_FAST,
1812     [STORE_GLOBAL] = STORE_GLOBAL,
1813     [STORE_NAME] = STORE_NAME,
1814     [STORE_SLICE] = STORE_SLICE,
1815     [STORE_SUBSCR] = STORE_SUBSCR,
1816     [STORE_SUBSCR_DICT] = STORE_SUBSCR,
1817     [STORE_SUBSCR_LIST_INT] = STORE_SUBSCR,
1818     [SWAP] = SWAP,
1819     [TO_BOOL] = TO_BOOL,
1820     [TO_BOOL_ALWAYS_TRUE] = TO_BOOL,
1821     [TO_BOOL_BOOL] = TO_BOOL,
1822     [TO_BOOL_INT] = TO_BOOL,
1823     [TO_BOOL_LIST] = TO_BOOL,
1824     [TO_BOOL_NONE] = TO_BOOL,
1825     [TO_BOOL_STR] = TO_BOOL,
1826     [UNARY_INVERT] = UNARY_INVERT,
1827     [UNARY_NEGATIVE] = UNARY_NEGATIVE,
1828     [UNARY_NOT] = UNARY_NOT,
1829     [UNPACK_EX] = UNPACK_EX,
1830     [UNPACK_SEQUENCE] = UNPACK_SEQUENCE,
1831     [UNPACK_SEQUENCE_LIST] = UNPACK_SEQUENCE,
1832     [UNPACK_SEQUENCE_TUPLE] = UNPACK_SEQUENCE,
1833     [UNPACK_SEQUENCE_TWO_TUPLE] = UNPACK_SEQUENCE,
1834     [WITH_EXCEPT_START] = WITH_EXCEPT_START,
1835     [YIELD_VALUE] = YIELD_VALUE,
1836 };
1837 
1838 #endif // NEED_OPCODE_METADATA
1839 
1840 #define EXTRA_CASES \
1841     case 119: \
1842     case 120: \
1843     case 121: \
1844     case 122: \
1845     case 123: \
1846     case 124: \
1847     case 125: \
1848     case 126: \
1849     case 127: \
1850     case 128: \
1851     case 129: \
1852     case 130: \
1853     case 131: \
1854     case 132: \
1855     case 133: \
1856     case 134: \
1857     case 135: \
1858     case 136: \
1859     case 137: \
1860     case 138: \
1861     case 139: \
1862     case 140: \
1863     case 141: \
1864     case 142: \
1865     case 143: \
1866     case 144: \
1867     case 145: \
1868     case 146: \
1869     case 147: \
1870     case 148: \
1871     case 223: \
1872     case 224: \
1873     case 225: \
1874     case 226: \
1875     case 227: \
1876     case 228: \
1877     case 229: \
1878     case 230: \
1879     case 231: \
1880     case 232: \
1881     case 233: \
1882     case 234: \
1883     case 235: \
1884     case 255: \
1885         ;
1886 struct pseudo_targets {
1887     uint8_t targets[3];
1888 };
1889 extern const struct pseudo_targets _PyOpcode_PseudoTargets[12];
1890 #ifdef NEED_OPCODE_METADATA
1891 const struct pseudo_targets _PyOpcode_PseudoTargets[12] = {
1892     [LOAD_CLOSURE-256] = { { LOAD_FAST, 0, 0 } },
1893     [STORE_FAST_MAYBE_NULL-256] = { { STORE_FAST, 0, 0 } },
1894     [LOAD_SUPER_METHOD-256] = { { LOAD_SUPER_ATTR, 0, 0 } },
1895     [LOAD_ZERO_SUPER_METHOD-256] = { { LOAD_SUPER_ATTR, 0, 0 } },
1896     [LOAD_ZERO_SUPER_ATTR-256] = { { LOAD_SUPER_ATTR, 0, 0 } },
1897     [LOAD_METHOD-256] = { { LOAD_ATTR, 0, 0 } },
1898     [JUMP-256] = { { JUMP_FORWARD, JUMP_BACKWARD, 0 } },
1899     [JUMP_NO_INTERRUPT-256] = { { JUMP_FORWARD, JUMP_BACKWARD_NO_INTERRUPT, 0 } },
1900     [SETUP_FINALLY-256] = { { NOP, 0, 0 } },
1901     [SETUP_CLEANUP-256] = { { NOP, 0, 0 } },
1902     [SETUP_WITH-256] = { { NOP, 0, 0 } },
1903     [POP_BLOCK-256] = { { NOP, 0, 0 } },
1904 };
1905 
1906 #endif // NEED_OPCODE_METADATA
1907 static inline bool
is_pseudo_target(int pseudo,int target)1908 is_pseudo_target(int pseudo, int target) {
1909     if (pseudo < 256 || pseudo >= 268) {
1910         return false;
1911     }
1912     for (int i = 0; _PyOpcode_PseudoTargets[pseudo-256].targets[i]; i++) {
1913         if (_PyOpcode_PseudoTargets[pseudo-256].targets[i] == target) return true;
1914     }
1915     return false;
1916 }
1917 
1918 
1919 #ifdef __cplusplus
1920 }
1921 #endif
1922 #endif /* !Py_CORE_OPCODE_METADATA_H */
1923