Where Online Learning is simpler!
The C and C++ Include Header Files
cat -n /usr/include/python3.14/internal/pycore_opcode_metadata.h
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) == 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" 35 extern int _PyOpcode_num_popped(int opcode, int oparg); 36 #ifdef NEED_OPCODE_METADATA 37 int _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 #endif 521 522 extern int _PyOpcode_num_pushed(int opcode, int oparg); 523 #ifdef NEED_OPCODE_METADATA 524 int _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 #endif 1008 1009 enum 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 0 1061 #define OPARG_CACHE_1 1 1062 #define OPARG_CACHE_2 2 1063 #define OPARG_CACHE_4 4 1064 #define OPARG_TOP 5 1065 #define OPARG_BOTTOM 6 1066 #define OPARG_SAVE_RETURN_OFFSET 7 1067 #define OPARG_REPLACED 9 1068 #define OPERAND1_1 10 1069 #define OPERAND1_2 11 1070 #define OPERAND1_4 12 1071 1072 struct opcode_metadata { 1073 uint8_t valid_entry; 1074 uint8_t instr_format; 1075 uint16_t flags; 1076 }; 1077 1078 extern const struct opcode_metadata _PyOpcode_opcode_metadata[267]; 1079 #ifdef NEED_OPCODE_METADATA 1080 const 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 }, 1201 [JUMP_BACKWARD_JIT] = { true, INSTR_FMT_IBC, HAS_ARG_FLAG | HAS_JUMP_FLAG | HAS_EVAL_BREAK_FLAG | HAS_ERROR_FLAG | HAS_ESCAPES_FLAG }, 1202 [JUMP_BACKWARD_NO_INTERRUPT] = { true, INSTR_FMT_IB, HAS_ARG_FLAG | HAS_JUMP_FLAG }, 1203 [JUMP_BACKWARD_NO_JIT] = { true, INSTR_FMT_IBC, HAS_ARG_FLAG | HAS_JUMP_FLAG | HAS_EVAL_BREAK_FLAG | HAS_ERROR_FLAG | HAS_ESCAPES_FLAG }, 1204 [JUMP_FORWARD] = { true, INSTR_FMT_IB, HAS_ARG_FLAG | HAS_JUMP_FLAG }, 1205 [LIST_APPEND] = { true, INSTR_FMT_IB, HAS_ARG_FLAG | HAS_ERROR_FLAG }, 1206 [LIST_EXTEND] = { true, INSTR_FMT_IB, HAS_ARG_FLAG | HAS_ERROR_FLAG | HAS_ESCAPES_FLAG }, 1207 [LOAD_ATTR] = { true, INSTR_FMT_IBC00000000, HAS_ARG_FLAG | HAS_NAME_FLAG | HAS_ERROR_FLAG | HAS_ESCAPES_FLAG }, 1208 [LOAD_ATTR_CLASS] = { true, INSTR_FMT_IBC00000000, HAS_ARG_FLAG | HAS_EXIT_FLAG }, 1209 [LOAD_ATTR_CLASS_WITH_METACLASS_CHECK] = { true, INSTR_FMT_IBC00000000, HAS_ARG_FLAG | HAS_EXIT_FLAG }, 1210 [LOAD_ATTR_GETATTRIBUTE_OVERRIDDEN] = { true, INSTR_FMT_IBC00000000, HAS_ARG_FLAG | HAS_NAME_FLAG | HAS_DEOPT_FLAG }, 1211 [LOAD_ATTR_INSTANCE_VALUE] = { true, INSTR_FMT_IBC00000000, HAS_ARG_FLAG | HAS_DEOPT_FLAG | HAS_EXIT_FLAG | HAS_ESCAPES_FLAG }, 1212 [LOAD_ATTR_METHOD_LAZY_DICT] = { true, INSTR_FMT_IBC00000000, HAS_ARG_FLAG | HAS_DEOPT_FLAG | HAS_EXIT_FLAG }, 1213 [LOAD_ATTR_METHOD_NO_DICT] = { true, INSTR_FMT_IBC00000000, HAS_ARG_FLAG | HAS_EXIT_FLAG }, 1214 [LOAD_ATTR_METHOD_WITH_VALUES] = { true, INSTR_FMT_IBC00000000, HAS_ARG_FLAG | HAS_DEOPT_FLAG | HAS_EXIT_FLAG }, 1215 [LOAD_ATTR_MODULE] = { true, INSTR_FMT_IBC00000000, HAS_ARG_FLAG | HAS_DEOPT_FLAG | HAS_ESCAPES_FLAG }, 1216 [LOAD_ATTR_NONDESCRIPTOR_NO_DICT] = { true, INSTR_FMT_IBC00000000, HAS_ARG_FLAG | HAS_EXIT_FLAG | HAS_ESCAPES_FLAG }, 1217 [LOAD_ATTR_NONDESCRIPTOR_WITH_VALUES] = { true, INSTR_FMT_IBC00000000, HAS_ARG_FLAG | HAS_DEOPT_FLAG | HAS_EXIT_FLAG | HAS_ESCAPES_FLAG }, 1218 [LOAD_ATTR_PROPERTY] = { true, INSTR_FMT_IBC00000000, HAS_ARG_FLAG | HAS_DEOPT_FLAG | HAS_EXIT_FLAG }, 1219 [LOAD_ATTR_SLOT] = { true, INSTR_FMT_IBC00000000, HAS_ARG_FLAG | HAS_DEOPT_FLAG | HAS_EXIT_FLAG }, 1220 [LOAD_ATTR_WITH_HINT] = { true, INSTR_FMT_IBC00000000, HAS_ARG_FLAG | HAS_NAME_FLAG | HAS_DEOPT_FLAG | HAS_EXIT_FLAG | HAS_ESCAPES_FLAG }, 1221 [LOAD_BUILD_CLASS] = { true, INSTR_FMT_IX, HAS_ERROR_FLAG | HAS_ESCAPES_FLAG }, 1222 [LOAD_COMMON_CONSTANT] = { true, INSTR_FMT_IB, HAS_ARG_FLAG }, 1223 [LOAD_CONST] = { true, INSTR_FMT_IB, HAS_ARG_FLAG | HAS_CONST_FLAG }, 1224 [LOAD_CONST_IMMORTAL] = { true, INSTR_FMT_IB, HAS_ARG_FLAG | HAS_CONST_FLAG }, 1225 [LOAD_CONST_MORTAL] = { true, INSTR_FMT_IB, HAS_ARG_FLAG | HAS_CONST_FLAG }, 1226 [LOAD_DEREF] = { true, INSTR_FMT_IB, HAS_ARG_FLAG | HAS_LOCAL_FLAG | HAS_ERROR_FLAG | HAS_ESCAPES_FLAG }, 1227 [LOAD_FAST] = { true, INSTR_FMT_IB, HAS_ARG_FLAG | HAS_LOCAL_FLAG | HAS_PURE_FLAG }, 1228 [LOAD_FAST_AND_CLEAR] = { true, INSTR_FMT_IB, HAS_ARG_FLAG | HAS_LOCAL_FLAG }, 1229 [LOAD_FAST_BORROW] = { true, INSTR_FMT_IB, HAS_ARG_FLAG | HAS_LOCAL_FLAG | HAS_PURE_FLAG }, 1230 [LOAD_FAST_BORROW_LOAD_FAST_BORROW] = { true, INSTR_FMT_IB, HAS_ARG_FLAG | HAS_LOCAL_FLAG }, 1231 [LOAD_FAST_CHECK] = { true, INSTR_FMT_IB, HAS_ARG_FLAG | HAS_LOCAL_FLAG | HAS_ERROR_FLAG | HAS_ESCAPES_FLAG }, 1232 [LOAD_FAST_LOAD_FAST] = { true, INSTR_FMT_IB, HAS_ARG_FLAG | HAS_LOCAL_FLAG }, 1233 [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 }, 1234 [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 }, 1235 [LOAD_GLOBAL] = { true, INSTR_FMT_IBC000, HAS_ARG_FLAG | HAS_NAME_FLAG | HAS_ERROR_FLAG | HAS_ESCAPES_FLAG }, 1236 [LOAD_GLOBAL_BUILTIN] = { true, INSTR_FMT_IBC000, HAS_ARG_FLAG | HAS_DEOPT_FLAG }, 1237 [LOAD_GLOBAL_MODULE] = { true, INSTR_FMT_IBC000, HAS_ARG_FLAG | HAS_DEOPT_FLAG }, 1238 [LOAD_LOCALS] = { true, INSTR_FMT_IX, HAS_ERROR_FLAG | HAS_ESCAPES_FLAG }, 1239 [LOAD_NAME] = { true, INSTR_FMT_IB, HAS_ARG_FLAG | HAS_NAME_FLAG | HAS_ERROR_FLAG | HAS_ESCAPES_FLAG }, 1240 [LOAD_SMALL_INT] = { true, INSTR_FMT_IB, HAS_ARG_FLAG }, 1241 [LOAD_SPECIAL] = { true, INSTR_FMT_IB, HAS_ARG_FLAG | HAS_ERROR_FLAG | HAS_ERROR_NO_POP_FLAG | HAS_ESCAPES_FLAG }, 1242 [LOAD_SUPER_ATTR] = { true, INSTR_FMT_IBC, HAS_ARG_FLAG | HAS_NAME_FLAG | HAS_ERROR_FLAG | HAS_ESCAPES_FLAG }, 1243 [LOAD_SUPER_ATTR_ATTR] = { true, INSTR_FMT_IBC, HAS_ARG_FLAG | HAS_NAME_FLAG | HAS_DEOPT_FLAG | HAS_ERROR_FLAG | HAS_ESCAPES_FLAG }, 1244 [LOAD_SUPER_ATTR_METHOD] = { true, INSTR_FMT_IBC, HAS_ARG_FLAG | HAS_NAME_FLAG | HAS_DEOPT_FLAG | HAS_ERROR_FLAG | HAS_ERROR_NO_POP_FLAG | HAS_ESCAPES_FLAG }, 1245 [MAKE_CELL] = { true, INSTR_FMT_IB, HAS_ARG_FLAG | HAS_FREE_FLAG | HAS_ERROR_FLAG | HAS_ERROR_NO_POP_FLAG | HAS_ESCAPES_FLAG }, 1246 [MAKE_FUNCTION] = { true, INSTR_FMT_IX, HAS_ERROR_FLAG | HAS_ESCAPES_FLAG }, 1247 [MAP_ADD] = { true, INSTR_FMT_IB, HAS_ARG_FLAG | HAS_ERROR_FLAG | HAS_ESCAPES_FLAG }, 1248 [MATCH_CLASS] = { true, INSTR_FMT_IB, HAS_ARG_FLAG | HAS_ERROR_FLAG | HAS_ESCAPES_FLAG }, 1249 [MATCH_KEYS] = { true, INSTR_FMT_IX, HAS_ERROR_FLAG | HAS_ESCAPES_FLAG }, 1250 [MATCH_MAPPING] = { true, INSTR_FMT_IX, 0 }, 1251 [MATCH_SEQUENCE] = { true, INSTR_FMT_IX, 0 }, 1252 [NOP] = { true, INSTR_FMT_IX, HAS_PURE_FLAG }, 1253 [NOT_TAKEN] = { true, INSTR_FMT_IX, HAS_PURE_FLAG }, 1254 [POP_EXCEPT] = { true, INSTR_FMT_IX, HAS_ESCAPES_FLAG }, 1255 [POP_ITER] = { true, INSTR_FMT_IX, HAS_ESCAPES_FLAG | HAS_PURE_FLAG }, 1256 [POP_JUMP_IF_FALSE] = { true, INSTR_FMT_IBC, HAS_ARG_FLAG | HAS_JUMP_FLAG }, 1257 [POP_JUMP_IF_NONE] = { true, INSTR_FMT_IBC, HAS_ARG_FLAG | HAS_JUMP_FLAG }, 1258 [POP_JUMP_IF_NOT_NONE] = { true, INSTR_FMT_IBC, HAS_ARG_FLAG | HAS_JUMP_FLAG }, 1259 [POP_JUMP_IF_TRUE] = { true, INSTR_FMT_IBC, HAS_ARG_FLAG | HAS_JUMP_FLAG }, 1260 [POP_TOP] = { true, INSTR_FMT_IX, HAS_ESCAPES_FLAG | HAS_PURE_FLAG }, 1261 [PUSH_EXC_INFO] = { true, INSTR_FMT_IX, 0 }, 1262 [PUSH_NULL] = { true, INSTR_FMT_IX, HAS_PURE_FLAG }, 1263 [RAISE_VARARGS] = { true, INSTR_FMT_IB, HAS_ARG_FLAG | HAS_ERROR_FLAG | HAS_ERROR_NO_POP_FLAG | HAS_ESCAPES_FLAG }, 1264 [RERAISE] = { true, INSTR_FMT_IB, HAS_ARG_FLAG | HAS_ERROR_FLAG | HAS_ERROR_NO_POP_FLAG | HAS_ESCAPES_FLAG }, 1265 [RESERVED] = { true, INSTR_FMT_IX, 0 }, 1266 [RESUME] = { true, INSTR_FMT_IB, HAS_ARG_FLAG | HAS_EVAL_BREAK_FLAG | HAS_ERROR_FLAG | HAS_ERROR_NO_POP_FLAG | HAS_ESCAPES_FLAG }, 1267 [RESUME_CHECK] = { true, INSTR_FMT_IX, HAS_DEOPT_FLAG }, 1268 [RETURN_GENERATOR] = { true, INSTR_FMT_IX, HAS_ERROR_FLAG | HAS_ESCAPES_FLAG }, 1269 [RETURN_VALUE] = { true, INSTR_FMT_IX, HAS_ESCAPES_FLAG }, 1270 [SEND] = { true, INSTR_FMT_IBC, HAS_ARG_FLAG | HAS_JUMP_FLAG | HAS_ERROR_FLAG | HAS_ESCAPES_FLAG }, 1271 [SEND_GEN] = { true, INSTR_FMT_IBC, HAS_ARG_FLAG | HAS_DEOPT_FLAG }, 1272 [SETUP_ANNOTATIONS] = { true, INSTR_FMT_IX, HAS_ERROR_FLAG | HAS_ESCAPES_FLAG }, 1273 [SET_ADD] = { true, INSTR_FMT_IB, HAS_ARG_FLAG | HAS_ERROR_FLAG | HAS_ESCAPES_FLAG }, 1274 [SET_FUNCTION_ATTRIBUTE] = { true, INSTR_FMT_IB, HAS_ARG_FLAG }, 1275 [SET_UPDATE] = { true, INSTR_FMT_IB, HAS_ARG_FLAG | HAS_ERROR_FLAG | HAS_ESCAPES_FLAG }, 1276 [STORE_ATTR] = { true, INSTR_FMT_IBC000, HAS_ARG_FLAG | HAS_NAME_FLAG | HAS_ERROR_FLAG | HAS_ESCAPES_FLAG }, 1277 [STORE_ATTR_INSTANCE_VALUE] = { true, INSTR_FMT_IXC000, HAS_EXIT_FLAG | HAS_ESCAPES_FLAG }, 1278 [STORE_ATTR_SLOT] = { true, INSTR_FMT_IXC000, HAS_DEOPT_FLAG | HAS_EXIT_FLAG | HAS_ESCAPES_FLAG }, 1279 [STORE_ATTR_WITH_HINT] = { true, INSTR_FMT_IBC000, HAS_ARG_FLAG | HAS_NAME_FLAG | HAS_DEOPT_FLAG | HAS_EXIT_FLAG | HAS_ESCAPES_FLAG }, 1280 [STORE_DEREF] = { true, INSTR_FMT_IB, HAS_ARG_FLAG | HAS_FREE_FLAG | HAS_ESCAPES_FLAG }, 1281 [STORE_FAST] = { true, INSTR_FMT_IB, HAS_ARG_FLAG | HAS_LOCAL_FLAG | HAS_ESCAPES_FLAG }, 1282 [STORE_FAST_LOAD_FAST] = { true, INSTR_FMT_IB, HAS_ARG_FLAG | HAS_LOCAL_FLAG | HAS_ESCAPES_FLAG }, 1283 [STORE_FAST_STORE_FAST] = { true, INSTR_FMT_IB, HAS_ARG_FLAG | HAS_LOCAL_FLAG | HAS_ESCAPES_FLAG }, 1284 [STORE_GLOBAL] = { true, INSTR_FMT_IB, HAS_ARG_FLAG | HAS_NAME_FLAG | HAS_ERROR_FLAG | HAS_ESCAPES_FLAG }, 1285 [STORE_NAME] = { true, INSTR_FMT_IB, HAS_ARG_FLAG | HAS_NAME_FLAG | HAS_ERROR_FLAG | HAS_ESCAPES_FLAG }, 1286 [STORE_SLICE] = { true, INSTR_FMT_IX, HAS_ERROR_FLAG | HAS_ESCAPES_FLAG }, 1287 [STORE_SUBSCR] = { true, INSTR_FMT_IXC, HAS_ERROR_FLAG | HAS_ESCAPES_FLAG }, 1288 [STORE_SUBSCR_DICT] = { true, INSTR_FMT_IXC, HAS_EXIT_FLAG | HAS_ERROR_FLAG | HAS_ESCAPES_FLAG }, 1289 [STORE_SUBSCR_LIST_INT] = { true, INSTR_FMT_IXC, HAS_DEOPT_FLAG | HAS_EXIT_FLAG | HAS_ESCAPES_FLAG }, 1290 [SWAP] = { true, INSTR_FMT_IB, HAS_ARG_FLAG | HAS_PURE_FLAG }, 1291 [TO_BOOL] = { true, INSTR_FMT_IXC00, HAS_ERROR_FLAG | HAS_ESCAPES_FLAG }, 1292 [TO_BOOL_ALWAYS_TRUE] = { true, INSTR_FMT_IXC00, HAS_EXIT_FLAG | HAS_ESCAPES_FLAG }, 1293 [TO_BOOL_BOOL] = { true, INSTR_FMT_IXC00, HAS_EXIT_FLAG }, 1294 [TO_BOOL_INT] = { true, INSTR_FMT_IXC00, HAS_EXIT_FLAG | HAS_ESCAPES_FLAG }, 1295 [TO_BOOL_LIST] = { true, INSTR_FMT_IXC00, HAS_EXIT_FLAG }, 1296 [TO_BOOL_NONE] = { true, INSTR_FMT_IXC00, HAS_EXIT_FLAG }, 1297 [TO_BOOL_STR] = { true, INSTR_FMT_IXC00, HAS_EXIT_FLAG | HAS_ESCAPES_FLAG }, 1298 [UNARY_INVERT] = { true, INSTR_FMT_IX, HAS_ERROR_FLAG | HAS_ESCAPES_FLAG }, 1299 [UNARY_NEGATIVE] = { true, INSTR_FMT_IX, HAS_ERROR_FLAG | HAS_ESCAPES_FLAG }, 1300 [UNARY_NOT] = { true, INSTR_FMT_IX, HAS_PURE_FLAG }, 1301 [UNPACK_EX] = { true, INSTR_FMT_IB, HAS_ARG_FLAG | HAS_ERROR_FLAG | HAS_ESCAPES_FLAG }, 1302 [UNPACK_SEQUENCE] = { true, INSTR_FMT_IBC, HAS_ARG_FLAG | HAS_ERROR_FLAG | HAS_ESCAPES_FLAG }, 1303 [UNPACK_SEQUENCE_LIST] = { true, INSTR_FMT_IBC, HAS_ARG_FLAG | HAS_DEOPT_FLAG | HAS_EXIT_FLAG }, 1304 [UNPACK_SEQUENCE_TUPLE] = { true, INSTR_FMT_IBC, HAS_ARG_FLAG | HAS_DEOPT_FLAG | HAS_EXIT_FLAG }, 1305 [UNPACK_SEQUENCE_TWO_TUPLE] = { true, INSTR_FMT_IBC, HAS_ARG_FLAG | HAS_DEOPT_FLAG | HAS_EXIT_FLAG | HAS_ESCAPES_FLAG }, 1306 [WITH_EXCEPT_START] = { true, INSTR_FMT_IX, HAS_ERROR_FLAG | HAS_ESCAPES_FLAG }, 1307 [YIELD_VALUE] = { true, INSTR_FMT_IB, HAS_ARG_FLAG }, 1308 [ANNOTATIONS_PLACEHOLDER] = { true, -1, HAS_PURE_FLAG }, 1309 [JUMP] = { true, -1, HAS_ARG_FLAG | HAS_JUMP_FLAG | HAS_EVAL_BREAK_FLAG | HAS_ERROR_FLAG | HAS_ESCAPES_FLAG }, 1310 [JUMP_IF_FALSE] = { true, -1, HAS_ARG_FLAG | HAS_JUMP_FLAG | HAS_ERROR_FLAG | HAS_ESCAPES_FLAG }, 1311 [JUMP_IF_TRUE] = { true, -1, HAS_ARG_FLAG | HAS_JUMP_FLAG | HAS_ERROR_FLAG | HAS_ESCAPES_FLAG }, 1312 [JUMP_NO_INTERRUPT] = { true, -1, HAS_ARG_FLAG | HAS_JUMP_FLAG }, 1313 [LOAD_CLOSURE] = { true, -1, HAS_ARG_FLAG | HAS_LOCAL_FLAG | HAS_PURE_FLAG }, 1314 [POP_BLOCK] = { true, -1, HAS_PURE_FLAG }, 1315 [SETUP_CLEANUP] = { true, -1, HAS_PURE_FLAG | HAS_ARG_FLAG }, 1316 [SETUP_FINALLY] = { true, -1, HAS_PURE_FLAG | HAS_ARG_FLAG }, 1317 [SETUP_WITH] = { true, -1, HAS_PURE_FLAG | HAS_ARG_FLAG }, 1318 [STORE_FAST_MAYBE_NULL] = { true, -1, HAS_ARG_FLAG | HAS_LOCAL_FLAG | HAS_ESCAPES_FLAG }, 1319 }; 1320 #endif 1321 1322 #define MAX_UOP_PER_EXPANSION 10 1323 struct opcode_macro_expansion { 1324 int nuops; 1325 struct { int16_t uop; int8_t size; int8_t offset; } uops[MAX_UOP_PER_EXPANSION]; 1326 }; 1327 extern const struct opcode_macro_expansion _PyOpcode_macro_expansion[256]; 1328 1329 #ifdef NEED_OPCODE_METADATA 1330 const struct opcode_macro_expansion 1331 _PyOpcode_macro_expansion[256] = { 1332 [BINARY_OP] = { .nuops = 1, .uops = { { _BINARY_OP, OPARG_SIMPLE, 4 } } }, 1333 [BINARY_OP_ADD_FLOAT] = { .nuops = 3, .uops = { { _GUARD_TOS_FLOAT, OPARG_SIMPLE, 0 }, { _GUARD_NOS_FLOAT, OPARG_SIMPLE, 0 }, { _BINARY_OP_ADD_FLOAT, OPARG_SIMPLE, 5 } } }, 1334 [BINARY_OP_ADD_INT] = { .nuops = 3, .uops = { { _GUARD_TOS_INT, OPARG_SIMPLE, 0 }, { _GUARD_NOS_INT, OPARG_SIMPLE, 0 }, { _BINARY_OP_ADD_INT, OPARG_SIMPLE, 5 } } }, 1335 [BINARY_OP_ADD_UNICODE] = { .nuops = 3, .uops = { { _GUARD_TOS_UNICODE, OPARG_SIMPLE, 0 }, { _GUARD_NOS_UNICODE, OPARG_SIMPLE, 0 }, { _BINARY_OP_ADD_UNICODE, OPARG_SIMPLE, 5 } } }, 1336 [BINARY_OP_EXTEND] = { .nuops = 2, .uops = { { _GUARD_BINARY_OP_EXTEND, 4, 1 }, { _BINARY_OP_EXTEND, 4, 1 } } }, 1337 [BINARY_OP_INPLACE_ADD_UNICODE] = { .nuops = 3, .uops = { { _GUARD_TOS_UNICODE, OPARG_SIMPLE, 0 }, { _GUARD_NOS_UNICODE, OPARG_SIMPLE, 0 }, { _BINARY_OP_INPLACE_ADD_UNICODE, OPARG_SIMPLE, 5 } } }, 1338 [BINARY_OP_MULTIPLY_FLOAT] = { .nuops = 3, .uops = { { _GUARD_TOS_FLOAT, OPARG_SIMPLE, 0 }, { _GUARD_NOS_FLOAT, OPARG_SIMPLE, 0 }, { _BINARY_OP_MULTIPLY_FLOAT, OPARG_SIMPLE, 5 } } }, 1339 [BINARY_OP_MULTIPLY_INT] = { .nuops = 3, .uops = { { _GUARD_TOS_INT, OPARG_SIMPLE, 0 }, { _GUARD_NOS_INT, OPARG_SIMPLE, 0 }, { _BINARY_OP_MULTIPLY_INT, OPARG_SIMPLE, 5 } } }, 1340 [BINARY_OP_SUBSCR_DICT] = { .nuops = 2, .uops = { { _GUARD_NOS_DICT, OPARG_SIMPLE, 0 }, { _BINARY_OP_SUBSCR_DICT, OPARG_SIMPLE, 5 } } }, 1341 [BINARY_OP_SUBSCR_GETITEM] = { .nuops = 4, .uops = { { _CHECK_PEP_523, OPARG_SIMPLE, 5 }, { _BINARY_OP_SUBSCR_CHECK_FUNC, OPARG_SIMPLE, 5 }, { _BINARY_OP_SUBSCR_INIT_CALL, OPARG_SIMPLE, 5 }, { _PUSH_FRAME, OPARG_SIMPLE, 5 } } }, 1342 [BINARY_OP_SUBSCR_LIST_INT] = { .nuops = 3, .uops = { { _GUARD_TOS_INT, OPARG_SIMPLE, 0 }, { _GUARD_NOS_LIST, OPARG_SIMPLE, 0 }, { _BINARY_OP_SUBSCR_LIST_INT, OPARG_SIMPLE, 5 } } }, 1343 [BINARY_OP_SUBSCR_LIST_SLICE] = { .nuops = 3, .uops = { { _GUARD_TOS_SLICE, OPARG_SIMPLE, 0 }, { _GUARD_NOS_LIST, OPARG_SIMPLE, 0 }, { _BINARY_OP_SUBSCR_LIST_SLICE, OPARG_SIMPLE, 5 } } }, 1344 [BINARY_OP_SUBSCR_STR_INT] = { .nuops = 3, .uops = { { _GUARD_TOS_INT, OPARG_SIMPLE, 0 }, { _GUARD_NOS_UNICODE, OPARG_SIMPLE, 0 }, { _BINARY_OP_SUBSCR_STR_INT, OPARG_SIMPLE, 5 } } }, 1345 [BINARY_OP_SUBSCR_TUPLE_INT] = { .nuops = 3, .uops = { { _GUARD_TOS_INT, OPARG_SIMPLE, 0 }, { _GUARD_NOS_TUPLE, OPARG_SIMPLE, 0 }, { _BINARY_OP_SUBSCR_TUPLE_INT, OPARG_SIMPLE, 5 } } }, 1346 [BINARY_OP_SUBTRACT_FLOAT] = { .nuops = 3, .uops = { { _GUARD_TOS_FLOAT, OPARG_SIMPLE, 0 }, { _GUARD_NOS_FLOAT, OPARG_SIMPLE, 0 }, { _BINARY_OP_SUBTRACT_FLOAT, OPARG_SIMPLE, 5 } } }, 1347 [BINARY_OP_SUBTRACT_INT] = { .nuops = 3, .uops = { { _GUARD_TOS_INT, OPARG_SIMPLE, 0 }, { _GUARD_NOS_INT, OPARG_SIMPLE, 0 }, { _BINARY_OP_SUBTRACT_INT, OPARG_SIMPLE, 5 } } }, 1348 [BINARY_SLICE] = { .nuops = 1, .uops = { { _BINARY_SLICE, OPARG_SIMPLE, 0 } } }, 1349 [BUILD_INTERPOLATION] = { .nuops = 1, .uops = { { _BUILD_INTERPOLATION, OPARG_SIMPLE, 0 } } }, 1350 [BUILD_LIST] = { .nuops = 1, .uops = { { _BUILD_LIST, OPARG_SIMPLE, 0 } } }, 1351 [BUILD_MAP] = { .nuops = 1, .uops = { { _BUILD_MAP, OPARG_SIMPLE, 0 } } }, 1352 [BUILD_SET] = { .nuops = 1, .uops = { { _BUILD_SET, OPARG_SIMPLE, 0 } } }, 1353 [BUILD_SLICE] = { .nuops = 1, .uops = { { _BUILD_SLICE, OPARG_SIMPLE, 0 } } }, 1354 [BUILD_STRING] = { .nuops = 1, .uops = { { _BUILD_STRING, OPARG_SIMPLE, 0 } } }, 1355 [BUILD_TEMPLATE] = { .nuops = 1, .uops = { { _BUILD_TEMPLATE, OPARG_SIMPLE, 0 } } }, 1356 [BUILD_TUPLE] = { .nuops = 1, .uops = { { _BUILD_TUPLE, OPARG_SIMPLE, 0 } } }, 1357 [CALL_ALLOC_AND_ENTER_INIT] = { .nuops = 4, .uops = { { _CHECK_PEP_523, OPARG_SIMPLE, 1 }, { _CHECK_AND_ALLOCATE_OBJECT, 2, 1 }, { _CREATE_INIT_FRAME, OPARG_SIMPLE, 3 }, { _PUSH_FRAME, OPARG_SIMPLE, 3 } } }, 1358 [CALL_BOUND_METHOD_EXACT_ARGS] = { .nuops = 10, .uops = { { _CHECK_PEP_523, OPARG_SIMPLE, 1 }, { _CHECK_CALL_BOUND_METHOD_EXACT_ARGS, OPARG_SIMPLE, 1 }, { _INIT_CALL_BOUND_METHOD_EXACT_ARGS, OPARG_SIMPLE, 1 }, { _CHECK_FUNCTION_VERSION, 2, 1 }, { _CHECK_FUNCTION_EXACT_ARGS, OPARG_SIMPLE, 3 }, { _CHECK_STACK_SPACE, OPARG_SIMPLE, 3 }, { _CHECK_RECURSION_REMAINING, OPARG_SIMPLE, 3 }, { _INIT_CALL_PY_EXACT_ARGS, OPARG_SIMPLE, 3 }, { _SAVE_RETURN_OFFSET, OPARG_SAVE_RETURN_OFFSET, 3 }, { _PUSH_FRAME, OPARG_SIMPLE, 3 } } }, 1359 [CALL_BOUND_METHOD_GENERAL] = { .nuops = 7, .uops = { { _CHECK_PEP_523, OPARG_SIMPLE, 1 }, { _CHECK_METHOD_VERSION, 2, 1 }, { _EXPAND_METHOD, OPARG_SIMPLE, 3 }, { _CHECK_RECURSION_REMAINING, OPARG_SIMPLE, 3 }, { _PY_FRAME_GENERAL, OPARG_SIMPLE, 3 }, { _SAVE_RETURN_OFFSET, OPARG_SAVE_RETURN_OFFSET, 3 }, { _PUSH_FRAME, OPARG_SIMPLE, 3 } } }, 1360 [CALL_BUILTIN_CLASS] = { .nuops = 2, .uops = { { _CALL_BUILTIN_CLASS, OPARG_SIMPLE, 3 }, { _CHECK_PERIODIC, OPARG_SIMPLE, 3 } } }, 1361 [CALL_BUILTIN_FAST] = { .nuops = 2, .uops = { { _CALL_BUILTIN_FAST, OPARG_SIMPLE, 3 }, { _CHECK_PERIODIC, OPARG_SIMPLE, 3 } } }, 1362 [CALL_BUILTIN_FAST_WITH_KEYWORDS] = { .nuops = 2, .uops = { { _CALL_BUILTIN_FAST_WITH_KEYWORDS, OPARG_SIMPLE, 3 }, { _CHECK_PERIODIC, OPARG_SIMPLE, 3 } } }, 1363 [CALL_BUILTIN_O] = { .nuops = 2, .uops = { { _CALL_BUILTIN_O, OPARG_SIMPLE, 3 }, { _CHECK_PERIODIC, OPARG_SIMPLE, 3 } } }, 1364 [CALL_INTRINSIC_1] = { .nuops = 1, .uops = { { _CALL_INTRINSIC_1, OPARG_SIMPLE, 0 } } }, 1365 [CALL_INTRINSIC_2] = { .nuops = 1, .uops = { { _CALL_INTRINSIC_2, OPARG_SIMPLE, 0 } } }, 1366 [CALL_ISINSTANCE] = { .nuops = 1, .uops = { { _CALL_ISINSTANCE, OPARG_SIMPLE, 3 } } }, 1367 [CALL_KW_BOUND_METHOD] = { .nuops = 6, .uops = { { _CHECK_PEP_523, OPARG_SIMPLE, 1 }, { _CHECK_METHOD_VERSION_KW, 2, 1 }, { _EXPAND_METHOD_KW, OPARG_SIMPLE, 3 }, { _PY_FRAME_KW, OPARG_SIMPLE, 3 }, { _SAVE_RETURN_OFFSET, OPARG_SAVE_RETURN_OFFSET, 3 }, { _PUSH_FRAME, OPARG_SIMPLE, 3 } } }, 1368 [CALL_KW_NON_PY] = { .nuops = 3, .uops = { { _CHECK_IS_NOT_PY_CALLABLE_KW, OPARG_SIMPLE, 3 }, { _CALL_KW_NON_PY, OPARG_SIMPLE, 3 }, { _CHECK_PERIODIC, OPARG_SIMPLE, 3 } } }, 1369 [CALL_KW_PY] = { .nuops = 6, .uops = { { _CHECK_PEP_523, OPARG_SIMPLE, 1 }, { _CHECK_FUNCTION_VERSION_KW, 2, 1 }, { _CHECK_RECURSION_REMAINING, OPARG_SIMPLE, 3 }, { _PY_FRAME_KW, OPARG_SIMPLE, 3 }, { _SAVE_RETURN_OFFSET, OPARG_SAVE_RETURN_OFFSET, 3 }, { _PUSH_FRAME, OPARG_SIMPLE, 3 } } }, 1370 [CALL_LEN] = { .nuops = 3, .uops = { { _GUARD_NOS_NULL, OPARG_SIMPLE, 3 }, { _GUARD_CALLABLE_LEN, OPARG_SIMPLE, 3 }, { _CALL_LEN, OPARG_SIMPLE, 3 } } }, 1371 [CALL_LIST_APPEND] = { .nuops = 1, .uops = { { _CALL_LIST_APPEND, OPARG_SIMPLE, 3 } } }, 1372 [CALL_METHOD_DESCRIPTOR_FAST] = { .nuops = 2, .uops = { { _CALL_METHOD_DESCRIPTOR_FAST, OPARG_SIMPLE, 3 }, { _CHECK_PERIODIC, OPARG_SIMPLE, 3 } } }, 1373 [CALL_METHOD_DESCRIPTOR_FAST_WITH_KEYWORDS] = { .nuops = 2, .uops = { { _CALL_METHOD_DESCRIPTOR_FAST_WITH_KEYWORDS, OPARG_SIMPLE, 3 }, { _CHECK_PERIODIC, OPARG_SIMPLE, 3 } } }, 1374 [CALL_METHOD_DESCRIPTOR_NOARGS] = { .nuops = 2, .uops = { { _CALL_METHOD_DESCRIPTOR_NOARGS, OPARG_SIMPLE, 3 }, { _CHECK_PERIODIC, OPARG_SIMPLE, 3 } } }, 1375 [CALL_METHOD_DESCRIPTOR_O] = { .nuops = 2, .uops = { { _CALL_METHOD_DESCRIPTOR_O, OPARG_SIMPLE, 3 }, { _CHECK_PERIODIC, OPARG_SIMPLE, 3 } } }, 1376 [CALL_NON_PY_GENERAL] = { .nuops = 3, .uops = { { _CHECK_IS_NOT_PY_CALLABLE, OPARG_SIMPLE, 3 }, { _CALL_NON_PY_GENERAL, OPARG_SIMPLE, 3 }, { _CHECK_PERIODIC, OPARG_SIMPLE, 3 } } }, 1377 [CALL_PY_EXACT_ARGS] = { .nuops = 8, .uops = { { _CHECK_PEP_523, OPARG_SIMPLE, 1 }, { _CHECK_FUNCTION_VERSION, 2, 1 }, { _CHECK_FUNCTION_EXACT_ARGS, OPARG_SIMPLE, 3 }, { _CHECK_STACK_SPACE, OPARG_SIMPLE, 3 }, { _CHECK_RECURSION_REMAINING, OPARG_SIMPLE, 3 }, { _INIT_CALL_PY_EXACT_ARGS, OPARG_SIMPLE, 3 }, { _SAVE_RETURN_OFFSET, OPARG_SAVE_RETURN_OFFSET, 3 }, { _PUSH_FRAME, OPARG_SIMPLE, 3 } } }, 1378 [CALL_PY_GENERAL] = { .nuops = 6, .uops = { { _CHECK_PEP_523, OPARG_SIMPLE, 1 }, { _CHECK_FUNCTION_VERSION, 2, 1 }, { _CHECK_RECURSION_REMAINING, OPARG_SIMPLE, 3 }, { _PY_FRAME_GENERAL, OPARG_SIMPLE, 3 }, { _SAVE_RETURN_OFFSET, OPARG_SAVE_RETURN_OFFSET, 3 }, { _PUSH_FRAME, OPARG_SIMPLE, 3 } } }, 1379 [CALL_STR_1] = { .nuops = 4, .uops = { { _GUARD_NOS_NULL, OPARG_SIMPLE, 3 }, { _GUARD_CALLABLE_STR_1, OPARG_SIMPLE, 3 }, { _CALL_STR_1, OPARG_SIMPLE, 3 }, { _CHECK_PERIODIC, OPARG_SIMPLE, 3 } } }, 1380 [CALL_TUPLE_1] = { .nuops = 4, .uops = { { _GUARD_NOS_NULL, OPARG_SIMPLE, 3 }, { _GUARD_CALLABLE_TUPLE_1, OPARG_SIMPLE, 3 }, { _CALL_TUPLE_1, OPARG_SIMPLE, 3 }, { _CHECK_PERIODIC, OPARG_SIMPLE, 3 } } }, 1381 [CALL_TYPE_1] = { .nuops = 3, .uops = { { _GUARD_NOS_NULL, OPARG_SIMPLE, 3 }, { _GUARD_CALLABLE_TYPE_1, OPARG_SIMPLE, 3 }, { _CALL_TYPE_1, OPARG_SIMPLE, 3 } } }, 1382 [CHECK_EG_MATCH] = { .nuops = 1, .uops = { { _CHECK_EG_MATCH, OPARG_SIMPLE, 0 } } }, 1383 [CHECK_EXC_MATCH] = { .nuops = 1, .uops = { { _CHECK_EXC_MATCH, OPARG_SIMPLE, 0 } } }, 1384 [COMPARE_OP] = { .nuops = 1, .uops = { { _COMPARE_OP, OPARG_SIMPLE, 0 } } }, 1385 [COMPARE_OP_FLOAT] = { .nuops = 3, .uops = { { _GUARD_TOS_FLOAT, OPARG_SIMPLE, 0 }, { _GUARD_NOS_FLOAT, OPARG_SIMPLE, 0 }, { _COMPARE_OP_FLOAT, OPARG_SIMPLE, 1 } } }, 1386 [COMPARE_OP_INT] = { .nuops = 3, .uops = { { _GUARD_TOS_INT, OPARG_SIMPLE, 0 }, { _GUARD_NOS_INT, OPARG_SIMPLE, 0 }, { _COMPARE_OP_INT, OPARG_SIMPLE, 1 } } }, 1387 [COMPARE_OP_STR] = { .nuops = 3, .uops = { { _GUARD_TOS_UNICODE, OPARG_SIMPLE, 0 }, { _GUARD_NOS_UNICODE, OPARG_SIMPLE, 0 }, { _COMPARE_OP_STR, OPARG_SIMPLE, 1 } } }, 1388 [CONTAINS_OP] = { .nuops = 1, .uops = { { _CONTAINS_OP, OPARG_SIMPLE, 0 } } }, 1389 [CONTAINS_OP_DICT] = { .nuops = 2, .uops = { { _GUARD_TOS_DICT, OPARG_SIMPLE, 0 }, { _CONTAINS_OP_DICT, OPARG_SIMPLE, 1 } } }, 1390 [CONTAINS_OP_SET] = { .nuops = 2, .uops = { { _GUARD_TOS_ANY_SET, OPARG_SIMPLE, 0 }, { _CONTAINS_OP_SET, OPARG_SIMPLE, 1 } } }, 1391 [CONVERT_VALUE] = { .nuops = 1, .uops = { { _CONVERT_VALUE, OPARG_SIMPLE, 0 } } }, 1392 [COPY] = { .nuops = 1, .uops = { { _COPY, OPARG_SIMPLE, 0 } } }, 1393 [COPY_FREE_VARS] = { .nuops = 1, .uops = { { _COPY_FREE_VARS, OPARG_SIMPLE, 0 } } }, 1394 [DELETE_ATTR] = { .nuops = 1, .uops = { { _DELETE_ATTR, OPARG_SIMPLE, 0 } } }, 1395 [DELETE_DEREF] = { .nuops = 1, .uops = { { _DELETE_DEREF, OPARG_SIMPLE, 0 } } }, 1396 [DELETE_FAST] = { .nuops = 1, .uops = { { _DELETE_FAST, OPARG_SIMPLE, 0 } } }, 1397 [DELETE_GLOBAL] = { .nuops = 1, .uops = { { _DELETE_GLOBAL, OPARG_SIMPLE, 0 } } }, 1398 [DELETE_NAME] = { .nuops = 1, .uops = { { _DELETE_NAME, OPARG_SIMPLE, 0 } } }, 1399 [DELETE_SUBSCR] = { .nuops = 1, .uops = { { _DELETE_SUBSCR, OPARG_SIMPLE, 0 } } }, 1400 [DICT_MERGE] = { .nuops = 1, .uops = { { _DICT_MERGE, OPARG_SIMPLE, 0 } } }, 1401 [DICT_UPDATE] = { .nuops = 1, .uops = { { _DICT_UPDATE, OPARG_SIMPLE, 0 } } }, 1402 [END_FOR] = { .nuops = 1, .uops = { { _END_FOR, OPARG_SIMPLE, 0 } } }, 1403 [END_SEND] = { .nuops = 1, .uops = { { _END_SEND, OPARG_SIMPLE, 0 } } }, 1404 [EXIT_INIT_CHECK] = { .nuops = 1, .uops = { { _EXIT_INIT_CHECK, OPARG_SIMPLE, 0 } } }, 1405 [FORMAT_SIMPLE] = { .nuops = 1, .uops = { { _FORMAT_SIMPLE, OPARG_SIMPLE, 0 } } }, 1406 [FORMAT_WITH_SPEC] = { .nuops = 1, .uops = { { _FORMAT_WITH_SPEC, OPARG_SIMPLE, 0 } } }, 1407 [FOR_ITER] = { .nuops = 1, .uops = { { _FOR_ITER, OPARG_REPLACED, 0 } } }, 1408 [FOR_ITER_GEN] = { .nuops = 3, .uops = { { _CHECK_PEP_523, OPARG_SIMPLE, 1 }, { _FOR_ITER_GEN_FRAME, OPARG_SIMPLE, 1 }, { _PUSH_FRAME, OPARG_SIMPLE, 1 } } }, 1409 [FOR_ITER_LIST] = { .nuops = 3, .uops = { { _ITER_CHECK_LIST, OPARG_SIMPLE, 1 }, { _ITER_JUMP_LIST, OPARG_REPLACED, 1 }, { _ITER_NEXT_LIST, OPARG_REPLACED, 1 } } }, 1410 [FOR_ITER_RANGE] = { .nuops = 3, .uops = { { _ITER_CHECK_RANGE, OPARG_SIMPLE, 1 }, { _ITER_JUMP_RANGE, OPARG_REPLACED, 1 }, { _ITER_NEXT_RANGE, OPARG_SIMPLE, 1 } } }, 1411 [FOR_ITER_TUPLE] = { .nuops = 3, .uops = { { _ITER_CHECK_TUPLE, OPARG_SIMPLE, 1 }, { _ITER_JUMP_TUPLE, OPARG_REPLACED, 1 }, { _ITER_NEXT_TUPLE, OPARG_SIMPLE, 1 } } }, 1412 [GET_AITER] = { .nuops = 1, .uops = { { _GET_AITER, OPARG_SIMPLE, 0 } } }, 1413 [GET_ANEXT] = { .nuops = 1, .uops = { { _GET_ANEXT, OPARG_SIMPLE, 0 } } }, 1414 [GET_AWAITABLE] = { .nuops = 1, .uops = { { _GET_AWAITABLE, OPARG_SIMPLE, 0 } } }, 1415 [GET_ITER] = { .nuops = 1, .uops = { { _GET_ITER, OPARG_SIMPLE, 0 } } }, 1416 [GET_LEN] = { .nuops = 1, .uops = { { _GET_LEN, OPARG_SIMPLE, 0 } } }, 1417 [GET_YIELD_FROM_ITER] = { .nuops = 1, .uops = { { _GET_YIELD_FROM_ITER, OPARG_SIMPLE, 0 } } }, 1418 [IMPORT_FROM] = { .nuops = 1, .uops = { { _IMPORT_FROM, OPARG_SIMPLE, 0 } } }, 1419 [IMPORT_NAME] = { .nuops = 1, .uops = { { _IMPORT_NAME, OPARG_SIMPLE, 0 } } }, 1420 [IS_OP] = { .nuops = 1, .uops = { { _IS_OP, OPARG_SIMPLE, 0 } } }, 1421 [LIST_APPEND] = { .nuops = 1, .uops = { { _LIST_APPEND, OPARG_SIMPLE, 0 } } }, 1422 [LIST_EXTEND] = { .nuops = 1, .uops = { { _LIST_EXTEND, OPARG_SIMPLE, 0 } } }, 1423 [LOAD_ATTR] = { .nuops = 1, .uops = { { _LOAD_ATTR, OPARG_SIMPLE, 8 } } }, 1424 [LOAD_ATTR_CLASS] = { .nuops = 3, .uops = { { _CHECK_ATTR_CLASS, 2, 1 }, { _LOAD_ATTR_CLASS, 4, 5 }, { _PUSH_NULL_CONDITIONAL, OPARG_SIMPLE, 9 } } }, 1425 [LOAD_ATTR_CLASS_WITH_METACLASS_CHECK] = { .nuops = 4, .uops = { { _CHECK_ATTR_CLASS, 2, 1 }, { _GUARD_TYPE_VERSION, 2, 3 }, { _LOAD_ATTR_CLASS, 4, 5 }, { _PUSH_NULL_CONDITIONAL, OPARG_SIMPLE, 9 } } }, 1426 [LOAD_ATTR_INSTANCE_VALUE] = { .nuops = 4, .uops = { { _GUARD_TYPE_VERSION, 2, 1 }, { _CHECK_MANAGED_OBJECT_HAS_VALUES, OPARG_SIMPLE, 3 }, { _LOAD_ATTR_INSTANCE_VALUE, 1, 3 }, { _PUSH_NULL_CONDITIONAL, OPARG_SIMPLE, 9 } } }, 1427 [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 } } }, 1428 [LOAD_ATTR_METHOD_NO_DICT] = { .nuops = 2, .uops = { { _GUARD_TYPE_VERSION, 2, 1 }, { _LOAD_ATTR_METHOD_NO_DICT, 4, 5 } } }, 1429 [LOAD_ATTR_METHOD_WITH_VALUES] = { .nuops = 4, .uops = { { _GUARD_TYPE_VERSION, 2, 1 }, { _GUARD_DORV_VALUES_INST_ATTR_FROM_DICT, OPARG_SIMPLE, 3 }, { _GUARD_KEYS_VERSION, 2, 3 }, { _LOAD_ATTR_METHOD_WITH_VALUES, 4, 5 } } }, 1430 [LOAD_ATTR_MODULE] = { .nuops = 3, .uops = { { _LOAD_ATTR_MODULE, 2, 1 }, { _LOAD_ATTR_MODULE, OPERAND1_1, 3 }, { _PUSH_NULL_CONDITIONAL, OPARG_SIMPLE, 9 } } }, 1431 [LOAD_ATTR_NONDESCRIPTOR_NO_DICT] = { .nuops = 2, .uops = { { _GUARD_TYPE_VERSION, 2, 1 }, { _LOAD_ATTR_NONDESCRIPTOR_NO_DICT, 4, 5 } } }, 1432 [LOAD_ATTR_NONDESCRIPTOR_WITH_VALUES] = { .nuops = 4, .uops = { { _GUARD_TYPE_VERSION, 2, 1 }, { _GUARD_DORV_VALUES_INST_ATTR_FROM_DICT, OPARG_SIMPLE, 3 }, { _GUARD_KEYS_VERSION, 2, 3 }, { _LOAD_ATTR_NONDESCRIPTOR_WITH_VALUES, 4, 5 } } }, 1433 [LOAD_ATTR_PROPERTY] = { .nuops = 5, .uops = { { _CHECK_PEP_523, OPARG_SIMPLE, 1 }, { _GUARD_TYPE_VERSION, 2, 1 }, { _LOAD_ATTR_PROPERTY_FRAME, 4, 5 }, { _SAVE_RETURN_OFFSET, OPARG_SAVE_RETURN_OFFSET, 9 }, { _PUSH_FRAME, OPARG_SIMPLE, 9 } } }, 1434 [LOAD_ATTR_SLOT] = { .nuops = 3, .uops = { { _GUARD_TYPE_VERSION, 2, 1 }, { _LOAD_ATTR_SLOT, 1, 3 }, { _PUSH_NULL_CONDITIONAL, OPARG_SIMPLE, 9 } } }, 1435 [LOAD_ATTR_WITH_HINT] = { .nuops = 3, .uops = { { _GUARD_TYPE_VERSION, 2, 1 }, { _LOAD_ATTR_WITH_HINT, 1, 3 }, { _PUSH_NULL_CONDITIONAL, OPARG_SIMPLE, 9 } } }, 1436 [LOAD_BUILD_CLASS] = { .nuops = 1, .uops = { { _LOAD_BUILD_CLASS, OPARG_SIMPLE, 0 } } }, 1437 [LOAD_COMMON_CONSTANT] = { .nuops = 1, .uops = { { _LOAD_COMMON_CONSTANT, OPARG_SIMPLE, 0 } } }, 1438 [LOAD_CONST_IMMORTAL] = { .nuops = 1, .uops = { { _LOAD_CONST_IMMORTAL, OPARG_SIMPLE, 0 } } }, 1439 [LOAD_CONST_MORTAL] = { .nuops = 1, .uops = { { _LOAD_CONST_MORTAL, OPARG_SIMPLE, 0 } } }, 1440 [LOAD_DEREF] = { .nuops = 1, .uops = { { _LOAD_DEREF, OPARG_SIMPLE, 0 } } }, 1441 [LOAD_FAST] = { .nuops = 1, .uops = { { _LOAD_FAST, OPARG_SIMPLE, 0 } } }, 1442 [LOAD_FAST_AND_CLEAR] = { .nuops = 1, .uops = { { _LOAD_FAST_AND_CLEAR, OPARG_SIMPLE, 0 } } }, 1443 [LOAD_FAST_BORROW] = { .nuops = 1, .uops = { { _LOAD_FAST_BORROW, OPARG_SIMPLE, 0 } } }, 1444 [LOAD_FAST_BORROW_LOAD_FAST_BORROW] = { .nuops = 2, .uops = { { _LOAD_FAST_BORROW, OPARG_TOP, 0 }, { _LOAD_FAST_BORROW, OPARG_BOTTOM, 0 } } }, 1445 [LOAD_FAST_CHECK] = { .nuops = 1, .uops = { { _LOAD_FAST_CHECK, OPARG_SIMPLE, 0 } } }, 1446 [LOAD_FAST_LOAD_FAST] = { .nuops = 2, .uops = { { _LOAD_FAST, OPARG_TOP, 0 }, { _LOAD_FAST, OPARG_BOTTOM, 0 } } }, 1447 [LOAD_FROM_DICT_OR_DEREF] = { .nuops = 1, .uops = { { _LOAD_FROM_DICT_OR_DEREF, OPARG_SIMPLE, 0 } } }, 1448 [LOAD_GLOBAL] = { .nuops = 2, .uops = { { _LOAD_GLOBAL, OPARG_SIMPLE, 3 }, { _PUSH_NULL_CONDITIONAL, OPARG_SIMPLE, 3 } } }, 1449 [LOAD_GLOBAL_BUILTIN] = { .nuops = 4, .uops = { { _GUARD_GLOBALS_VERSION, 1, 1 }, { _LOAD_GLOBAL_BUILTINS, 1, 2 }, { _LOAD_GLOBAL_BUILTINS, OPERAND1_1, 3 }, { _PUSH_NULL_CONDITIONAL, OPARG_SIMPLE, 4 } } }, 1450 [LOAD_GLOBAL_MODULE] = { .nuops = 4, .uops = { { _NOP, OPARG_SIMPLE, 1 }, { _LOAD_GLOBAL_MODULE, 1, 1 }, { _LOAD_GLOBAL_MODULE, OPERAND1_1, 3 }, { _PUSH_NULL_CONDITIONAL, OPARG_SIMPLE, 4 } } }, 1451 [LOAD_LOCALS] = { .nuops = 1, .uops = { { _LOAD_LOCALS, OPARG_SIMPLE, 0 } } }, 1452 [LOAD_NAME] = { .nuops = 1, .uops = { { _LOAD_NAME, OPARG_SIMPLE, 0 } } }, 1453 [LOAD_SMALL_INT] = { .nuops = 1, .uops = { { _LOAD_SMALL_INT, OPARG_SIMPLE, 0 } } }, 1454 [LOAD_SPECIAL] = { .nuops = 2, .uops = { { _INSERT_NULL, OPARG_SIMPLE, 0 }, { _LOAD_SPECIAL, OPARG_SIMPLE, 0 } } }, 1455 [LOAD_SUPER_ATTR_ATTR] = { .nuops = 1, .uops = { { _LOAD_SUPER_ATTR_ATTR, OPARG_SIMPLE, 1 } } }, 1456 [LOAD_SUPER_ATTR_METHOD] = { .nuops = 1, .uops = { { _LOAD_SUPER_ATTR_METHOD, OPARG_SIMPLE, 1 } } }, 1457 [MAKE_CELL] = { .nuops = 1, .uops = { { _MAKE_CELL, OPARG_SIMPLE, 0 } } }, 1458 [MAKE_FUNCTION] = { .nuops = 1, .uops = { { _MAKE_FUNCTION, OPARG_SIMPLE, 0 } } }, 1459 [MAP_ADD] = { .nuops = 1, .uops = { { _MAP_ADD, OPARG_SIMPLE, 0 } } }, 1460 [MATCH_CLASS] = { .nuops = 1, .uops = { { _MATCH_CLASS, OPARG_SIMPLE, 0 } } }, 1461 [MATCH_KEYS] = { .nuops = 1, .uops = { { _MATCH_KEYS, OPARG_SIMPLE, 0 } } }, 1462 [MATCH_MAPPING] = { .nuops = 1, .uops = { { _MATCH_MAPPING, OPARG_SIMPLE, 0 } } }, 1463 [MATCH_SEQUENCE] = { .nuops = 1, .uops = { { _MATCH_SEQUENCE, OPARG_SIMPLE, 0 } } }, 1464 [NOP] = { .nuops = 1, .uops = { { _NOP, OPARG_SIMPLE, 0 } } }, 1465 [NOT_TAKEN] = { .nuops = 1, .uops = { { _NOP, OPARG_SIMPLE, 0 } } }, 1466 [POP_EXCEPT] = { .nuops = 1, .uops = { { _POP_EXCEPT, OPARG_SIMPLE, 0 } } }, 1467 [POP_ITER] = { .nuops = 1, .uops = { { _POP_TOP, OPARG_SIMPLE, 0 } } }, 1468 [POP_JUMP_IF_FALSE] = { .nuops = 1, .uops = { { _POP_JUMP_IF_FALSE, OPARG_REPLACED, 1 } } }, 1469 [POP_JUMP_IF_NONE] = { .nuops = 2, .uops = { { _IS_NONE, OPARG_SIMPLE, 1 }, { _POP_JUMP_IF_TRUE, OPARG_REPLACED, 1 } } }, 1470 [POP_JUMP_IF_NOT_NONE] = { .nuops = 2, .uops = { { _IS_NONE, OPARG_SIMPLE, 1 }, { _POP_JUMP_IF_FALSE, OPARG_REPLACED, 1 } } }, 1471 [POP_JUMP_IF_TRUE] = { .nuops = 1, .uops = { { _POP_JUMP_IF_TRUE, OPARG_REPLACED, 1 } } }, 1472 [POP_TOP] = { .nuops = 1, .uops = { { _POP_TOP, OPARG_SIMPLE, 0 } } }, 1473 [PUSH_EXC_INFO] = { .nuops = 1, .uops = { { _PUSH_EXC_INFO, OPARG_SIMPLE, 0 } } }, 1474 [PUSH_NULL] = { .nuops = 1, .uops = { { _PUSH_NULL, OPARG_SIMPLE, 0 } } }, 1475 [RESUME_CHECK] = { .nuops = 1, .uops = { { _RESUME_CHECK, OPARG_SIMPLE, 0 } } }, 1476 [RETURN_GENERATOR] = { .nuops = 1, .uops = { { _RETURN_GENERATOR, OPARG_SIMPLE, 0 } } }, 1477 [RETURN_VALUE] = { .nuops = 1, .uops = { { _RETURN_VALUE, OPARG_SIMPLE, 0 } } }, 1478 [SEND_GEN] = { .nuops = 3, .uops = { { _CHECK_PEP_523, OPARG_SIMPLE, 1 }, { _SEND_GEN_FRAME, OPARG_SIMPLE, 1 }, { _PUSH_FRAME, OPARG_SIMPLE, 1 } } }, 1479 [SETUP_ANNOTATIONS] = { .nuops = 1, .uops = { { _SETUP_ANNOTATIONS, OPARG_SIMPLE, 0 } } }, 1480 [SET_ADD] = { .nuops = 1, .uops = { { _SET_ADD, OPARG_SIMPLE, 0 } } }, 1481 [SET_FUNCTION_ATTRIBUTE] = { .nuops = 1, .uops = { { _SET_FUNCTION_ATTRIBUTE, OPARG_SIMPLE, 0 } } }, 1482 [SET_UPDATE] = { .nuops = 1, .uops = { { _SET_UPDATE, OPARG_SIMPLE, 0 } } }, 1483 [STORE_ATTR] = { .nuops = 1, .uops = { { _STORE_ATTR, OPARG_SIMPLE, 3 } } }, 1484 [STORE_ATTR_INSTANCE_VALUE] = { .nuops = 3, .uops = { { _GUARD_TYPE_VERSION_AND_LOCK, 2, 1 }, { _GUARD_DORV_NO_DICT, OPARG_SIMPLE, 3 }, { _STORE_ATTR_INSTANCE_VALUE, 1, 3 } } }, 1485 [STORE_ATTR_SLOT] = { .nuops = 2, .uops = { { _GUARD_TYPE_VERSION, 2, 1 }, { _STORE_ATTR_SLOT, 1, 3 } } }, 1486 [STORE_ATTR_WITH_HINT] = { .nuops = 2, .uops = { { _GUARD_TYPE_VERSION, 2, 1 }, { _STORE_ATTR_WITH_HINT, 1, 3 } } }, 1487 [STORE_DEREF] = { .nuops = 1, .uops = { { _STORE_DEREF, OPARG_SIMPLE, 0 } } }, 1488 [STORE_FAST] = { .nuops = 1, .uops = { { _STORE_FAST, OPARG_SIMPLE, 0 } } }, 1489 [STORE_FAST_LOAD_FAST] = { .nuops = 2, .uops = { { _STORE_FAST, OPARG_TOP, 0 }, { _LOAD_FAST, OPARG_BOTTOM, 0 } } }, 1490 [STORE_FAST_STORE_FAST] = { .nuops = 2, .uops = { { _STORE_FAST, OPARG_TOP, 0 }, { _STORE_FAST, OPARG_BOTTOM, 0 } } }, 1491 [STORE_GLOBAL] = { .nuops = 1, .uops = { { _STORE_GLOBAL, OPARG_SIMPLE, 0 } } }, 1492 [STORE_NAME] = { .nuops = 1, .uops = { { _STORE_NAME, OPARG_SIMPLE, 0 } } }, 1493 [STORE_SLICE] = { .nuops = 1, .uops = { { _STORE_SLICE, OPARG_SIMPLE, 0 } } }, 1494 [STORE_SUBSCR] = { .nuops = 1, .uops = { { _STORE_SUBSCR, OPARG_SIMPLE, 0 } } }, 1495 [STORE_SUBSCR_DICT] = { .nuops = 2, .uops = { { _GUARD_NOS_DICT, OPARG_SIMPLE, 0 }, { _STORE_SUBSCR_DICT, OPARG_SIMPLE, 1 } } }, 1496 [STORE_SUBSCR_LIST_INT] = { .nuops = 3, .uops = { { _GUARD_TOS_INT, OPARG_SIMPLE, 0 }, { _GUARD_NOS_LIST, OPARG_SIMPLE, 0 }, { _STORE_SUBSCR_LIST_INT, OPARG_SIMPLE, 1 } } }, 1497 [SWAP] = { .nuops = 1, .uops = { { _SWAP, OPARG_SIMPLE, 0 } } }, 1498 [TO_BOOL] = { .nuops = 1, .uops = { { _TO_BOOL, OPARG_SIMPLE, 2 } } }, 1499 [TO_BOOL_ALWAYS_TRUE] = { .nuops = 2, .uops = { { _GUARD_TYPE_VERSION, 2, 1 }, { _REPLACE_WITH_TRUE, OPARG_SIMPLE, 3 } } }, 1500 [TO_BOOL_BOOL] = { .nuops = 1, .uops = { { _TO_BOOL_BOOL, OPARG_SIMPLE, 3 } } }, 1501 [TO_BOOL_INT] = { .nuops = 1, .uops = { { _TO_BOOL_INT, OPARG_SIMPLE, 3 } } }, 1502 [TO_BOOL_LIST] = { .nuops = 2, .uops = { { _GUARD_TOS_LIST, OPARG_SIMPLE, 0 }, { _TO_BOOL_LIST, OPARG_SIMPLE, 3 } } }, 1503 [TO_BOOL_NONE] = { .nuops = 1, .uops = { { _TO_BOOL_NONE, OPARG_SIMPLE, 3 } } }, 1504 [TO_BOOL_STR] = { .nuops = 2, .uops = { { _GUARD_TOS_UNICODE, OPARG_SIMPLE, 0 }, { _TO_BOOL_STR, OPARG_SIMPLE, 3 } } }, 1505 [UNARY_INVERT] = { .nuops = 1, .uops = { { _UNARY_INVERT, OPARG_SIMPLE, 0 } } }, 1506 [UNARY_NEGATIVE] = { .nuops = 1, .uops = { { _UNARY_NEGATIVE, OPARG_SIMPLE, 0 } } }, 1507 [UNARY_NOT] = { .nuops = 1, .uops = { { _UNARY_NOT, OPARG_SIMPLE, 0 } } }, 1508 [UNPACK_EX] = { .nuops = 1, .uops = { { _UNPACK_EX, OPARG_SIMPLE, 0 } } }, 1509 [UNPACK_SEQUENCE] = { .nuops = 1, .uops = { { _UNPACK_SEQUENCE, OPARG_SIMPLE, 0 } } }, 1510 [UNPACK_SEQUENCE_LIST] = { .nuops = 2, .uops = { { _GUARD_TOS_LIST, OPARG_SIMPLE, 0 }, { _UNPACK_SEQUENCE_LIST, OPARG_SIMPLE, 1 } } }, 1511 [UNPACK_SEQUENCE_TUPLE] = { .nuops = 2, .uops = { { _GUARD_TOS_TUPLE, OPARG_SIMPLE, 0 }, { _UNPACK_SEQUENCE_TUPLE, OPARG_SIMPLE, 1 } } }, 1512 [UNPACK_SEQUENCE_TWO_TUPLE] = { .nuops = 2, .uops = { { _GUARD_TOS_TUPLE, OPARG_SIMPLE, 0 }, { _UNPACK_SEQUENCE_TWO_TUPLE, OPARG_SIMPLE, 1 } } }, 1513 [WITH_EXCEPT_START] = { .nuops = 1, .uops = { { _WITH_EXCEPT_START, OPARG_SIMPLE, 0 } } }, 1514 [YIELD_VALUE] = { .nuops = 1, .uops = { { _YIELD_VALUE, OPARG_SIMPLE, 0 } } }, 1515 }; 1516 #endif // NEED_OPCODE_METADATA 1517 1518 extern const char *_PyOpcode_OpName[267]; 1519 #ifdef NEED_OPCODE_METADATA 1520 const char *_PyOpcode_OpName[267] = { 1521 [ANNOTATIONS_PLACEHOLDER] = "ANNOTATIONS_PLACEHOLDER", 1522 [BINARY_OP] = "BINARY_OP", 1523 [BINARY_OP_ADD_FLOAT] = "BINARY_OP_ADD_FLOAT", 1524 [BINARY_OP_ADD_INT] = "BINARY_OP_ADD_INT", 1525 [BINARY_OP_ADD_UNICODE] = "BINARY_OP_ADD_UNICODE", 1526 [BINARY_OP_EXTEND] = "BINARY_OP_EXTEND", 1527 [BINARY_OP_INPLACE_ADD_UNICODE] = "BINARY_OP_INPLACE_ADD_UNICODE", 1528 [BINARY_OP_MULTIPLY_FLOAT] = "BINARY_OP_MULTIPLY_FLOAT", 1529 [BINARY_OP_MULTIPLY_INT] = "BINARY_OP_MULTIPLY_INT", 1530 [BINARY_OP_SUBSCR_DICT] = "BINARY_OP_SUBSCR_DICT", 1531 [BINARY_OP_SUBSCR_GETITEM] = "BINARY_OP_SUBSCR_GETITEM", 1532 [BINARY_OP_SUBSCR_LIST_INT] = "BINARY_OP_SUBSCR_LIST_INT", 1533 [BINARY_OP_SUBSCR_LIST_SLICE] = "BINARY_OP_SUBSCR_LIST_SLICE", 1534 [BINARY_OP_SUBSCR_STR_INT] = "BINARY_OP_SUBSCR_STR_INT", 1535 [BINARY_OP_SUBSCR_TUPLE_INT] = "BINARY_OP_SUBSCR_TUPLE_INT", 1536 [BINARY_OP_SUBTRACT_FLOAT] = "BINARY_OP_SUBTRACT_FLOAT", 1537 [BINARY_OP_SUBTRACT_INT] = "BINARY_OP_SUBTRACT_INT", 1538 [BINARY_SLICE] = "BINARY_SLICE", 1539 [BUILD_INTERPOLATION] = "BUILD_INTERPOLATION", 1540 [BUILD_LIST] = "BUILD_LIST", 1541 [BUILD_MAP] = "BUILD_MAP", 1542 [BUILD_SET] = "BUILD_SET", 1543 [BUILD_SLICE] = "BUILD_SLICE", 1544 [BUILD_STRING] = "BUILD_STRING", 1545 [BUILD_TEMPLATE] = "BUILD_TEMPLATE", 1546 [BUILD_TUPLE] = "BUILD_TUPLE", 1547 [CACHE] = "CACHE", 1548 [CALL] = "CALL", 1549 [CALL_ALLOC_AND_ENTER_INIT] = "CALL_ALLOC_AND_ENTER_INIT", 1550 [CALL_BOUND_METHOD_EXACT_ARGS] = "CALL_BOUND_METHOD_EXACT_ARGS", 1551 [CALL_BOUND_METHOD_GENERAL] = "CALL_BOUND_METHOD_GENERAL", 1552 [CALL_BUILTIN_CLASS] = "CALL_BUILTIN_CLASS", 1553 [CALL_BUILTIN_FAST] = "CALL_BUILTIN_FAST", 1554 [CALL_BUILTIN_FAST_WITH_KEYWORDS] = "CALL_BUILTIN_FAST_WITH_KEYWORDS", 1555 [CALL_BUILTIN_O] = "CALL_BUILTIN_O", 1556 [CALL_FUNCTION_EX] = "CALL_FUNCTION_EX", 1557 [CALL_INTRINSIC_1] = "CALL_INTRINSIC_1", 1558 [CALL_INTRINSIC_2] = "CALL_INTRINSIC_2", 1559 [CALL_ISINSTANCE] = "CALL_ISINSTANCE", 1560 [CALL_KW] = "CALL_KW", 1561 [CALL_KW_BOUND_METHOD] = "CALL_KW_BOUND_METHOD", 1562 [CALL_KW_NON_PY] = "CALL_KW_NON_PY", 1563 [CALL_KW_PY] = "CALL_KW_PY", 1564 [CALL_LEN] = "CALL_LEN", 1565 [CALL_LIST_APPEND] = "CALL_LIST_APPEND", 1566 [CALL_METHOD_DESCRIPTOR_FAST] = "CALL_METHOD_DESCRIPTOR_FAST", 1567 [CALL_METHOD_DESCRIPTOR_FAST_WITH_KEYWORDS] = "CALL_METHOD_DESCRIPTOR_FAST_WITH_KEYWORDS", 1568 [CALL_METHOD_DESCRIPTOR_NOARGS] = "CALL_METHOD_DESCRIPTOR_NOARGS", 1569 [CALL_METHOD_DESCRIPTOR_O] = "CALL_METHOD_DESCRIPTOR_O", 1570 [CALL_NON_PY_GENERAL] = "CALL_NON_PY_GENERAL", 1571 [CALL_PY_EXACT_ARGS] = "CALL_PY_EXACT_ARGS", 1572 [CALL_PY_GENERAL] = "CALL_PY_GENERAL", 1573 [CALL_STR_1] = "CALL_STR_1", 1574 [CALL_TUPLE_1] = "CALL_TUPLE_1", 1575 [CALL_TYPE_1] = "CALL_TYPE_1", 1576 [CHECK_EG_MATCH] = "CHECK_EG_MATCH", 1577 [CHECK_EXC_MATCH] = "CHECK_EXC_MATCH", 1578 [CLEANUP_THROW] = "CLEANUP_THROW", 1579 [COMPARE_OP] = "COMPARE_OP", 1580 [COMPARE_OP_FLOAT] = "COMPARE_OP_FLOAT", 1581 [COMPARE_OP_INT] = "COMPARE_OP_INT", 1582 [COMPARE_OP_STR] = "COMPARE_OP_STR", 1583 [CONTAINS_OP] = "CONTAINS_OP", 1584 [CONTAINS_OP_DICT] = "CONTAINS_OP_DICT", 1585 [CONTAINS_OP_SET] = "CONTAINS_OP_SET", 1586 [CONVERT_VALUE] = "CONVERT_VALUE", 1587 [COPY] = "COPY", 1588 [COPY_FREE_VARS] = "COPY_FREE_VARS", 1589 [DELETE_ATTR] = "DELETE_ATTR", 1590 [DELETE_DEREF] = "DELETE_DEREF", 1591 [DELETE_FAST] = "DELETE_FAST", 1592 [DELETE_GLOBAL] = "DELETE_GLOBAL", 1593 [DELETE_NAME] = "DELETE_NAME", 1594 [DELETE_SUBSCR] = "DELETE_SUBSCR", 1595 [DICT_MERGE] = "DICT_MERGE", 1596 [DICT_UPDATE] = "DICT_UPDATE", 1597 [END_ASYNC_FOR] = "END_ASYNC_FOR", 1598 [END_FOR] = "END_FOR", 1599 [END_SEND] = "END_SEND", 1600 [ENTER_EXECUTOR] = "ENTER_EXECUTOR", 1601 [EXIT_INIT_CHECK] = "EXIT_INIT_CHECK", 1602 [EXTENDED_ARG] = "EXTENDED_ARG", 1603 [FORMAT_SIMPLE] = "FORMAT_SIMPLE", 1604 [FORMAT_WITH_SPEC] = "FORMAT_WITH_SPEC", 1605 [FOR_ITER] = "FOR_ITER", 1606 [FOR_ITER_GEN] = "FOR_ITER_GEN", 1607 [FOR_ITER_LIST] = "FOR_ITER_LIST", 1608 [FOR_ITER_RANGE] = "FOR_ITER_RANGE", 1609 [FOR_ITER_TUPLE] = "FOR_ITER_TUPLE", 1610 [GET_AITER] = "GET_AITER", 1611 [GET_ANEXT] = "GET_ANEXT", 1612 [GET_AWAITABLE] = "GET_AWAITABLE", 1613 [GET_ITER] = "GET_ITER", 1614 [GET_LEN] = "GET_LEN", 1615 [GET_YIELD_FROM_ITER] = "GET_YIELD_FROM_ITER", 1616 [IMPORT_FROM] = "IMPORT_FROM", 1617 [IMPORT_NAME] = "IMPORT_NAME", 1618 [INSTRUMENTED_CALL] = "INSTRUMENTED_CALL", 1619 [INSTRUMENTED_CALL_FUNCTION_EX] = "INSTRUMENTED_CALL_FUNCTION_EX", 1620 [INSTRUMENTED_CALL_KW] = "INSTRUMENTED_CALL_KW", 1621 [INSTRUMENTED_END_ASYNC_FOR] = "INSTRUMENTED_END_ASYNC_FOR", 1622 [INSTRUMENTED_END_FOR] = "INSTRUMENTED_END_FOR", 1623 [INSTRUMENTED_END_SEND] = "INSTRUMENTED_END_SEND", 1624 [INSTRUMENTED_FOR_ITER] = "INSTRUMENTED_FOR_ITER", 1625 [INSTRUMENTED_INSTRUCTION] = "INSTRUMENTED_INSTRUCTION", 1626 [INSTRUMENTED_JUMP_BACKWARD] = "INSTRUMENTED_JUMP_BACKWARD", 1627 [INSTRUMENTED_JUMP_FORWARD] = "INSTRUMENTED_JUMP_FORWARD", 1628 [INSTRUMENTED_LINE] = "INSTRUMENTED_LINE", 1629 [INSTRUMENTED_LOAD_SUPER_ATTR] = "INSTRUMENTED_LOAD_SUPER_ATTR", 1630 [INSTRUMENTED_NOT_TAKEN] = "INSTRUMENTED_NOT_TAKEN", 1631 [INSTRUMENTED_POP_ITER] = "INSTRUMENTED_POP_ITER", 1632 [INSTRUMENTED_POP_JUMP_IF_FALSE] = "INSTRUMENTED_POP_JUMP_IF_FALSE", 1633 [INSTRUMENTED_POP_JUMP_IF_NONE] = "INSTRUMENTED_POP_JUMP_IF_NONE", 1634 [INSTRUMENTED_POP_JUMP_IF_NOT_NONE] = "INSTRUMENTED_POP_JUMP_IF_NOT_NONE", 1635 [INSTRUMENTED_POP_JUMP_IF_TRUE] = "INSTRUMENTED_POP_JUMP_IF_TRUE", 1636 [INSTRUMENTED_RESUME] = "INSTRUMENTED_RESUME", 1637 [INSTRUMENTED_RETURN_VALUE] = "INSTRUMENTED_RETURN_VALUE", 1638 [INSTRUMENTED_YIELD_VALUE] = "INSTRUMENTED_YIELD_VALUE", 1639 [INTERPRETER_EXIT] = "INTERPRETER_EXIT", 1640 [IS_OP] = "IS_OP", 1641 [JUMP] = "JUMP", 1642 [JUMP_BACKWARD] = "JUMP_BACKWARD", 1643 [JUMP_BACKWARD_JIT] = "JUMP_BACKWARD_JIT", 1644 [JUMP_BACKWARD_NO_INTERRUPT] = "JUMP_BACKWARD_NO_INTERRUPT", 1645 [JUMP_BACKWARD_NO_JIT] = "JUMP_BACKWARD_NO_JIT", 1646 [JUMP_FORWARD] = "JUMP_FORWARD", 1647 [JUMP_IF_FALSE] = "JUMP_IF_FALSE", 1648 [JUMP_IF_TRUE] = "JUMP_IF_TRUE", 1649 [JUMP_NO_INTERRUPT] = "JUMP_NO_INTERRUPT", 1650 [LIST_APPEND] = "LIST_APPEND", 1651 [LIST_EXTEND] = "LIST_EXTEND", 1652 [LOAD_ATTR] = "LOAD_ATTR", 1653 [LOAD_ATTR_CLASS] = "LOAD_ATTR_CLASS", 1654 [LOAD_ATTR_CLASS_WITH_METACLASS_CHECK] = "LOAD_ATTR_CLASS_WITH_METACLASS_CHECK", 1655 [LOAD_ATTR_GETATTRIBUTE_OVERRIDDEN] = "LOAD_ATTR_GETATTRIBUTE_OVERRIDDEN", 1656 [LOAD_ATTR_INSTANCE_VALUE] = "LOAD_ATTR_INSTANCE_VALUE", 1657 [LOAD_ATTR_METHOD_LAZY_DICT] = "LOAD_ATTR_METHOD_LAZY_DICT", 1658 [LOAD_ATTR_METHOD_NO_DICT] = "LOAD_ATTR_METHOD_NO_DICT", 1659 [LOAD_ATTR_METHOD_WITH_VALUES] = "LOAD_ATTR_METHOD_WITH_VALUES", 1660 [LOAD_ATTR_MODULE] = "LOAD_ATTR_MODULE", 1661 [LOAD_ATTR_NONDESCRIPTOR_NO_DICT] = "LOAD_ATTR_NONDESCRIPTOR_NO_DICT", 1662 [LOAD_ATTR_NONDESCRIPTOR_WITH_VALUES] = "LOAD_ATTR_NONDESCRIPTOR_WITH_VALUES", 1663 [LOAD_ATTR_PROPERTY] = "LOAD_ATTR_PROPERTY", 1664 [LOAD_ATTR_SLOT] = "LOAD_ATTR_SLOT", 1665 [LOAD_ATTR_WITH_HINT] = "LOAD_ATTR_WITH_HINT", 1666 [LOAD_BUILD_CLASS] = "LOAD_BUILD_CLASS", 1667 [LOAD_CLOSURE] = "LOAD_CLOSURE", 1668 [LOAD_COMMON_CONSTANT] = "LOAD_COMMON_CONSTANT", 1669 [LOAD_CONST] = "LOAD_CONST", 1670 [LOAD_CONST_IMMORTAL] = "LOAD_CONST_IMMORTAL", 1671 [LOAD_CONST_MORTAL] = "LOAD_CONST_MORTAL", 1672 [LOAD_DEREF] = "LOAD_DEREF", 1673 [LOAD_FAST] = "LOAD_FAST", 1674 [LOAD_FAST_AND_CLEAR] = "LOAD_FAST_AND_CLEAR", 1675 [LOAD_FAST_BORROW] = "LOAD_FAST_BORROW", 1676 [LOAD_FAST_BORROW_LOAD_FAST_BORROW] = "LOAD_FAST_BORROW_LOAD_FAST_BORROW", 1677 [LOAD_FAST_CHECK] = "LOAD_FAST_CHECK", 1678 [LOAD_FAST_LOAD_FAST] = "LOAD_FAST_LOAD_FAST", 1679 [LOAD_FROM_DICT_OR_DEREF] = "LOAD_FROM_DICT_OR_DEREF", 1680 [LOAD_FROM_DICT_OR_GLOBALS] = "LOAD_FROM_DICT_OR_GLOBALS", 1681 [LOAD_GLOBAL] = "LOAD_GLOBAL", 1682 [LOAD_GLOBAL_BUILTIN] = "LOAD_GLOBAL_BUILTIN", 1683 [LOAD_GLOBAL_MODULE] = "LOAD_GLOBAL_MODULE", 1684 [LOAD_LOCALS] = "LOAD_LOCALS", 1685 [LOAD_NAME] = "LOAD_NAME", 1686 [LOAD_SMALL_INT] = "LOAD_SMALL_INT", 1687 [LOAD_SPECIAL] = "LOAD_SPECIAL", 1688 [LOAD_SUPER_ATTR] = "LOAD_SUPER_ATTR", 1689 [LOAD_SUPER_ATTR_ATTR] = "LOAD_SUPER_ATTR_ATTR", 1690 [LOAD_SUPER_ATTR_METHOD] = "LOAD_SUPER_ATTR_METHOD", 1691 [MAKE_CELL] = "MAKE_CELL", 1692 [MAKE_FUNCTION] = "MAKE_FUNCTION", 1693 [MAP_ADD] = "MAP_ADD", 1694 [MATCH_CLASS] = "MATCH_CLASS", 1695 [MATCH_KEYS] = "MATCH_KEYS", 1696 [MATCH_MAPPING] = "MATCH_MAPPING", 1697 [MATCH_SEQUENCE] = "MATCH_SEQUENCE", 1698 [NOP] = "NOP", 1699 [NOT_TAKEN] = "NOT_TAKEN", 1700 [POP_BLOCK] = "POP_BLOCK", 1701 [POP_EXCEPT] = "POP_EXCEPT", 1702 [POP_ITER] = "POP_ITER", 1703 [POP_JUMP_IF_FALSE] = "POP_JUMP_IF_FALSE", 1704 [POP_JUMP_IF_NONE] = "POP_JUMP_IF_NONE", 1705 [POP_JUMP_IF_NOT_NONE] = "POP_JUMP_IF_NOT_NONE", 1706 [POP_JUMP_IF_TRUE] = "POP_JUMP_IF_TRUE", 1707 [POP_TOP] = "POP_TOP", 1708 [PUSH_EXC_INFO] = "PUSH_EXC_INFO", 1709 [PUSH_NULL] = "PUSH_NULL", 1710 [RAISE_VARARGS] = "RAISE_VARARGS", 1711 [RERAISE] = "RERAISE", 1712 [RESERVED] = "RESERVED", 1713 [RESUME] = "RESUME", 1714 [RESUME_CHECK] = "RESUME_CHECK", 1715 [RETURN_GENERATOR] = "RETURN_GENERATOR", 1716 [RETURN_VALUE] = "RETURN_VALUE", 1717 [SEND] = "SEND", 1718 [SEND_GEN] = "SEND_GEN", 1719 [SETUP_ANNOTATIONS] = "SETUP_ANNOTATIONS", 1720 [SETUP_CLEANUP] = "SETUP_CLEANUP", 1721 [SETUP_FINALLY] = "SETUP_FINALLY", 1722 [SETUP_WITH] = "SETUP_WITH", 1723 [SET_ADD] = "SET_ADD", 1724 [SET_FUNCTION_ATTRIBUTE] = "SET_FUNCTION_ATTRIBUTE", 1725 [SET_UPDATE] = "SET_UPDATE", 1726 [STORE_ATTR] = "STORE_ATTR", 1727 [STORE_ATTR_INSTANCE_VALUE] = "STORE_ATTR_INSTANCE_VALUE", 1728 [STORE_ATTR_SLOT] = "STORE_ATTR_SLOT", 1729 [STORE_ATTR_WITH_HINT] = "STORE_ATTR_WITH_HINT", 1730 [STORE_DEREF] = "STORE_DEREF", 1731 [STORE_FAST] = "STORE_FAST", 1732 [STORE_FAST_LOAD_FAST] = "STORE_FAST_LOAD_FAST", 1733 [STORE_FAST_MAYBE_NULL] = "STORE_FAST_MAYBE_NULL", 1734 [STORE_FAST_STORE_FAST] = "STORE_FAST_STORE_FAST", 1735 [STORE_GLOBAL] = "STORE_GLOBAL", 1736 [STORE_NAME] = "STORE_NAME", 1737 [STORE_SLICE] = "STORE_SLICE", 1738 [STORE_SUBSCR] = "STORE_SUBSCR", 1739 [STORE_SUBSCR_DICT] = "STORE_SUBSCR_DICT", 1740 [STORE_SUBSCR_LIST_INT] = "STORE_SUBSCR_LIST_INT", 1741 [SWAP] = "SWAP", 1742 [TO_BOOL] = "TO_BOOL", 1743 [TO_BOOL_ALWAYS_TRUE] = "TO_BOOL_ALWAYS_TRUE", 1744 [TO_BOOL_BOOL] = "TO_BOOL_BOOL", 1745 [TO_BOOL_INT] = "TO_BOOL_INT", 1746 [TO_BOOL_LIST] = "TO_BOOL_LIST", 1747 [TO_BOOL_NONE] = "TO_BOOL_NONE", 1748 [TO_BOOL_STR] = "TO_BOOL_STR", 1749 [UNARY_INVERT] = "UNARY_INVERT", 1750 [UNARY_NEGATIVE] = "UNARY_NEGATIVE", 1751 [UNARY_NOT] = "UNARY_NOT", 1752 [UNPACK_EX] = "UNPACK_EX", 1753 [UNPACK_SEQUENCE] = "UNPACK_SEQUENCE", 1754 [UNPACK_SEQUENCE_LIST] = "UNPACK_SEQUENCE_LIST", 1755 [UNPACK_SEQUENCE_TUPLE] = "UNPACK_SEQUENCE_TUPLE", 1756 [UNPACK_SEQUENCE_TWO_TUPLE] = "UNPACK_SEQUENCE_TWO_TUPLE", 1757 [WITH_EXCEPT_START] = "WITH_EXCEPT_START", 1758 [YIELD_VALUE] = "YIELD_VALUE", 1759 }; 1760 #endif 1761 1762 extern const uint8_t _PyOpcode_Caches[256]; 1763 #ifdef NEED_OPCODE_METADATA 1764 const uint8_t _PyOpcode_Caches[256] = { 1765 [TO_BOOL] = 3, 1766 [STORE_SUBSCR] = 1, 1767 [SEND] = 1, 1768 [UNPACK_SEQUENCE] = 1, 1769 [STORE_ATTR] = 4, 1770 [LOAD_GLOBAL] = 4, 1771 [LOAD_SUPER_ATTR] = 1, 1772 [LOAD_ATTR] = 9, 1773 [COMPARE_OP] = 1, 1774 [CONTAINS_OP] = 1, 1775 [JUMP_BACKWARD] = 1, 1776 [POP_JUMP_IF_TRUE] = 1, 1777 [POP_JUMP_IF_FALSE] = 1, 1778 [POP_JUMP_IF_NONE] = 1, 1779 [POP_JUMP_IF_NOT_NONE] = 1, 1780 [FOR_ITER] = 1, 1781 [CALL] = 3, 1782 [CALL_KW] = 3, 1783 [BINARY_OP] = 5, 1784 }; 1785 #endif 1786 1787 extern const uint8_t _PyOpcode_Deopt[256]; 1788 #ifdef NEED_OPCODE_METADATA 1789 const uint8_t _PyOpcode_Deopt[256] = { 1790 [121] = 121, 1791 [122] = 122, 1792 [123] = 123, 1793 [124] = 124, 1794 [125] = 125, 1795 [126] = 126, 1796 [127] = 127, 1797 [212] = 212, 1798 [213] = 213, 1799 [214] = 214, 1800 [215] = 215, 1801 [216] = 216, 1802 [217] = 217, 1803 [218] = 218, 1804 [219] = 219, 1805 [220] = 220, 1806 [221] = 221, 1807 [222] = 222, 1808 [223] = 223, 1809 [224] = 224, 1810 [225] = 225, 1811 [226] = 226, 1812 [227] = 227, 1813 [228] = 228, 1814 [229] = 229, 1815 [230] = 230, 1816 [231] = 231, 1817 [232] = 232, 1818 [233] = 233, 1819 [BINARY_OP] = BINARY_OP, 1820 [BINARY_OP_ADD_FLOAT] = BINARY_OP, 1821 [BINARY_OP_ADD_INT] = BINARY_OP, 1822 [BINARY_OP_ADD_UNICODE] = BINARY_OP, 1823 [BINARY_OP_EXTEND] = BINARY_OP, 1824 [BINARY_OP_INPLACE_ADD_UNICODE] = BINARY_OP, 1825 [BINARY_OP_MULTIPLY_FLOAT] = BINARY_OP, 1826 [BINARY_OP_MULTIPLY_INT] = BINARY_OP, 1827 [BINARY_OP_SUBSCR_DICT] = BINARY_OP, 1828 [BINARY_OP_SUBSCR_GETITEM] = BINARY_OP, 1829 [BINARY_OP_SUBSCR_LIST_INT] = BINARY_OP, 1830 [BINARY_OP_SUBSCR_LIST_SLICE] = BINARY_OP, 1831 [BINARY_OP_SUBSCR_STR_INT] = BINARY_OP, 1832 [BINARY_OP_SUBSCR_TUPLE_INT] = BINARY_OP, 1833 [BINARY_OP_SUBTRACT_FLOAT] = BINARY_OP, 1834 [BINARY_OP_SUBTRACT_INT] = BINARY_OP, 1835 [BINARY_SLICE] = BINARY_SLICE, 1836 [BUILD_INTERPOLATION] = BUILD_INTERPOLATION, 1837 [BUILD_LIST] = BUILD_LIST, 1838 [BUILD_MAP] = BUILD_MAP, 1839 [BUILD_SET] = BUILD_SET, 1840 [BUILD_SLICE] = BUILD_SLICE, 1841 [BUILD_STRING] = BUILD_STRING, 1842 [BUILD_TEMPLATE] = BUILD_TEMPLATE, 1843 [BUILD_TUPLE] = BUILD_TUPLE, 1844 [CACHE] = CACHE, 1845 [CALL] = CALL, 1846 [CALL_ALLOC_AND_ENTER_INIT] = CALL, 1847 [CALL_BOUND_METHOD_EXACT_ARGS] = CALL, 1848 [CALL_BOUND_METHOD_GENERAL] = CALL, 1849 [CALL_BUILTIN_CLASS] = CALL, 1850 [CALL_BUILTIN_FAST] = CALL, 1851 [CALL_BUILTIN_FAST_WITH_KEYWORDS] = CALL, 1852 [CALL_BUILTIN_O] = CALL, 1853 [CALL_FUNCTION_EX] = CALL_FUNCTION_EX, 1854 [CALL_INTRINSIC_1] = CALL_INTRINSIC_1, 1855 [CALL_INTRINSIC_2] = CALL_INTRINSIC_2, 1856 [CALL_ISINSTANCE] = CALL, 1857 [CALL_KW] = CALL_KW, 1858 [CALL_KW_BOUND_METHOD] = CALL_KW, 1859 [CALL_KW_NON_PY] = CALL_KW, 1860 [CALL_KW_PY] = CALL_KW, 1861 [CALL_LEN] = CALL, 1862 [CALL_LIST_APPEND] = CALL, 1863 [CALL_METHOD_DESCRIPTOR_FAST] = CALL, 1864 [CALL_METHOD_DESCRIPTOR_FAST_WITH_KEYWORDS] = CALL, 1865 [CALL_METHOD_DESCRIPTOR_NOARGS] = CALL, 1866 [CALL_METHOD_DESCRIPTOR_O] = CALL, 1867 [CALL_NON_PY_GENERAL] = CALL, 1868 [CALL_PY_EXACT_ARGS] = CALL, 1869 [CALL_PY_GENERAL] = CALL, 1870 [CALL_STR_1] = CALL, 1871 [CALL_TUPLE_1] = CALL, 1872 [CALL_TYPE_1] = CALL, 1873 [CHECK_EG_MATCH] = CHECK_EG_MATCH, 1874 [CHECK_EXC_MATCH] = CHECK_EXC_MATCH, 1875 [CLEANUP_THROW] = CLEANUP_THROW, 1876 [COMPARE_OP] = COMPARE_OP, 1877 [COMPARE_OP_FLOAT] = COMPARE_OP, 1878 [COMPARE_OP_INT] = COMPARE_OP, 1879 [COMPARE_OP_STR] = COMPARE_OP, 1880 [CONTAINS_OP] = CONTAINS_OP, 1881 [CONTAINS_OP_DICT] = CONTAINS_OP, 1882 [CONTAINS_OP_SET] = CONTAINS_OP, 1883 [CONVERT_VALUE] = CONVERT_VALUE, 1884 [COPY] = COPY, 1885 [COPY_FREE_VARS] = COPY_FREE_VARS, 1886 [DELETE_ATTR] = DELETE_ATTR, 1887 [DELETE_DEREF] = DELETE_DEREF, 1888 [DELETE_FAST] = DELETE_FAST, 1889 [DELETE_GLOBAL] = DELETE_GLOBAL, 1890 [DELETE_NAME] = DELETE_NAME, 1891 [DELETE_SUBSCR] = DELETE_SUBSCR, 1892 [DICT_MERGE] = DICT_MERGE, 1893 [DICT_UPDATE] = DICT_UPDATE, 1894 [END_ASYNC_FOR] = END_ASYNC_FOR, 1895 [END_FOR] = END_FOR, 1896 [END_SEND] = END_SEND, 1897 [ENTER_EXECUTOR] = ENTER_EXECUTOR, 1898 [EXIT_INIT_CHECK] = EXIT_INIT_CHECK, 1899 [EXTENDED_ARG] = EXTENDED_ARG, 1900 [FORMAT_SIMPLE] = FORMAT_SIMPLE, 1901 [FORMAT_WITH_SPEC] = FORMAT_WITH_SPEC, 1902 [FOR_ITER] = FOR_ITER, 1903 [FOR_ITER_GEN] = FOR_ITER, 1904 [FOR_ITER_LIST] = FOR_ITER, 1905 [FOR_ITER_RANGE] = FOR_ITER, 1906 [FOR_ITER_TUPLE] = FOR_ITER, 1907 [GET_AITER] = GET_AITER, 1908 [GET_ANEXT] = GET_ANEXT, 1909 [GET_AWAITABLE] = GET_AWAITABLE, 1910 [GET_ITER] = GET_ITER, 1911 [GET_LEN] = GET_LEN, 1912 [GET_YIELD_FROM_ITER] = GET_YIELD_FROM_ITER, 1913 [IMPORT_FROM] = IMPORT_FROM, 1914 [IMPORT_NAME] = IMPORT_NAME, 1915 [INSTRUMENTED_CALL] = INSTRUMENTED_CALL, 1916 [INSTRUMENTED_CALL_FUNCTION_EX] = INSTRUMENTED_CALL_FUNCTION_EX, 1917 [INSTRUMENTED_CALL_KW] = INSTRUMENTED_CALL_KW, 1918 [INSTRUMENTED_END_ASYNC_FOR] = INSTRUMENTED_END_ASYNC_FOR, 1919 [INSTRUMENTED_END_FOR] = INSTRUMENTED_END_FOR, 1920 [INSTRUMENTED_END_SEND] = INSTRUMENTED_END_SEND, 1921 [INSTRUMENTED_FOR_ITER] = INSTRUMENTED_FOR_ITER, 1922 [INSTRUMENTED_INSTRUCTION] = INSTRUMENTED_INSTRUCTION, 1923 [INSTRUMENTED_JUMP_BACKWARD] = INSTRUMENTED_JUMP_BACKWARD, 1924 [INSTRUMENTED_JUMP_FORWARD] = INSTRUMENTED_JUMP_FORWARD, 1925 [INSTRUMENTED_LINE] = INSTRUMENTED_LINE, 1926 [INSTRUMENTED_LOAD_SUPER_ATTR] = INSTRUMENTED_LOAD_SUPER_ATTR, 1927 [INSTRUMENTED_NOT_TAKEN] = INSTRUMENTED_NOT_TAKEN, 1928 [INSTRUMENTED_POP_ITER] = INSTRUMENTED_POP_ITER, 1929 [INSTRUMENTED_POP_JUMP_IF_FALSE] = INSTRUMENTED_POP_JUMP_IF_FALSE, 1930 [INSTRUMENTED_POP_JUMP_IF_NONE] = INSTRUMENTED_POP_JUMP_IF_NONE, 1931 [INSTRUMENTED_POP_JUMP_IF_NOT_NONE] = INSTRUMENTED_POP_JUMP_IF_NOT_NONE, 1932 [INSTRUMENTED_POP_JUMP_IF_TRUE] = INSTRUMENTED_POP_JUMP_IF_TRUE, 1933 [INSTRUMENTED_RESUME] = INSTRUMENTED_RESUME, 1934 [INSTRUMENTED_RETURN_VALUE] = INSTRUMENTED_RETURN_VALUE, 1935 [INSTRUMENTED_YIELD_VALUE] = INSTRUMENTED_YIELD_VALUE, 1936 [INTERPRETER_EXIT] = INTERPRETER_EXIT, 1937 [IS_OP] = IS_OP, 1938 [JUMP_BACKWARD] = JUMP_BACKWARD, 1939 [JUMP_BACKWARD_JIT] = JUMP_BACKWARD, 1940 [JUMP_BACKWARD_NO_INTERRUPT] = JUMP_BACKWARD_NO_INTERRUPT, 1941 [JUMP_BACKWARD_NO_JIT] = JUMP_BACKWARD, 1942 [JUMP_FORWARD] = JUMP_FORWARD, 1943 [LIST_APPEND] = LIST_APPEND, 1944 [LIST_EXTEND] = LIST_EXTEND, 1945 [LOAD_ATTR] = LOAD_ATTR, 1946 [LOAD_ATTR_CLASS] = LOAD_ATTR, 1947 [LOAD_ATTR_CLASS_WITH_METACLASS_CHECK] = LOAD_ATTR, 1948 [LOAD_ATTR_GETATTRIBUTE_OVERRIDDEN] = LOAD_ATTR, 1949 [LOAD_ATTR_INSTANCE_VALUE] = LOAD_ATTR, 1950 [LOAD_ATTR_METHOD_LAZY_DICT] = LOAD_ATTR, 1951 [LOAD_ATTR_METHOD_NO_DICT] = LOAD_ATTR, 1952 [LOAD_ATTR_METHOD_WITH_VALUES] = LOAD_ATTR, 1953 [LOAD_ATTR_MODULE] = LOAD_ATTR, 1954 [LOAD_ATTR_NONDESCRIPTOR_NO_DICT] = LOAD_ATTR, 1955 [LOAD_ATTR_NONDESCRIPTOR_WITH_VALUES] = LOAD_ATTR, 1956 [LOAD_ATTR_PROPERTY] = LOAD_ATTR, 1957 [LOAD_ATTR_SLOT] = LOAD_ATTR, 1958 [LOAD_ATTR_WITH_HINT] = LOAD_ATTR, 1959 [LOAD_BUILD_CLASS] = LOAD_BUILD_CLASS, 1960 [LOAD_COMMON_CONSTANT] = LOAD_COMMON_CONSTANT, 1961 [LOAD_CONST] = LOAD_CONST, 1962 [LOAD_CONST_IMMORTAL] = LOAD_CONST, 1963 [LOAD_CONST_MORTAL] = LOAD_CONST, 1964 [LOAD_DEREF] = LOAD_DEREF, 1965 [LOAD_FAST] = LOAD_FAST, 1966 [LOAD_FAST_AND_CLEAR] = LOAD_FAST_AND_CLEAR, 1967 [LOAD_FAST_BORROW] = LOAD_FAST_BORROW, 1968 [LOAD_FAST_BORROW_LOAD_FAST_BORROW] = LOAD_FAST_BORROW_LOAD_FAST_BORROW, 1969 [LOAD_FAST_CHECK] = LOAD_FAST_CHECK, 1970 [LOAD_FAST_LOAD_FAST] = LOAD_FAST_LOAD_FAST, 1971 [LOAD_FROM_DICT_OR_DEREF] = LOAD_FROM_DICT_OR_DEREF, 1972 [LOAD_FROM_DICT_OR_GLOBALS] = LOAD_FROM_DICT_OR_GLOBALS, 1973 [LOAD_GLOBAL] = LOAD_GLOBAL, 1974 [LOAD_GLOBAL_BUILTIN] = LOAD_GLOBAL, 1975 [LOAD_GLOBAL_MODULE] = LOAD_GLOBAL, 1976 [LOAD_LOCALS] = LOAD_LOCALS, 1977 [LOAD_NAME] = LOAD_NAME, 1978 [LOAD_SMALL_INT] = LOAD_SMALL_INT, 1979 [LOAD_SPECIAL] = LOAD_SPECIAL, 1980 [LOAD_SUPER_ATTR] = LOAD_SUPER_ATTR, 1981 [LOAD_SUPER_ATTR_ATTR] = LOAD_SUPER_ATTR, 1982 [LOAD_SUPER_ATTR_METHOD] = LOAD_SUPER_ATTR, 1983 [MAKE_CELL] = MAKE_CELL, 1984 [MAKE_FUNCTION] = MAKE_FUNCTION, 1985 [MAP_ADD] = MAP_ADD, 1986 [MATCH_CLASS] = MATCH_CLASS, 1987 [MATCH_KEYS] = MATCH_KEYS, 1988 [MATCH_MAPPING] = MATCH_MAPPING, 1989 [MATCH_SEQUENCE] = MATCH_SEQUENCE, 1990 [NOP] = NOP, 1991 [NOT_TAKEN] = NOT_TAKEN, 1992 [POP_EXCEPT] = POP_EXCEPT, 1993 [POP_ITER] = POP_ITER, 1994 [POP_JUMP_IF_FALSE] = POP_JUMP_IF_FALSE, 1995 [POP_JUMP_IF_NONE] = POP_JUMP_IF_NONE, 1996 [POP_JUMP_IF_NOT_NONE] = POP_JUMP_IF_NOT_NONE, 1997 [POP_JUMP_IF_TRUE] = POP_JUMP_IF_TRUE, 1998 [POP_TOP] = POP_TOP, 1999 [PUSH_EXC_INFO] = PUSH_EXC_INFO, 2000 [PUSH_NULL] = PUSH_NULL, 2001 [RAISE_VARARGS] = RAISE_VARARGS, 2002 [RERAISE] = RERAISE, 2003 [RESERVED] = RESERVED, 2004 [RESUME] = RESUME, 2005 [RESUME_CHECK] = RESUME, 2006 [RETURN_GENERATOR] = RETURN_GENERATOR, 2007 [RETURN_VALUE] = RETURN_VALUE, 2008 [SEND] = SEND, 2009 [SEND_GEN] = SEND, 2010 [SETUP_ANNOTATIONS] = SETUP_ANNOTATIONS, 2011 [SET_ADD] = SET_ADD, 2012 [SET_FUNCTION_ATTRIBUTE] = SET_FUNCTION_ATTRIBUTE, 2013 [SET_UPDATE] = SET_UPDATE, 2014 [STORE_ATTR] = STORE_ATTR, 2015 [STORE_ATTR_INSTANCE_VALUE] = STORE_ATTR, 2016 [STORE_ATTR_SLOT] = STORE_ATTR, 2017 [STORE_ATTR_WITH_HINT] = STORE_ATTR, 2018 [STORE_DEREF] = STORE_DEREF, 2019 [STORE_FAST] = STORE_FAST, 2020 [STORE_FAST_LOAD_FAST] = STORE_FAST_LOAD_FAST, 2021 [STORE_FAST_STORE_FAST] = STORE_FAST_STORE_FAST, 2022 [STORE_GLOBAL] = STORE_GLOBAL, 2023 [STORE_NAME] = STORE_NAME, 2024 [STORE_SLICE] = STORE_SLICE, 2025 [STORE_SUBSCR] = STORE_SUBSCR, 2026 [STORE_SUBSCR_DICT] = STORE_SUBSCR, 2027 [STORE_SUBSCR_LIST_INT] = STORE_SUBSCR, 2028 [SWAP] = SWAP, 2029 [TO_BOOL] = TO_BOOL, 2030 [TO_BOOL_ALWAYS_TRUE] = TO_BOOL, 2031 [TO_BOOL_BOOL] = TO_BOOL, 2032 [TO_BOOL_INT] = TO_BOOL, 2033 [TO_BOOL_LIST] = TO_BOOL, 2034 [TO_BOOL_NONE] = TO_BOOL, 2035 [TO_BOOL_STR] = TO_BOOL, 2036 [UNARY_INVERT] = UNARY_INVERT, 2037 [UNARY_NEGATIVE] = UNARY_NEGATIVE, 2038 [UNARY_NOT] = UNARY_NOT, 2039 [UNPACK_EX] = UNPACK_EX, 2040 [UNPACK_SEQUENCE] = UNPACK_SEQUENCE, 2041 [UNPACK_SEQUENCE_LIST] = UNPACK_SEQUENCE, 2042 [UNPACK_SEQUENCE_TUPLE] = UNPACK_SEQUENCE, 2043 [UNPACK_SEQUENCE_TWO_TUPLE] = UNPACK_SEQUENCE, 2044 [WITH_EXCEPT_START] = WITH_EXCEPT_START, 2045 [YIELD_VALUE] = YIELD_VALUE, 2046 }; 2047 2048 #endif // NEED_OPCODE_METADATA 2049 2050 #define EXTRA_CASES \ 2051 case 121: \ 2052 case 122: \ 2053 case 123: \ 2054 case 124: \ 2055 case 125: \ 2056 case 126: \ 2057 case 127: \ 2058 case 212: \ 2059 case 213: \ 2060 case 214: \ 2061 case 215: \ 2062 case 216: \ 2063 case 217: \ 2064 case 218: \ 2065 case 219: \ 2066 case 220: \ 2067 case 221: \ 2068 case 222: \ 2069 case 223: \ 2070 case 224: \ 2071 case 225: \ 2072 case 226: \ 2073 case 227: \ 2074 case 228: \ 2075 case 229: \ 2076 case 230: \ 2077 case 231: \ 2078 case 232: \ 2079 case 233: \ 2080 ; 2081 struct pseudo_targets { 2082 uint8_t as_sequence; 2083 uint8_t targets[4]; 2084 }; 2085 extern const struct pseudo_targets _PyOpcode_PseudoTargets[11]; 2086 #ifdef NEED_OPCODE_METADATA 2087 const struct pseudo_targets _PyOpcode_PseudoTargets[11] = { 2088 [LOAD_CLOSURE-256] = { 0, { LOAD_FAST, 0, 0, 0 } }, 2089 [STORE_FAST_MAYBE_NULL-256] = { 0, { STORE_FAST, 0, 0, 0 } }, 2090 [ANNOTATIONS_PLACEHOLDER-256] = { 0, { NOP, 0, 0, 0 } }, 2091 [JUMP-256] = { 0, { JUMP_FORWARD, JUMP_BACKWARD, 0, 0 } }, 2092 [JUMP_NO_INTERRUPT-256] = { 0, { JUMP_FORWARD, JUMP_BACKWARD_NO_INTERRUPT, 0, 0 } }, 2093 [JUMP_IF_FALSE-256] = { 1, { COPY, TO_BOOL, POP_JUMP_IF_FALSE, 0 } }, 2094 [JUMP_IF_TRUE-256] = { 1, { COPY, TO_BOOL, POP_JUMP_IF_TRUE, 0 } }, 2095 [SETUP_FINALLY-256] = { 0, { NOP, 0, 0, 0 } }, 2096 [SETUP_CLEANUP-256] = { 0, { NOP, 0, 0, 0 } }, 2097 [SETUP_WITH-256] = { 0, { NOP, 0, 0, 0 } }, 2098 [POP_BLOCK-256] = { 0, { NOP, 0, 0, 0 } }, 2099 }; 2100 2101 #endif // NEED_OPCODE_METADATA 2102 static inline bool 2103 is_pseudo_target(int pseudo, int target) { 2104 if (pseudo < 256 || pseudo >= 267) { 2105 return false; 2106 } 2107 for (int i = 0; _PyOpcode_PseudoTargets[pseudo-256].targets[i]; i++) { 2108 if (_PyOpcode_PseudoTargets[pseudo-256].targets[i] == target) return true; 2109 } 2110 return false; 2111 } 2112 2113 2114 #ifdef __cplusplus 2115 } 2116 #endif 2117 #endif /* !Py_CORE_OPCODE_METADATA_H */