codekingpro/portable-devtools
115k
1// This file is generated by Tools/cases_generator/opcode_metadata_generator.py2// from:3// Python/bytecodes.c4// Do not edit!5 6#ifndef Py_CORE_OPCODE_METADATA_H7#define Py_CORE_OPCODE_METADATA_H8#ifdef __cplusplus9extern "C" {10#endif11 12#ifndef Py_BUILD_CORE13# error "this header requires Py_BUILD_CORE define"14#endif15 16#include <stdbool.h> // bool17#include "opcode_ids.h"18 19 20#define IS_PSEUDO_INSTR(OP) ( \21 ((OP) == LOAD_CLOSURE) || \22 ((OP) == STORE_FAST_MAYBE_NULL) || \23 ((OP) == ANNOTATIONS_PLACEHOLDER) || \24 ((OP) == JUMP) || \25 ((OP) == JUMP_NO_INTERRUPT) || \26 ((OP) == JUMP_IF_FALSE) || \27 ((OP) == JUMP_IF_TRUE) || \28 ((OP) == SETUP_FINALLY) || \29 ((OP) == SETUP_CLEANUP) || \30 ((OP) == SETUP_WITH) || \31 ((OP) == POP_BLOCK) || \32 0)33 34#include "pycore_uop_ids.h"35extern int _PyOpcode_num_popped(int opcode, int oparg);36#ifdef NEED_OPCODE_METADATA37int _PyOpcode_num_popped(int opcode, int oparg) {38 switch(opcode) {39 case ANNOTATIONS_PLACEHOLDER:40 return 0;41 case BINARY_OP:42 return 2;43 case BINARY_OP_ADD_FLOAT:44 return 2;45 case BINARY_OP_ADD_INT:46 return 2;47 case BINARY_OP_ADD_UNICODE:48 return 2;49 case BINARY_OP_EXTEND:50 return 2;51 case BINARY_OP_INPLACE_ADD_UNICODE:52 return 2;53 case BINARY_OP_MULTIPLY_FLOAT:54 return 2;55 case BINARY_OP_MULTIPLY_INT:56 return 2;57 case BINARY_OP_SUBSCR_DICT:58 return 2;59 case BINARY_OP_SUBSCR_GETITEM:60 return 2;61 case BINARY_OP_SUBSCR_LIST_INT:62 return 2;63 case BINARY_OP_SUBSCR_LIST_SLICE:64 return 2;65 case BINARY_OP_SUBSCR_STR_INT:66 return 2;67 case BINARY_OP_SUBSCR_TUPLE_INT:68 return 2;69 case BINARY_OP_SUBTRACT_FLOAT:70 return 2;71 case BINARY_OP_SUBTRACT_INT:72 return 2;73 case BINARY_SLICE:74 return 3;75 case BUILD_INTERPOLATION:76 return 2 + (oparg & 1);77 case BUILD_LIST:78 return oparg;79 case BUILD_MAP:80 return oparg*2;81 case BUILD_SET:82 return oparg;83 case BUILD_SLICE:84 return oparg;85 case BUILD_STRING:86 return oparg;87 case BUILD_TEMPLATE:88 return 2;89 case BUILD_TUPLE:90 return oparg;91 case CACHE:92 return 0;93 case CALL:94 return 2 + oparg;95 case CALL_ALLOC_AND_ENTER_INIT:96 return 2 + oparg;97 case CALL_BOUND_METHOD_EXACT_ARGS:98 return 2 + oparg;99 case CALL_BOUND_METHOD_GENERAL:100 return 2 + oparg;101 case CALL_BUILTIN_CLASS:102 return 2 + oparg;103 case CALL_BUILTIN_FAST:104 return 2 + oparg;105 case CALL_BUILTIN_FAST_WITH_KEYWORDS:106 return 2 + oparg;107 case CALL_BUILTIN_O:108 return 2 + oparg;109 case CALL_FUNCTION_EX:110 return 4;111 case CALL_INTRINSIC_1:112 return 1;113 case CALL_INTRINSIC_2:114 return 2;115 case CALL_ISINSTANCE:116 return 2 + oparg;117 case CALL_KW:118 return 3 + oparg;119 case CALL_KW_BOUND_METHOD:120 return 3 + oparg;121 case CALL_KW_NON_PY:122 return 3 + oparg;123 case CALL_KW_PY:124 return 3 + oparg;125 case CALL_LEN:126 return 3;127 case CALL_LIST_APPEND:128 return 3;129 case CALL_METHOD_DESCRIPTOR_FAST:130 return 2 + oparg;131 case CALL_METHOD_DESCRIPTOR_FAST_WITH_KEYWORDS:132 return 2 + oparg;133 case CALL_METHOD_DESCRIPTOR_NOARGS:134 return 2 + oparg;135 case CALL_METHOD_DESCRIPTOR_O:136 return 2 + oparg;137 case CALL_NON_PY_GENERAL:138 return 2 + oparg;139 case CALL_PY_EXACT_ARGS:140 return 2 + oparg;141 case CALL_PY_GENERAL:142 return 2 + oparg;143 case CALL_STR_1:144 return 3;145 case CALL_TUPLE_1:146 return 3;147 case CALL_TYPE_1:148 return 3;149 case CHECK_EG_MATCH:150 return 2;151 case CHECK_EXC_MATCH:152 return 2;153 case CLEANUP_THROW:154 return 3;155 case COMPARE_OP:156 return 2;157 case COMPARE_OP_FLOAT:158 return 2;159 case COMPARE_OP_INT:160 return 2;161 case COMPARE_OP_STR:162 return 2;163 case CONTAINS_OP:164 return 2;165 case CONTAINS_OP_DICT:166 return 2;167 case CONTAINS_OP_SET:168 return 2;169 case CONVERT_VALUE:170 return 1;171 case COPY:172 return 1 + (oparg-1);173 case COPY_FREE_VARS:174 return 0;175 case DELETE_ATTR:176 return 1;177 case DELETE_DEREF:178 return 0;179 case DELETE_FAST:180 return 0;181 case DELETE_GLOBAL:182 return 0;183 case DELETE_NAME:184 return 0;185 case DELETE_SUBSCR:186 return 2;187 case DICT_MERGE:188 return 5 + (oparg - 1);189 case DICT_UPDATE:190 return 2 + (oparg - 1);191 case END_ASYNC_FOR:192 return 2;193 case END_FOR:194 return 1;195 case END_SEND:196 return 2;197 case ENTER_EXECUTOR:198 return 0;199 case EXIT_INIT_CHECK:200 return 1;201 case EXTENDED_ARG:202 return 0;203 case FORMAT_SIMPLE:204 return 1;205 case FORMAT_WITH_SPEC:206 return 2;207 case FOR_ITER:208 return 1;209 case FOR_ITER_GEN:210 return 1;211 case FOR_ITER_LIST:212 return 1;213 case FOR_ITER_RANGE:214 return 1;215 case FOR_ITER_TUPLE:216 return 1;217 case GET_AITER:218 return 1;219 case GET_ANEXT:220 return 1;221 case GET_AWAITABLE:222 return 1;223 case GET_ITER:224 return 1;225 case GET_LEN:226 return 1;227 case GET_YIELD_FROM_ITER:228 return 1;229 case IMPORT_FROM:230 return 1;231 case IMPORT_NAME:232 return 2;233 case INSTRUMENTED_CALL:234 return 2 + oparg;235 case INSTRUMENTED_CALL_FUNCTION_EX:236 return 4;237 case INSTRUMENTED_CALL_KW:238 return 3 + oparg;239 case INSTRUMENTED_END_ASYNC_FOR:240 return 2;241 case INSTRUMENTED_END_FOR:242 return 2;243 case INSTRUMENTED_END_SEND:244 return 2;245 case INSTRUMENTED_FOR_ITER:246 return 1;247 case INSTRUMENTED_INSTRUCTION:248 return 0;249 case INSTRUMENTED_JUMP_BACKWARD:250 return 0;251 case INSTRUMENTED_JUMP_FORWARD:252 return 0;253 case INSTRUMENTED_LINE:254 return 0;255 case INSTRUMENTED_LOAD_SUPER_ATTR:256 return 3;257 case INSTRUMENTED_NOT_TAKEN:258 return 0;259 case INSTRUMENTED_POP_ITER:260 return 1;261 case INSTRUMENTED_POP_JUMP_IF_FALSE:262 return 1;263 case INSTRUMENTED_POP_JUMP_IF_NONE:264 return 1;265 case INSTRUMENTED_POP_JUMP_IF_NOT_NONE:266 return 1;267 case INSTRUMENTED_POP_JUMP_IF_TRUE:268 return 1;269 case INSTRUMENTED_RESUME:270 return 0;271 case INSTRUMENTED_RETURN_VALUE:272 return 1;273 case INSTRUMENTED_YIELD_VALUE:274 return 1;275 case INTERPRETER_EXIT:276 return 1;277 case IS_OP:278 return 2;279 case JUMP:280 return 0;281 case JUMP_BACKWARD:282 return 0;283 case JUMP_BACKWARD_JIT:284 return 0;285 case JUMP_BACKWARD_NO_INTERRUPT:286 return 0;287 case JUMP_BACKWARD_NO_JIT:288 return 0;289 case JUMP_FORWARD:290 return 0;291 case JUMP_IF_FALSE:292 return 1;293 case JUMP_IF_TRUE:294 return 1;295 case JUMP_NO_INTERRUPT:296 return 0;297 case LIST_APPEND:298 return 2 + (oparg-1);299 case LIST_EXTEND:300 return 2 + (oparg-1);301 case LOAD_ATTR:302 return 1;303 case LOAD_ATTR_CLASS:304 return 1;305 case LOAD_ATTR_CLASS_WITH_METACLASS_CHECK:306 return 1;307 case LOAD_ATTR_GETATTRIBUTE_OVERRIDDEN:308 return 1;309 case LOAD_ATTR_INSTANCE_VALUE:310 return 1;311 case LOAD_ATTR_METHOD_LAZY_DICT:312 return 1;313 case LOAD_ATTR_METHOD_NO_DICT:314 return 1;315 case LOAD_ATTR_METHOD_WITH_VALUES:316 return 1;317 case LOAD_ATTR_MODULE:318 return 1;319 case LOAD_ATTR_NONDESCRIPTOR_NO_DICT:320 return 1;321 case LOAD_ATTR_NONDESCRIPTOR_WITH_VALUES:322 return 1;323 case LOAD_ATTR_PROPERTY:324 return 1;325 case LOAD_ATTR_SLOT:326 return 1;327 case LOAD_ATTR_WITH_HINT:328 return 1;329 case LOAD_BUILD_CLASS:330 return 0;331 case LOAD_CLOSURE:332 return 0;333 case LOAD_COMMON_CONSTANT:334 return 0;335 case LOAD_CONST:336 return 0;337 case LOAD_CONST_IMMORTAL:338 return 0;339 case LOAD_CONST_MORTAL:340 return 0;341 case LOAD_DEREF:342 return 0;343 case LOAD_FAST:344 return 0;345 case LOAD_FAST_AND_CLEAR:346 return 0;347 case LOAD_FAST_BORROW:348 return 0;349 case LOAD_FAST_BORROW_LOAD_FAST_BORROW:350 return 0;351 case LOAD_FAST_CHECK:352 return 0;353 case LOAD_FAST_LOAD_FAST:354 return 0;355 case LOAD_FROM_DICT_OR_DEREF:356 return 1;357 case LOAD_FROM_DICT_OR_GLOBALS:358 return 1;359 case LOAD_GLOBAL:360 return 0;361 case LOAD_GLOBAL_BUILTIN:362 return 0;363 case LOAD_GLOBAL_MODULE:364 return 0;365 case LOAD_LOCALS:366 return 0;367 case LOAD_NAME:368 return 0;369 case LOAD_SMALL_INT:370 return 0;371 case LOAD_SPECIAL:372 return 1;373 case LOAD_SUPER_ATTR:374 return 3;375 case LOAD_SUPER_ATTR_ATTR:376 return 3;377 case LOAD_SUPER_ATTR_METHOD:378 return 3;379 case MAKE_CELL:380 return 0;381 case MAKE_FUNCTION:382 return 1;383 case MAP_ADD:384 return 3 + (oparg - 1);385 case MATCH_CLASS:386 return 3;387 case MATCH_KEYS:388 return 2;389 case MATCH_MAPPING:390 return 1;391 case MATCH_SEQUENCE:392 return 1;393 case NOP:394 return 0;395 case NOT_TAKEN:396 return 0;397 case POP_BLOCK:398 return 0;399 case POP_EXCEPT:400 return 1;401 case POP_ITER:402 return 1;403 case POP_JUMP_IF_FALSE:404 return 1;405 case POP_JUMP_IF_NONE:406 return 1;407 case POP_JUMP_IF_NOT_NONE:408 return 1;409 case POP_JUMP_IF_TRUE:410 return 1;411 case POP_TOP:412 return 1;413 case PUSH_EXC_INFO:414 return 1;415 case PUSH_NULL:416 return 0;417 case RAISE_VARARGS:418 return oparg;419 case RERAISE:420 return 1 + oparg;421 case RESERVED:422 return 0;423 case RESUME:424 return 0;425 case RESUME_CHECK:426 return 0;427 case RETURN_GENERATOR:428 return 0;429 case RETURN_VALUE:430 return 1;431 case SEND:432 return 2;433 case SEND_GEN:434 return 2;435 case SETUP_ANNOTATIONS:436 return 0;437 case SETUP_CLEANUP:438 return 0;439 case SETUP_FINALLY:440 return 0;441 case SETUP_WITH:442 return 0;443 case SET_ADD:444 return 2 + (oparg-1);445 case SET_FUNCTION_ATTRIBUTE:446 return 2;447 case SET_UPDATE:448 return 2 + (oparg-1);449 case STORE_ATTR:450 return 2;451 case STORE_ATTR_INSTANCE_VALUE:452 return 2;453 case STORE_ATTR_SLOT:454 return 2;455 case STORE_ATTR_WITH_HINT:456 return 2;457 case STORE_DEREF:458 return 1;459 case STORE_FAST:460 return 1;461 case STORE_FAST_LOAD_FAST:462 return 1;463 case STORE_FAST_MAYBE_NULL:464 return 1;465 case STORE_FAST_STORE_FAST:466 return 2;467 case STORE_GLOBAL:468 return 1;469 case STORE_NAME:470 return 1;471 case STORE_SLICE:472 return 4;473 case STORE_SUBSCR:474 return 3;475 case STORE_SUBSCR_DICT:476 return 3;477 case STORE_SUBSCR_LIST_INT:478 return 3;479 case SWAP:480 return 2 + (oparg-2);481 case TO_BOOL:482 return 1;483 case TO_BOOL_ALWAYS_TRUE:484 return 1;485 case TO_BOOL_BOOL:486 return 1;487 case TO_BOOL_INT:488 return 1;489 case TO_BOOL_LIST:490 return 1;491 case TO_BOOL_NONE:492 return 1;493 case TO_BOOL_STR:494 return 1;495 case UNARY_INVERT:496 return 1;497 case UNARY_NEGATIVE:498 return 1;499 case UNARY_NOT:500 return 1;501 case UNPACK_EX:502 return 1;503 case UNPACK_SEQUENCE:504 return 1;505 case UNPACK_SEQUENCE_LIST:506 return 1;507 case UNPACK_SEQUENCE_TUPLE:508 return 1;509 case UNPACK_SEQUENCE_TWO_TUPLE:510 return 1;511 case WITH_EXCEPT_START:512 return 5;513 case YIELD_VALUE:514 return 1;515 default:516 return -1;517 }518}519 520#endif521 522extern int _PyOpcode_num_pushed(int opcode, int oparg);523#ifdef NEED_OPCODE_METADATA524int _PyOpcode_num_pushed(int opcode, int oparg) {525 switch(opcode) {526 case ANNOTATIONS_PLACEHOLDER:527 return 0;528 case BINARY_OP:529 return 1;530 case BINARY_OP_ADD_FLOAT:531 return 1;532 case BINARY_OP_ADD_INT:533 return 1;534 case BINARY_OP_ADD_UNICODE:535 return 1;536 case BINARY_OP_EXTEND:537 return 1;538 case BINARY_OP_INPLACE_ADD_UNICODE:539 return 0;540 case BINARY_OP_MULTIPLY_FLOAT:541 return 1;542 case BINARY_OP_MULTIPLY_INT:543 return 1;544 case BINARY_OP_SUBSCR_DICT:545 return 1;546 case BINARY_OP_SUBSCR_GETITEM:547 return 0;548 case BINARY_OP_SUBSCR_LIST_INT:549 return 1;550 case BINARY_OP_SUBSCR_LIST_SLICE:551 return 1;552 case BINARY_OP_SUBSCR_STR_INT:553 return 1;554 case BINARY_OP_SUBSCR_TUPLE_INT:555 return 1;556 case BINARY_OP_SUBTRACT_FLOAT:557 return 1;558 case BINARY_OP_SUBTRACT_INT:559 return 1;560 case BINARY_SLICE:561 return 1;562 case BUILD_INTERPOLATION:563 return 1;564 case BUILD_LIST:565 return 1;566 case BUILD_MAP:567 return 1;568 case BUILD_SET:569 return 1;570 case BUILD_SLICE:571 return 1;572 case BUILD_STRING:573 return 1;574 case BUILD_TEMPLATE:575 return 1;576 case BUILD_TUPLE:577 return 1;578 case CACHE:579 return 0;580 case CALL:581 return 1;582 case CALL_ALLOC_AND_ENTER_INIT:583 return 0;584 case CALL_BOUND_METHOD_EXACT_ARGS:585 return 0;586 case CALL_BOUND_METHOD_GENERAL:587 return 0;588 case CALL_BUILTIN_CLASS:589 return 1;590 case CALL_BUILTIN_FAST:591 return 1;592 case CALL_BUILTIN_FAST_WITH_KEYWORDS:593 return 1;594 case CALL_BUILTIN_O:595 return 1;596 case CALL_FUNCTION_EX:597 return 1;598 case CALL_INTRINSIC_1:599 return 1;600 case CALL_INTRINSIC_2:601 return 1;602 case CALL_ISINSTANCE:603 return 1;604 case CALL_KW:605 return 1;606 case CALL_KW_BOUND_METHOD:607 return 0;608 case CALL_KW_NON_PY:609 return 1;610 case CALL_KW_PY:611 return 0;612 case CALL_LEN:613 return 1;614 case CALL_LIST_APPEND:615 return 0;616 case CALL_METHOD_DESCRIPTOR_FAST:617 return 1;618 case CALL_METHOD_DESCRIPTOR_FAST_WITH_KEYWORDS:619 return 1;620 case CALL_METHOD_DESCRIPTOR_NOARGS:621 return 1;622 case CALL_METHOD_DESCRIPTOR_O:623 return 1;624 case CALL_NON_PY_GENERAL:625 return 1;626 case CALL_PY_EXACT_ARGS:627 return 0;628 case CALL_PY_GENERAL:629 return 0;630 case CALL_STR_1:631 return 1;632 case CALL_TUPLE_1:633 return 1;634 case CALL_TYPE_1:635 return 1;636 case CHECK_EG_MATCH:637 return 2;638 case CHECK_EXC_MATCH:639 return 2;640 case CLEANUP_THROW:641 return 2;642 case COMPARE_OP:643 return 1;644 case COMPARE_OP_FLOAT:645 return 1;646 case COMPARE_OP_INT:647 return 1;648 case COMPARE_OP_STR:649 return 1;650 case CONTAINS_OP:651 return 1;652 case CONTAINS_OP_DICT:653 return 1;654 case CONTAINS_OP_SET:655 return 1;656 case CONVERT_VALUE:657 return 1;658 case COPY:659 return 2 + (oparg-1);660 case COPY_FREE_VARS:661 return 0;662 case DELETE_ATTR:663 return 0;664 case DELETE_DEREF:665 return 0;666 case DELETE_FAST:667 return 0;668 case DELETE_GLOBAL:669 return 0;670 case DELETE_NAME:671 return 0;672 case DELETE_SUBSCR:673 return 0;674 case DICT_MERGE:675 return 4 + (oparg - 1);676 case DICT_UPDATE:677 return 1 + (oparg - 1);678 case END_ASYNC_FOR:679 return 0;680 case END_FOR:681 return 0;682 case END_SEND:683 return 1;684 case ENTER_EXECUTOR:685 return 0;686 case EXIT_INIT_CHECK:687 return 0;688 case EXTENDED_ARG:689 return 0;690 case FORMAT_SIMPLE:691 return 1;692 case FORMAT_WITH_SPEC:693 return 1;694 case FOR_ITER:695 return 2;696 case FOR_ITER_GEN:697 return 1;698 case FOR_ITER_LIST:699 return 2;700 case FOR_ITER_RANGE:701 return 2;702 case FOR_ITER_TUPLE:703 return 2;704 case GET_AITER:705 return 1;706 case GET_ANEXT:707 return 2;708 case GET_AWAITABLE:709 return 1;710 case GET_ITER:711 return 1;712 case GET_LEN:713 return 2;714 case GET_YIELD_FROM_ITER:715 return 1;716 case IMPORT_FROM:717 return 2;718 case IMPORT_NAME:719 return 1;720 case INSTRUMENTED_CALL:721 return 1;722 case INSTRUMENTED_CALL_FUNCTION_EX:723 return 1;724 case INSTRUMENTED_CALL_KW:725 return 1;726 case INSTRUMENTED_END_ASYNC_FOR:727 return 0;728 case INSTRUMENTED_END_FOR:729 return 1;730 case INSTRUMENTED_END_SEND:731 return 1;732 case INSTRUMENTED_FOR_ITER:733 return 2;734 case INSTRUMENTED_INSTRUCTION:735 return 0;736 case INSTRUMENTED_JUMP_BACKWARD:737 return 0;738 case INSTRUMENTED_JUMP_FORWARD:739 return 0;740 case INSTRUMENTED_LINE:741 return 0;742 case INSTRUMENTED_LOAD_SUPER_ATTR:743 return 1 + (oparg & 1);744 case INSTRUMENTED_NOT_TAKEN:745 return 0;746 case INSTRUMENTED_POP_ITER:747 return 0;748 case INSTRUMENTED_POP_JUMP_IF_FALSE:749 return 0;750 case INSTRUMENTED_POP_JUMP_IF_NONE:751 return 0;752 case INSTRUMENTED_POP_JUMP_IF_NOT_NONE:753 return 0;754 case INSTRUMENTED_POP_JUMP_IF_TRUE:755 return 0;756 case INSTRUMENTED_RESUME:757 return 0;758 case INSTRUMENTED_RETURN_VALUE:759 return 1;760 case INSTRUMENTED_YIELD_VALUE:761 return 1;762 case INTERPRETER_EXIT:763 return 0;764 case IS_OP:765 return 1;766 case JUMP:767 return 0;768 case JUMP_BACKWARD:769 return 0;770 case JUMP_BACKWARD_JIT:771 return 0;772 case JUMP_BACKWARD_NO_INTERRUPT:773 return 0;774 case JUMP_BACKWARD_NO_JIT:775 return 0;776 case JUMP_FORWARD:777 return 0;778 case JUMP_IF_FALSE:779 return 1;780 case JUMP_IF_TRUE:781 return 1;782 case JUMP_NO_INTERRUPT:783 return 0;784 case LIST_APPEND:785 return 1 + (oparg-1);786 case LIST_EXTEND:787 return 1 + (oparg-1);788 case LOAD_ATTR:789 return 1 + (oparg&1);790 case LOAD_ATTR_CLASS:791 return 1 + (oparg & 1);792 case LOAD_ATTR_CLASS_WITH_METACLASS_CHECK:793 return 1 + (oparg & 1);794 case LOAD_ATTR_GETATTRIBUTE_OVERRIDDEN:795 return 1;796 case LOAD_ATTR_INSTANCE_VALUE:797 return 1 + (oparg & 1);798 case LOAD_ATTR_METHOD_LAZY_DICT:799 return 2;800 case LOAD_ATTR_METHOD_NO_DICT:801 return 2;802 case LOAD_ATTR_METHOD_WITH_VALUES:803 return 2;804 case LOAD_ATTR_MODULE:805 return 1 + (oparg & 1);806 case LOAD_ATTR_NONDESCRIPTOR_NO_DICT:807 return 1;808 case LOAD_ATTR_NONDESCRIPTOR_WITH_VALUES:809 return 1;810 case LOAD_ATTR_PROPERTY:811 return 0;812 case LOAD_ATTR_SLOT:813 return 1 + (oparg & 1);814 case LOAD_ATTR_WITH_HINT:815 return 1 + (oparg & 1);816 case LOAD_BUILD_CLASS:817 return 1;818 case LOAD_CLOSURE:819 return 1;820 case LOAD_COMMON_CONSTANT:821 return 1;822 case LOAD_CONST:823 return 1;824 case LOAD_CONST_IMMORTAL:825 return 1;826 case LOAD_CONST_MORTAL:827 return 1;828 case LOAD_DEREF:829 return 1;830 case LOAD_FAST:831 return 1;832 case LOAD_FAST_AND_CLEAR:833 return 1;834 case LOAD_FAST_BORROW:835 return 1;836 case LOAD_FAST_BORROW_LOAD_FAST_BORROW:837 return 2;838 case LOAD_FAST_CHECK:839 return 1;840 case LOAD_FAST_LOAD_FAST:841 return 2;842 case LOAD_FROM_DICT_OR_DEREF:843 return 1;844 case LOAD_FROM_DICT_OR_GLOBALS:845 return 1;846 case LOAD_GLOBAL:847 return 1 + (oparg & 1);848 case LOAD_GLOBAL_BUILTIN:849 return 1 + (oparg & 1);850 case LOAD_GLOBAL_MODULE:851 return 1 + (oparg & 1);852 case LOAD_LOCALS:853 return 1;854 case LOAD_NAME:855 return 1;856 case LOAD_SMALL_INT:857 return 1;858 case LOAD_SPECIAL:859 return 2;860 case LOAD_SUPER_ATTR:861 return 1 + (oparg & 1);862 case LOAD_SUPER_ATTR_ATTR:863 return 1;864 case LOAD_SUPER_ATTR_METHOD:865 return 2;866 case MAKE_CELL:867 return 0;868 case MAKE_FUNCTION:869 return 1;870 case MAP_ADD:871 return 1 + (oparg - 1);872 case MATCH_CLASS:873 return 1;874 case MATCH_KEYS:875 return 3;876 case MATCH_MAPPING:877 return 2;878 case MATCH_SEQUENCE:879 return 2;880 case NOP:881 return 0;882 case NOT_TAKEN:883 return 0;884 case POP_BLOCK:885 return 0;886 case POP_EXCEPT:887 return 0;888 case POP_ITER:889 return 0;890 case POP_JUMP_IF_FALSE:891 return 0;892 case POP_JUMP_IF_NONE:893 return 0;894 case POP_JUMP_IF_NOT_NONE:895 return 0;896 case POP_JUMP_IF_TRUE:897 return 0;898 case POP_TOP:899 return 0;900 case PUSH_EXC_INFO:901 return 2;902 case PUSH_NULL:903 return 1;904 case RAISE_VARARGS:905 return 0;906 case RERAISE:907 return oparg;908 case RESERVED:909 return 0;910 case RESUME:911 return 0;912 case RESUME_CHECK:913 return 0;914 case RETURN_GENERATOR:915 return 1;916 case RETURN_VALUE:917 return 1;918 case SEND:919 return 2;920 case SEND_GEN:921 return 1;922 case SETUP_ANNOTATIONS:923 return 0;924 case SETUP_CLEANUP:925 return 2;926 case SETUP_FINALLY:927 return 1;928 case SETUP_WITH:929 return 1;930 case SET_ADD:931 return 1 + (oparg-1);932 case SET_FUNCTION_ATTRIBUTE:933 return 1;934 case SET_UPDATE:935 return 1 + (oparg-1);936 case STORE_ATTR:937 return 0;938 case STORE_ATTR_INSTANCE_VALUE:939 return 0;940 case STORE_ATTR_SLOT:941 return 0;942 case STORE_ATTR_WITH_HINT:943 return 0;944 case STORE_DEREF:945 return 0;946 case STORE_FAST:947 return 0;948 case STORE_FAST_LOAD_FAST:949 return 1;950 case STORE_FAST_MAYBE_NULL:951 return 0;952 case STORE_FAST_STORE_FAST:953 return 0;954 case STORE_GLOBAL:955 return 0;956 case STORE_NAME:957 return 0;958 case STORE_SLICE:959 return 0;960 case STORE_SUBSCR:961 return 0;962 case STORE_SUBSCR_DICT:963 return 0;964 case STORE_SUBSCR_LIST_INT:965 return 0;966 case SWAP:967 return 2 + (oparg-2);968 case TO_BOOL:969 return 1;970 case TO_BOOL_ALWAYS_TRUE:971 return 1;972 case TO_BOOL_BOOL:973 return 1;974 case TO_BOOL_INT:975 return 1;976 case TO_BOOL_LIST:977 return 1;978 case TO_BOOL_NONE:979 return 1;980 case TO_BOOL_STR:981 return 1;982 case UNARY_INVERT:983 return 1;984 case UNARY_NEGATIVE:985 return 1;986 case UNARY_NOT:987 return 1;988 case UNPACK_EX:989 return 1 + (oparg & 0xFF) + (oparg >> 8);990 case UNPACK_SEQUENCE:991 return oparg;992 case UNPACK_SEQUENCE_LIST:993 return oparg;994 case UNPACK_SEQUENCE_TUPLE:995 return oparg;996 case UNPACK_SEQUENCE_TWO_TUPLE:997 return 2;998 case WITH_EXCEPT_START:999 return 6;1000 case YIELD_VALUE:1001 return 1;1002 default:1003 return -1;1004 }1005}1006 1007#endif1008 1009enum InstructionFormat {1010 INSTR_FMT_IB = 1,1011 INSTR_FMT_IBC = 2,1012 INSTR_FMT_IBC00 = 3,1013 INSTR_FMT_IBC000 = 4,1014 INSTR_FMT_IBC0000 = 5,1015 INSTR_FMT_IBC00000000 = 6,1016 INSTR_FMT_IX = 7,1017 INSTR_FMT_IXC = 8,1018 INSTR_FMT_IXC00 = 9,1019 INSTR_FMT_IXC000 = 10,1020 INSTR_FMT_IXC0000 = 11,1021};1022 1023#define IS_VALID_OPCODE(OP) \1024 (((OP) >= 0) && ((OP) < 267) && \1025 (_PyOpcode_opcode_metadata[(OP)].valid_entry))1026 1027#define HAS_ARG_FLAG (1)1028#define HAS_CONST_FLAG (2)1029#define HAS_NAME_FLAG (4)1030#define HAS_JUMP_FLAG (8)1031#define HAS_FREE_FLAG (16)1032#define HAS_LOCAL_FLAG (32)1033#define HAS_EVAL_BREAK_FLAG (64)1034#define HAS_DEOPT_FLAG (128)1035#define HAS_ERROR_FLAG (256)1036#define HAS_ESCAPES_FLAG (512)1037#define HAS_EXIT_FLAG (1024)1038#define HAS_PURE_FLAG (2048)1039#define HAS_PASSTHROUGH_FLAG (4096)1040#define HAS_OPARG_AND_1_FLAG (8192)1041#define HAS_ERROR_NO_POP_FLAG (16384)1042#define HAS_NO_SAVE_IP_FLAG (32768)1043#define OPCODE_HAS_ARG(OP) (_PyOpcode_opcode_metadata[OP].flags & (HAS_ARG_FLAG))1044#define OPCODE_HAS_CONST(OP) (_PyOpcode_opcode_metadata[OP].flags & (HAS_CONST_FLAG))1045#define OPCODE_HAS_NAME(OP) (_PyOpcode_opcode_metadata[OP].flags & (HAS_NAME_FLAG))1046#define OPCODE_HAS_JUMP(OP) (_PyOpcode_opcode_metadata[OP].flags & (HAS_JUMP_FLAG))1047#define OPCODE_HAS_FREE(OP) (_PyOpcode_opcode_metadata[OP].flags & (HAS_FREE_FLAG))1048#define OPCODE_HAS_LOCAL(OP) (_PyOpcode_opcode_metadata[OP].flags & (HAS_LOCAL_FLAG))1049#define OPCODE_HAS_EVAL_BREAK(OP) (_PyOpcode_opcode_metadata[OP].flags & (HAS_EVAL_BREAK_FLAG))1050#define OPCODE_HAS_DEOPT(OP) (_PyOpcode_opcode_metadata[OP].flags & (HAS_DEOPT_FLAG))1051#define OPCODE_HAS_ERROR(OP) (_PyOpcode_opcode_metadata[OP].flags & (HAS_ERROR_FLAG))1052#define OPCODE_HAS_ESCAPES(OP) (_PyOpcode_opcode_metadata[OP].flags & (HAS_ESCAPES_FLAG))1053#define OPCODE_HAS_EXIT(OP) (_PyOpcode_opcode_metadata[OP].flags & (HAS_EXIT_FLAG))1054#define OPCODE_HAS_PURE(OP) (_PyOpcode_opcode_metadata[OP].flags & (HAS_PURE_FLAG))1055#define OPCODE_HAS_PASSTHROUGH(OP) (_PyOpcode_opcode_metadata[OP].flags & (HAS_PASSTHROUGH_FLAG))1056#define OPCODE_HAS_OPARG_AND_1(OP) (_PyOpcode_opcode_metadata[OP].flags & (HAS_OPARG_AND_1_FLAG))1057#define OPCODE_HAS_ERROR_NO_POP(OP) (_PyOpcode_opcode_metadata[OP].flags & (HAS_ERROR_NO_POP_FLAG))1058#define OPCODE_HAS_NO_SAVE_IP(OP) (_PyOpcode_opcode_metadata[OP].flags & (HAS_NO_SAVE_IP_FLAG))1059 1060#define OPARG_SIMPLE 01061#define OPARG_CACHE_1 11062#define OPARG_CACHE_2 21063#define OPARG_CACHE_4 41064#define OPARG_TOP 51065#define OPARG_BOTTOM 61066#define OPARG_SAVE_RETURN_OFFSET 71067#define OPARG_REPLACED 91068#define OPERAND1_1 101069#define OPERAND1_2 111070#define OPERAND1_4 121071 1072struct opcode_metadata {1073 uint8_t valid_entry;1074 uint8_t instr_format;1075 uint16_t flags;1076};1077 1078extern const struct opcode_metadata _PyOpcode_opcode_metadata[267];1079#ifdef NEED_OPCODE_METADATA1080const struct opcode_metadata _PyOpcode_opcode_metadata[267] = {1081 [BINARY_OP] = { true, INSTR_FMT_IBC0000, HAS_ARG_FLAG | HAS_ERROR_FLAG | HAS_ERROR_NO_POP_FLAG | HAS_ESCAPES_FLAG },1082 [BINARY_OP_ADD_FLOAT] = { true, INSTR_FMT_IXC0000, HAS_EXIT_FLAG | HAS_ERROR_FLAG },1083 [BINARY_OP_ADD_INT] = { true, INSTR_FMT_IXC0000, HAS_EXIT_FLAG | HAS_ERROR_FLAG | HAS_ESCAPES_FLAG },1084 [BINARY_OP_ADD_UNICODE] = { true, INSTR_FMT_IXC0000, HAS_EXIT_FLAG | HAS_ERROR_FLAG },1085 [BINARY_OP_EXTEND] = { true, INSTR_FMT_IXC0000, HAS_DEOPT_FLAG | HAS_ERROR_FLAG | HAS_ESCAPES_FLAG },1086 [BINARY_OP_INPLACE_ADD_UNICODE] = { true, INSTR_FMT_IXC0000, HAS_LOCAL_FLAG | HAS_DEOPT_FLAG | HAS_EXIT_FLAG | HAS_ERROR_FLAG | HAS_ESCAPES_FLAG },1087 [BINARY_OP_MULTIPLY_FLOAT] = { true, INSTR_FMT_IXC0000, HAS_EXIT_FLAG | HAS_ERROR_FLAG },1088 [BINARY_OP_MULTIPLY_INT] = { true, INSTR_FMT_IXC0000, HAS_EXIT_FLAG | HAS_ERROR_FLAG | HAS_ESCAPES_FLAG },1089 [BINARY_OP_SUBSCR_DICT] = { true, INSTR_FMT_IXC0000, HAS_EXIT_FLAG | HAS_ERROR_FLAG | HAS_ESCAPES_FLAG },1090 [BINARY_OP_SUBSCR_GETITEM] = { true, INSTR_FMT_IXC0000, HAS_DEOPT_FLAG },1091 [BINARY_OP_SUBSCR_LIST_INT] = { true, INSTR_FMT_IXC0000, HAS_DEOPT_FLAG | HAS_EXIT_FLAG | HAS_ESCAPES_FLAG },1092 [BINARY_OP_SUBSCR_LIST_SLICE] = { true, INSTR_FMT_IXC0000, HAS_EXIT_FLAG | HAS_ERROR_FLAG | HAS_ESCAPES_FLAG },1093 [BINARY_OP_SUBSCR_STR_INT] = { true, INSTR_FMT_IXC0000, HAS_DEOPT_FLAG | HAS_EXIT_FLAG | HAS_ESCAPES_FLAG },1094 [BINARY_OP_SUBSCR_TUPLE_INT] = { true, INSTR_FMT_IXC0000, HAS_DEOPT_FLAG | HAS_EXIT_FLAG },1095 [BINARY_OP_SUBTRACT_FLOAT] = { true, INSTR_FMT_IXC0000, HAS_EXIT_FLAG | HAS_ERROR_FLAG },1096 [BINARY_OP_SUBTRACT_INT] = { true, INSTR_FMT_IXC0000, HAS_EXIT_FLAG | HAS_ERROR_FLAG | HAS_ESCAPES_FLAG },1097 [BINARY_SLICE] = { true, INSTR_FMT_IX, HAS_ERROR_FLAG | HAS_ESCAPES_FLAG },1098 [BUILD_INTERPOLATION] = { true, INSTR_FMT_IB, HAS_ARG_FLAG | HAS_ERROR_FLAG | HAS_ESCAPES_FLAG },1099 [BUILD_LIST] = { true, INSTR_FMT_IB, HAS_ARG_FLAG | HAS_ERROR_FLAG | HAS_ERROR_NO_POP_FLAG | HAS_ESCAPES_FLAG },1100 [BUILD_MAP] = { true, INSTR_FMT_IB, HAS_ARG_FLAG | HAS_ERROR_FLAG | HAS_ESCAPES_FLAG },1101 [BUILD_SET] = { true, INSTR_FMT_IB, HAS_ARG_FLAG | HAS_ERROR_FLAG | HAS_ESCAPES_FLAG },1102 [BUILD_SLICE] = { true, INSTR_FMT_IB, HAS_ARG_FLAG | HAS_ERROR_FLAG },1103 [BUILD_STRING] = { true, INSTR_FMT_IB, HAS_ARG_FLAG | HAS_ERROR_FLAG },1104 [BUILD_TEMPLATE] = { true, INSTR_FMT_IX, HAS_ERROR_FLAG | HAS_ESCAPES_FLAG },1105 [BUILD_TUPLE] = { true, INSTR_FMT_IB, HAS_ARG_FLAG | HAS_ERROR_FLAG | HAS_ERROR_NO_POP_FLAG },1106 [CACHE] = { true, INSTR_FMT_IX, 0 },1107 [CALL] = { true, INSTR_FMT_IBC00, HAS_ARG_FLAG | HAS_EVAL_BREAK_FLAG | HAS_ERROR_FLAG | HAS_ERROR_NO_POP_FLAG | HAS_ESCAPES_FLAG },1108 [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 },1109 [CALL_BOUND_METHOD_EXACT_ARGS] = { true, INSTR_FMT_IBC00, HAS_ARG_FLAG | HAS_DEOPT_FLAG | HAS_EXIT_FLAG | HAS_ESCAPES_FLAG },1110 [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 },1111 [CALL_BUILTIN_CLASS] = { true, INSTR_FMT_IBC00, HAS_ARG_FLAG | HAS_EVAL_BREAK_FLAG | HAS_DEOPT_FLAG | HAS_ERROR_FLAG | HAS_ESCAPES_FLAG },1112 [CALL_BUILTIN_FAST] = { true, INSTR_FMT_IBC00, HAS_ARG_FLAG | HAS_EVAL_BREAK_FLAG | HAS_DEOPT_FLAG | HAS_ERROR_FLAG | HAS_ESCAPES_FLAG },1113 [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 },1114 [CALL_BUILTIN_O] = { true, INSTR_FMT_IBC00, HAS_ARG_FLAG | HAS_EVAL_BREAK_FLAG | HAS_EXIT_FLAG | HAS_ERROR_FLAG | HAS_ESCAPES_FLAG },1115 [CALL_FUNCTION_EX] = { true, INSTR_FMT_IX, HAS_EVAL_BREAK_FLAG | HAS_ERROR_FLAG | HAS_ERROR_NO_POP_FLAG | HAS_ESCAPES_FLAG },1116 [CALL_INTRINSIC_1] = { true, INSTR_FMT_IB, HAS_ARG_FLAG | HAS_ERROR_FLAG | HAS_ESCAPES_FLAG },1117 [CALL_INTRINSIC_2] = { true, INSTR_FMT_IB, HAS_ARG_FLAG | HAS_ERROR_FLAG | HAS_ESCAPES_FLAG },1118 [CALL_ISINSTANCE] = { true, INSTR_FMT_IBC00, HAS_ARG_FLAG | HAS_DEOPT_FLAG | HAS_ERROR_FLAG | HAS_ERROR_NO_POP_FLAG | HAS_ESCAPES_FLAG },1119 [CALL_KW] = { true, INSTR_FMT_IBC00, HAS_ARG_FLAG | HAS_ERROR_FLAG | HAS_ERROR_NO_POP_FLAG | HAS_ESCAPES_FLAG },1120 [CALL_KW_BOUND_METHOD] = { true, INSTR_FMT_IBC00, HAS_ARG_FLAG | HAS_DEOPT_FLAG | HAS_EXIT_FLAG | HAS_ERROR_FLAG | HAS_ESCAPES_FLAG },1121 [CALL_KW_NON_PY] = { true, INSTR_FMT_IBC00, HAS_ARG_FLAG | HAS_EVAL_BREAK_FLAG | HAS_EXIT_FLAG | HAS_ERROR_FLAG | HAS_ESCAPES_FLAG },1122 [CALL_KW_PY] = { true, INSTR_FMT_IBC00, HAS_ARG_FLAG | HAS_DEOPT_FLAG | HAS_EXIT_FLAG | HAS_ERROR_FLAG | HAS_ESCAPES_FLAG },1123 [CALL_LEN] = { true, INSTR_FMT_IXC00, HAS_DEOPT_FLAG | HAS_ERROR_FLAG | HAS_ERROR_NO_POP_FLAG | HAS_ESCAPES_FLAG },1124 [CALL_LIST_APPEND] = { true, INSTR_FMT_IBC00, HAS_ARG_FLAG | HAS_DEOPT_FLAG | HAS_ERROR_FLAG | HAS_ESCAPES_FLAG },1125 [CALL_METHOD_DESCRIPTOR_FAST] = { true, INSTR_FMT_IBC00, HAS_ARG_FLAG | HAS_EVAL_BREAK_FLAG | HAS_EXIT_FLAG | HAS_ERROR_FLAG | HAS_ESCAPES_FLAG },1126 [CALL_METHOD_DESCRIPTOR_FAST_WITH_KEYWORDS] = { true, INSTR_FMT_IBC00, HAS_ARG_FLAG | HAS_EVAL_BREAK_FLAG | HAS_EXIT_FLAG | HAS_ERROR_FLAG | HAS_ESCAPES_FLAG },1127 [CALL_METHOD_DESCRIPTOR_NOARGS] = { true, INSTR_FMT_IBC00, HAS_ARG_FLAG | HAS_EVAL_BREAK_FLAG | HAS_EXIT_FLAG | HAS_ERROR_FLAG | HAS_ESCAPES_FLAG },1128 [CALL_METHOD_DESCRIPTOR_O] = { true, INSTR_FMT_IBC00, HAS_ARG_FLAG | HAS_EVAL_BREAK_FLAG | HAS_EXIT_FLAG | HAS_ERROR_FLAG | HAS_ESCAPES_FLAG },1129 [CALL_NON_PY_GENERAL] = { true, INSTR_FMT_IBC00, HAS_ARG_FLAG | HAS_EVAL_BREAK_FLAG | HAS_EXIT_FLAG | HAS_ERROR_FLAG | HAS_ESCAPES_FLAG },1130 [CALL_PY_EXACT_ARGS] = { true, INSTR_FMT_IBC00, HAS_ARG_FLAG | HAS_DEOPT_FLAG | HAS_EXIT_FLAG },1131 [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 },1132 [CALL_STR_1] = { true, INSTR_FMT_IBC00, HAS_ARG_FLAG | HAS_EVAL_BREAK_FLAG | HAS_DEOPT_FLAG | HAS_ERROR_FLAG | HAS_ESCAPES_FLAG },1133 [CALL_TUPLE_1] = { true, INSTR_FMT_IBC00, HAS_ARG_FLAG | HAS_EVAL_BREAK_FLAG | HAS_DEOPT_FLAG | HAS_ERROR_FLAG | HAS_ESCAPES_FLAG },1134 [CALL_TYPE_1] = { true, INSTR_FMT_IBC00, HAS_ARG_FLAG | HAS_DEOPT_FLAG | HAS_ESCAPES_FLAG },1135 [CHECK_EG_MATCH] = { true, INSTR_FMT_IX, HAS_ERROR_FLAG | HAS_ESCAPES_FLAG },1136 [CHECK_EXC_MATCH] = { true, INSTR_FMT_IX, HAS_ERROR_FLAG | HAS_ERROR_NO_POP_FLAG | HAS_ESCAPES_FLAG },1137 [CLEANUP_THROW] = { true, INSTR_FMT_IX, HAS_ERROR_FLAG | HAS_ERROR_NO_POP_FLAG | HAS_ESCAPES_FLAG },1138 [COMPARE_OP] = { true, INSTR_FMT_IBC, HAS_ARG_FLAG | HAS_ERROR_FLAG | HAS_ESCAPES_FLAG },1139 [COMPARE_OP_FLOAT] = { true, INSTR_FMT_IBC, HAS_ARG_FLAG | HAS_EXIT_FLAG },1140 [COMPARE_OP_INT] = { true, INSTR_FMT_IBC, HAS_ARG_FLAG | HAS_DEOPT_FLAG | HAS_EXIT_FLAG },1141 [COMPARE_OP_STR] = { true, INSTR_FMT_IBC, HAS_ARG_FLAG | HAS_EXIT_FLAG },1142 [CONTAINS_OP] = { true, INSTR_FMT_IBC, HAS_ARG_FLAG | HAS_ERROR_FLAG | HAS_ESCAPES_FLAG },1143 [CONTAINS_OP_DICT] = { true, INSTR_FMT_IBC, HAS_ARG_FLAG | HAS_EXIT_FLAG | HAS_ERROR_FLAG | HAS_ESCAPES_FLAG },1144 [CONTAINS_OP_SET] = { true, INSTR_FMT_IBC, HAS_ARG_FLAG | HAS_DEOPT_FLAG | HAS_ERROR_FLAG | HAS_ESCAPES_FLAG },1145 [CONVERT_VALUE] = { true, INSTR_FMT_IB, HAS_ARG_FLAG | HAS_ERROR_FLAG | HAS_ESCAPES_FLAG },1146 [COPY] = { true, INSTR_FMT_IB, HAS_ARG_FLAG | HAS_PURE_FLAG },1147 [COPY_FREE_VARS] = { true, INSTR_FMT_IB, HAS_ARG_FLAG },1148 [DELETE_ATTR] = { true, INSTR_FMT_IB, HAS_ARG_FLAG | HAS_NAME_FLAG | HAS_ERROR_FLAG | HAS_ESCAPES_FLAG },1149 [DELETE_DEREF] = { true, INSTR_FMT_IB, HAS_ARG_FLAG | HAS_FREE_FLAG | HAS_ERROR_FLAG | HAS_ERROR_NO_POP_FLAG | HAS_ESCAPES_FLAG },1150 [DELETE_FAST] = { true, INSTR_FMT_IB, HAS_ARG_FLAG | HAS_LOCAL_FLAG | HAS_ERROR_FLAG | HAS_ESCAPES_FLAG },1151 [DELETE_GLOBAL] = { true, INSTR_FMT_IB, HAS_ARG_FLAG | HAS_NAME_FLAG | HAS_ERROR_FLAG | HAS_ERROR_NO_POP_FLAG | HAS_ESCAPES_FLAG },1152 [DELETE_NAME] = { true, INSTR_FMT_IB, HAS_ARG_FLAG | HAS_NAME_FLAG | HAS_ERROR_FLAG | HAS_ERROR_NO_POP_FLAG | HAS_ESCAPES_FLAG },1153 [DELETE_SUBSCR] = { true, INSTR_FMT_IX, HAS_ERROR_FLAG | HAS_ESCAPES_FLAG },1154 [DICT_MERGE] = { true, INSTR_FMT_IB, HAS_ARG_FLAG | HAS_ERROR_FLAG | HAS_ESCAPES_FLAG },1155 [DICT_UPDATE] = { true, INSTR_FMT_IB, HAS_ARG_FLAG | HAS_ERROR_FLAG | HAS_ESCAPES_FLAG },1156 [END_ASYNC_FOR] = { true, INSTR_FMT_IB, HAS_ARG_FLAG | HAS_JUMP_FLAG | HAS_ERROR_FLAG | HAS_ERROR_NO_POP_FLAG | HAS_ESCAPES_FLAG },1157 [END_FOR] = { true, INSTR_FMT_IX, HAS_ESCAPES_FLAG | HAS_NO_SAVE_IP_FLAG },1158 [END_SEND] = { true, INSTR_FMT_IX, HAS_ESCAPES_FLAG | HAS_PURE_FLAG },1159 [ENTER_EXECUTOR] = { true, INSTR_FMT_IB, HAS_ARG_FLAG },1160 [EXIT_INIT_CHECK] = { true, INSTR_FMT_IX, HAS_ERROR_FLAG | HAS_ERROR_NO_POP_FLAG | HAS_ESCAPES_FLAG },1161 [EXTENDED_ARG] = { true, INSTR_FMT_IB, HAS_ARG_FLAG },1162 [FORMAT_SIMPLE] = { true, INSTR_FMT_IX, HAS_ERROR_FLAG | HAS_ESCAPES_FLAG },1163 [FORMAT_WITH_SPEC] = { true, INSTR_FMT_IX, HAS_ERROR_FLAG | HAS_ESCAPES_FLAG },1164 [FOR_ITER] = { true, INSTR_FMT_IBC, HAS_ARG_FLAG | HAS_JUMP_FLAG | HAS_ERROR_FLAG | HAS_ERROR_NO_POP_FLAG | HAS_ESCAPES_FLAG },1165 [FOR_ITER_GEN] = { true, INSTR_FMT_IBC, HAS_ARG_FLAG | HAS_DEOPT_FLAG },1166 [FOR_ITER_LIST] = { true, INSTR_FMT_IBC, HAS_ARG_FLAG | HAS_JUMP_FLAG | HAS_DEOPT_FLAG | HAS_EXIT_FLAG | HAS_ESCAPES_FLAG },1167 [FOR_ITER_RANGE] = { true, INSTR_FMT_IBC, HAS_ARG_FLAG | HAS_JUMP_FLAG | HAS_EXIT_FLAG | HAS_ERROR_FLAG },1168 [FOR_ITER_TUPLE] = { true, INSTR_FMT_IBC, HAS_ARG_FLAG | HAS_JUMP_FLAG | HAS_EXIT_FLAG | HAS_ESCAPES_FLAG },1169 [GET_AITER] = { true, INSTR_FMT_IX, HAS_ERROR_FLAG | HAS_ESCAPES_FLAG },1170 [GET_ANEXT] = { true, INSTR_FMT_IX, HAS_ERROR_FLAG | HAS_ERROR_NO_POP_FLAG | HAS_ESCAPES_FLAG },1171 [GET_AWAITABLE] = { true, INSTR_FMT_IB, HAS_ARG_FLAG | HAS_ERROR_FLAG | HAS_ESCAPES_FLAG },1172 [GET_ITER] = { true, INSTR_FMT_IX, HAS_ERROR_FLAG | HAS_ESCAPES_FLAG },1173 [GET_LEN] = { true, INSTR_FMT_IX, HAS_ERROR_FLAG | HAS_ESCAPES_FLAG },1174 [GET_YIELD_FROM_ITER] = { true, INSTR_FMT_IX, HAS_ERROR_FLAG | HAS_ERROR_NO_POP_FLAG | HAS_ESCAPES_FLAG },1175 [IMPORT_FROM] = { true, INSTR_FMT_IB, HAS_ARG_FLAG | HAS_NAME_FLAG | HAS_ERROR_FLAG | HAS_ESCAPES_FLAG },1176 [IMPORT_NAME] = { true, INSTR_FMT_IB, HAS_ARG_FLAG | HAS_NAME_FLAG | HAS_ERROR_FLAG | HAS_ESCAPES_FLAG },1177 [INSTRUMENTED_CALL] = { true, INSTR_FMT_IBC00, HAS_ARG_FLAG | HAS_EVAL_BREAK_FLAG | HAS_ERROR_FLAG | HAS_ERROR_NO_POP_FLAG | HAS_ESCAPES_FLAG },1178 [INSTRUMENTED_CALL_FUNCTION_EX] = { true, INSTR_FMT_IX, HAS_EVAL_BREAK_FLAG | HAS_ERROR_FLAG | HAS_ERROR_NO_POP_FLAG | HAS_ESCAPES_FLAG },1179 [INSTRUMENTED_CALL_KW] = { true, INSTR_FMT_IBC00, HAS_ARG_FLAG | HAS_ERROR_FLAG | HAS_ERROR_NO_POP_FLAG | HAS_ESCAPES_FLAG },1180 [INSTRUMENTED_END_ASYNC_FOR] = { true, INSTR_FMT_IB, HAS_ARG_FLAG | HAS_JUMP_FLAG | HAS_ERROR_FLAG | HAS_ERROR_NO_POP_FLAG | HAS_ESCAPES_FLAG },1181 [INSTRUMENTED_END_FOR] = { true, INSTR_FMT_IX, HAS_ERROR_FLAG | HAS_ERROR_NO_POP_FLAG | HAS_ESCAPES_FLAG | HAS_NO_SAVE_IP_FLAG },1182 [INSTRUMENTED_END_SEND] = { true, INSTR_FMT_IX, HAS_ERROR_FLAG | HAS_ERROR_NO_POP_FLAG | HAS_ESCAPES_FLAG },1183 [INSTRUMENTED_FOR_ITER] = { true, INSTR_FMT_IBC, HAS_ARG_FLAG | HAS_JUMP_FLAG | HAS_ERROR_FLAG | HAS_ERROR_NO_POP_FLAG | HAS_ESCAPES_FLAG },1184 [INSTRUMENTED_INSTRUCTION] = { true, INSTR_FMT_IX, HAS_ERROR_FLAG | HAS_ESCAPES_FLAG },1185 [INSTRUMENTED_JUMP_BACKWARD] = { true, INSTR_FMT_IBC, HAS_ARG_FLAG | HAS_EVAL_BREAK_FLAG | HAS_ERROR_FLAG | HAS_ESCAPES_FLAG },1186 [INSTRUMENTED_JUMP_FORWARD] = { true, INSTR_FMT_IB, HAS_ARG_FLAG },1187 [INSTRUMENTED_LINE] = { true, INSTR_FMT_IX, HAS_ESCAPES_FLAG },1188 [INSTRUMENTED_LOAD_SUPER_ATTR] = { true, INSTR_FMT_IBC, HAS_ARG_FLAG | HAS_NAME_FLAG | HAS_ERROR_FLAG | HAS_ESCAPES_FLAG },1189 [INSTRUMENTED_NOT_TAKEN] = { true, INSTR_FMT_IX, 0 },1190 [INSTRUMENTED_POP_ITER] = { true, INSTR_FMT_IX, HAS_ESCAPES_FLAG },1191 [INSTRUMENTED_POP_JUMP_IF_FALSE] = { true, INSTR_FMT_IBC, HAS_ARG_FLAG },1192 [INSTRUMENTED_POP_JUMP_IF_NONE] = { true, INSTR_FMT_IBC, HAS_ARG_FLAG | HAS_ESCAPES_FLAG },1193 [INSTRUMENTED_POP_JUMP_IF_NOT_NONE] = { true, INSTR_FMT_IBC, HAS_ARG_FLAG | HAS_ESCAPES_FLAG },1194 [INSTRUMENTED_POP_JUMP_IF_TRUE] = { true, INSTR_FMT_IBC, HAS_ARG_FLAG },1195 [INSTRUMENTED_RESUME] = { true, INSTR_FMT_IB, HAS_ARG_FLAG | HAS_EVAL_BREAK_FLAG | HAS_ERROR_FLAG | HAS_ERROR_NO_POP_FLAG | HAS_ESCAPES_FLAG },1196 [INSTRUMENTED_RETURN_VALUE] = { true, INSTR_FMT_IX, HAS_ERROR_FLAG | HAS_ESCAPES_FLAG },1197 [INSTRUMENTED_YIELD_VALUE] = { true, INSTR_FMT_IB, HAS_ARG_FLAG | HAS_ERROR_FLAG | HAS_ERROR_NO_POP_FLAG | HAS_ESCAPES_FLAG },1198 [INTERPRETER_EXIT] = { true, INSTR_FMT_IX, HAS_ESCAPES_FLAG },1199 [IS_OP] = { true, INSTR_FMT_IB, HAS_ARG_FLAG },1200 [JUMP_BACKWARD] = { true, INSTR_FMT_IBC, HAS_ARG_FLAG | HAS_JUMP_FLAG | HAS_EVAL_BREAK_FLAG | HAS_ERROR_FLAG | HAS_ESCAPES_FLAG },