]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
gh-143414: Implement unique reference tracking for JIT, optimize unpacking of such...
authorreiden <65756407+reidenong@users.noreply.github.com>
Sun, 22 Mar 2026 16:57:23 +0000 (00:57 +0800)
committerGitHub <noreply@github.com>
Sun, 22 Mar 2026 16:57:23 +0000 (00:57 +0800)
Co-authored-by: Ken Jin <kenjin4096@gmail.com>
13 files changed:
Include/internal/pycore_optimizer.h
Include/internal/pycore_tuple.h
Include/internal/pycore_uop_ids.h
Include/internal/pycore_uop_metadata.h
Lib/test/test_capi/test_opt.py
Misc/NEWS.d/next/Core_and_Builtins/2026-01-31-15-15-43.gh-issue-143414.Jgl4xu.rst [new file with mode: 0644]
Objects/tupleobject.c
Python/bytecodes.c
Python/executor_cases.c.h
Python/optimizer_bytecodes.c
Python/optimizer_cases.c.h
Python/optimizer_symbols.c
Tools/cases_generator/analyzer.py

index 94c79edc855bbfb7c62427b6b25804161a123176..2986afb142b5d1bfee75d867aa0eea07db5b70a1 100644 (file)
@@ -290,9 +290,13 @@ static inline uint16_t uop_get_error_target(const _PyUOpInstruction *inst)
 
 
 #define REF_IS_BORROWED 1
-#define REF_IS_INVALID  2
+#define REF_IS_UNIQUE   2
+#define REF_IS_INVALID  3
 #define REF_TAG_BITS    3
 
+#define REF_GET_TAG(x)   ((uintptr_t)(x) & (REF_TAG_BITS))
+#define REF_CLEAR_TAG(x) ((uintptr_t)(x) & (~REF_TAG_BITS))
+
 #define JIT_BITS_TO_PTR_MASKED(REF) ((JitOptSymbol *)(((REF).bits) & (~REF_TAG_BITS)))
 
 static inline JitOptSymbol *
@@ -313,13 +317,34 @@ PyJitRef_Wrap(JitOptSymbol *sym)
 static inline JitOptRef
 PyJitRef_WrapInvalid(void *ptr)
 {
-    return (JitOptRef){.bits=(uintptr_t)ptr | REF_IS_INVALID};
+    return (JitOptRef){.bits = REF_CLEAR_TAG((uintptr_t)ptr) | REF_IS_INVALID};
 }
 
 static inline bool
 PyJitRef_IsInvalid(JitOptRef ref)
 {
-    return (ref.bits & REF_IS_INVALID) == REF_IS_INVALID;
+    return REF_GET_TAG(ref.bits) == REF_IS_INVALID;
+}
+
+static inline JitOptRef
+PyJitRef_MakeUnique(JitOptRef ref)
+{
+    return (JitOptRef){ REF_CLEAR_TAG(ref.bits) | REF_IS_UNIQUE };
+}
+
+static inline bool
+PyJitRef_IsUnique(JitOptRef ref)
+{
+    return REF_GET_TAG(ref.bits) == REF_IS_UNIQUE;
+}
+
+static inline JitOptRef
+PyJitRef_StripBorrowInfo(JitOptRef ref)
+{
+    if (PyJitRef_IsUnique(ref)) {
+        return ref;
+    }
+    return (JitOptRef){ .bits = REF_CLEAR_TAG(ref.bits) };
 }
 
 static inline JitOptRef
@@ -328,10 +353,19 @@ PyJitRef_StripReferenceInfo(JitOptRef ref)
     return PyJitRef_Wrap(PyJitRef_Unwrap(ref));
 }
 
+static inline JitOptRef
+PyJitRef_RemoveUnique(JitOptRef ref)
+{
+    if (PyJitRef_IsUnique(ref)) {
+        ref = PyJitRef_StripReferenceInfo(ref);
+    }
+    return ref;
+}
+
 static inline JitOptRef
 PyJitRef_Borrow(JitOptRef ref)
 {
-    return (JitOptRef){ .bits = ref.bits | REF_IS_BORROWED };
+    return (JitOptRef){ .bits = REF_CLEAR_TAG(ref.bits) | REF_IS_BORROWED };
 }
 
 static const JitOptRef PyJitRef_NULL = {.bits = REF_IS_BORROWED};
@@ -345,7 +379,7 @@ PyJitRef_IsNull(JitOptRef ref)
 static inline int
 PyJitRef_IsBorrowed(JitOptRef ref)
 {
-    return (ref.bits & REF_IS_BORROWED) == REF_IS_BORROWED;
+    return REF_GET_TAG(ref.bits) == REF_IS_BORROWED;
 }
 
 extern bool _Py_uop_sym_is_null(JitOptRef sym);
index b3fa28f5bf21d58d771188abbad1fcc3c750a4c0..9409ec94976d3a7a12f7211f9719f51d1b962b22 100644 (file)
@@ -21,6 +21,8 @@ extern PyStatus _PyTuple_InitGlobalObjects(PyInterpreterState *);
 
 /* other API */
 
+PyAPI_FUNC(void) _PyStolenTuple_Free(PyObject *self);
+
 #define _PyTuple_ITEMS(op) _Py_RVALUE(_PyTuple_CAST(op)->ob_item)
 
 PyAPI_FUNC(PyObject *)_PyTuple_FromStackRefStealOnSuccess(const union _PyStackRef *, Py_ssize_t);
index be4e079e5f5b5cf19deb940270e7d8681e40fd74..f378c756654df7464dcdf498ef9a0b8ceecf0ef8 100644 (file)
@@ -395,907 +395,916 @@ extern "C" {
 #define _UNPACK_SEQUENCE_LIST 601
 #define _UNPACK_SEQUENCE_TUPLE 602
 #define _UNPACK_SEQUENCE_TWO_TUPLE 603
+#define _UNPACK_SEQUENCE_UNIQUE_THREE_TUPLE 604
+#define _UNPACK_SEQUENCE_UNIQUE_TUPLE 605
+#define _UNPACK_SEQUENCE_UNIQUE_TWO_TUPLE 606
 #define _WITH_EXCEPT_START WITH_EXCEPT_START
-#define _YIELD_VALUE 604
-#define MAX_UOP_ID 604
-#define _BINARY_OP_r23 605
-#define _BINARY_OP_ADD_FLOAT_r03 606
-#define _BINARY_OP_ADD_FLOAT_r13 607
-#define _BINARY_OP_ADD_FLOAT_r23 608
-#define _BINARY_OP_ADD_INT_r03 609
-#define _BINARY_OP_ADD_INT_r13 610
-#define _BINARY_OP_ADD_INT_r23 611
-#define _BINARY_OP_ADD_UNICODE_r03 612
-#define _BINARY_OP_ADD_UNICODE_r13 613
-#define _BINARY_OP_ADD_UNICODE_r23 614
-#define _BINARY_OP_EXTEND_r23 615
-#define _BINARY_OP_INPLACE_ADD_UNICODE_r21 616
-#define _BINARY_OP_MULTIPLY_FLOAT_r03 617
-#define _BINARY_OP_MULTIPLY_FLOAT_r13 618
-#define _BINARY_OP_MULTIPLY_FLOAT_r23 619
-#define _BINARY_OP_MULTIPLY_INT_r03 620
-#define _BINARY_OP_MULTIPLY_INT_r13 621
-#define _BINARY_OP_MULTIPLY_INT_r23 622
-#define _BINARY_OP_SUBSCR_CHECK_FUNC_r23 623
-#define _BINARY_OP_SUBSCR_DICT_r23 624
-#define _BINARY_OP_SUBSCR_INIT_CALL_r01 625
-#define _BINARY_OP_SUBSCR_INIT_CALL_r11 626
-#define _BINARY_OP_SUBSCR_INIT_CALL_r21 627
-#define _BINARY_OP_SUBSCR_INIT_CALL_r31 628
-#define _BINARY_OP_SUBSCR_LIST_INT_r23 629
-#define _BINARY_OP_SUBSCR_LIST_SLICE_r23 630
-#define _BINARY_OP_SUBSCR_STR_INT_r23 631
-#define _BINARY_OP_SUBSCR_TUPLE_INT_r03 632
-#define _BINARY_OP_SUBSCR_TUPLE_INT_r13 633
-#define _BINARY_OP_SUBSCR_TUPLE_INT_r23 634
-#define _BINARY_OP_SUBSCR_USTR_INT_r23 635
-#define _BINARY_OP_SUBTRACT_FLOAT_r03 636
-#define _BINARY_OP_SUBTRACT_FLOAT_r13 637
-#define _BINARY_OP_SUBTRACT_FLOAT_r23 638
-#define _BINARY_OP_SUBTRACT_INT_r03 639
-#define _BINARY_OP_SUBTRACT_INT_r13 640
-#define _BINARY_OP_SUBTRACT_INT_r23 641
-#define _BINARY_SLICE_r31 642
-#define _BUILD_INTERPOLATION_r01 643
-#define _BUILD_LIST_r01 644
-#define _BUILD_MAP_r01 645
-#define _BUILD_SET_r01 646
-#define _BUILD_SLICE_r01 647
-#define _BUILD_STRING_r01 648
-#define _BUILD_TEMPLATE_r21 649
-#define _BUILD_TUPLE_r01 650
-#define _CALL_BUILTIN_CLASS_r01 651
-#define _CALL_BUILTIN_FAST_r01 652
-#define _CALL_BUILTIN_FAST_WITH_KEYWORDS_r01 653
-#define _CALL_BUILTIN_O_r03 654
-#define _CALL_FUNCTION_EX_NON_PY_GENERAL_r31 655
-#define _CALL_INTRINSIC_1_r12 656
-#define _CALL_INTRINSIC_2_r21 657
-#define _CALL_ISINSTANCE_r31 658
-#define _CALL_KW_NON_PY_r11 659
-#define _CALL_LEN_r33 660
-#define _CALL_LIST_APPEND_r03 661
-#define _CALL_LIST_APPEND_r13 662
-#define _CALL_LIST_APPEND_r23 663
-#define _CALL_LIST_APPEND_r33 664
-#define _CALL_METHOD_DESCRIPTOR_FAST_r01 665
-#define _CALL_METHOD_DESCRIPTOR_FAST_WITH_KEYWORDS_r01 666
-#define _CALL_METHOD_DESCRIPTOR_NOARGS_r01 667
-#define _CALL_METHOD_DESCRIPTOR_O_r03 668
-#define _CALL_NON_PY_GENERAL_r01 669
-#define _CALL_STR_1_r32 670
-#define _CALL_TUPLE_1_r32 671
-#define _CALL_TYPE_1_r02 672
-#define _CALL_TYPE_1_r12 673
-#define _CALL_TYPE_1_r22 674
-#define _CALL_TYPE_1_r32 675
-#define _CHECK_AND_ALLOCATE_OBJECT_r00 676
-#define _CHECK_ATTR_CLASS_r01 677
-#define _CHECK_ATTR_CLASS_r11 678
-#define _CHECK_ATTR_CLASS_r22 679
-#define _CHECK_ATTR_CLASS_r33 680
-#define _CHECK_ATTR_METHOD_LAZY_DICT_r01 681
-#define _CHECK_ATTR_METHOD_LAZY_DICT_r11 682
-#define _CHECK_ATTR_METHOD_LAZY_DICT_r22 683
-#define _CHECK_ATTR_METHOD_LAZY_DICT_r33 684
-#define _CHECK_CALL_BOUND_METHOD_EXACT_ARGS_r00 685
-#define _CHECK_EG_MATCH_r22 686
-#define _CHECK_EXC_MATCH_r22 687
-#define _CHECK_FUNCTION_EXACT_ARGS_r00 688
-#define _CHECK_FUNCTION_VERSION_r00 689
-#define _CHECK_FUNCTION_VERSION_INLINE_r00 690
-#define _CHECK_FUNCTION_VERSION_INLINE_r11 691
-#define _CHECK_FUNCTION_VERSION_INLINE_r22 692
-#define _CHECK_FUNCTION_VERSION_INLINE_r33 693
-#define _CHECK_FUNCTION_VERSION_KW_r11 694
-#define _CHECK_IS_NOT_PY_CALLABLE_r00 695
-#define _CHECK_IS_NOT_PY_CALLABLE_EX_r03 696
-#define _CHECK_IS_NOT_PY_CALLABLE_EX_r13 697
-#define _CHECK_IS_NOT_PY_CALLABLE_EX_r23 698
-#define _CHECK_IS_NOT_PY_CALLABLE_EX_r33 699
-#define _CHECK_IS_NOT_PY_CALLABLE_KW_r11 700
-#define _CHECK_IS_PY_CALLABLE_EX_r03 701
-#define _CHECK_IS_PY_CALLABLE_EX_r13 702
-#define _CHECK_IS_PY_CALLABLE_EX_r23 703
-#define _CHECK_IS_PY_CALLABLE_EX_r33 704
-#define _CHECK_MANAGED_OBJECT_HAS_VALUES_r01 705
-#define _CHECK_MANAGED_OBJECT_HAS_VALUES_r11 706
-#define _CHECK_MANAGED_OBJECT_HAS_VALUES_r22 707
-#define _CHECK_MANAGED_OBJECT_HAS_VALUES_r33 708
-#define _CHECK_METHOD_VERSION_r00 709
-#define _CHECK_METHOD_VERSION_KW_r11 710
-#define _CHECK_PEP_523_r00 711
-#define _CHECK_PEP_523_r11 712
-#define _CHECK_PEP_523_r22 713
-#define _CHECK_PEP_523_r33 714
-#define _CHECK_PERIODIC_r00 715
-#define _CHECK_PERIODIC_AT_END_r00 716
-#define _CHECK_PERIODIC_IF_NOT_YIELD_FROM_r00 717
-#define _CHECK_RECURSION_REMAINING_r00 718
-#define _CHECK_RECURSION_REMAINING_r11 719
-#define _CHECK_RECURSION_REMAINING_r22 720
-#define _CHECK_RECURSION_REMAINING_r33 721
-#define _CHECK_STACK_SPACE_r00 722
-#define _CHECK_STACK_SPACE_OPERAND_r00 723
-#define _CHECK_STACK_SPACE_OPERAND_r11 724
-#define _CHECK_STACK_SPACE_OPERAND_r22 725
-#define _CHECK_STACK_SPACE_OPERAND_r33 726
-#define _CHECK_VALIDITY_r00 727
-#define _CHECK_VALIDITY_r11 728
-#define _CHECK_VALIDITY_r22 729
-#define _CHECK_VALIDITY_r33 730
-#define _COLD_DYNAMIC_EXIT_r00 731
-#define _COLD_EXIT_r00 732
-#define _COMPARE_OP_r21 733
-#define _COMPARE_OP_FLOAT_r03 734
-#define _COMPARE_OP_FLOAT_r13 735
-#define _COMPARE_OP_FLOAT_r23 736
-#define _COMPARE_OP_INT_r23 737
-#define _COMPARE_OP_STR_r23 738
-#define _CONTAINS_OP_r23 739
-#define _CONTAINS_OP_DICT_r23 740
-#define _CONTAINS_OP_SET_r23 741
-#define _CONVERT_VALUE_r11 742
-#define _COPY_r01 743
-#define _COPY_1_r02 744
-#define _COPY_1_r12 745
-#define _COPY_1_r23 746
-#define _COPY_2_r03 747
-#define _COPY_2_r13 748
-#define _COPY_2_r23 749
-#define _COPY_3_r03 750
-#define _COPY_3_r13 751
-#define _COPY_3_r23 752
-#define _COPY_3_r33 753
-#define _COPY_FREE_VARS_r00 754
-#define _COPY_FREE_VARS_r11 755
-#define _COPY_FREE_VARS_r22 756
-#define _COPY_FREE_VARS_r33 757
-#define _CREATE_INIT_FRAME_r01 758
-#define _DELETE_ATTR_r10 759
-#define _DELETE_DEREF_r00 760
-#define _DELETE_FAST_r00 761
-#define _DELETE_GLOBAL_r00 762
-#define _DELETE_NAME_r00 763
-#define _DELETE_SUBSCR_r20 764
-#define _DEOPT_r00 765
-#define _DEOPT_r10 766
-#define _DEOPT_r20 767
-#define _DEOPT_r30 768
-#define _DICT_MERGE_r10 769
-#define _DICT_UPDATE_r10 770
-#define _DO_CALL_r01 771
-#define _DO_CALL_FUNCTION_EX_r31 772
-#define _DO_CALL_KW_r11 773
-#define _DYNAMIC_EXIT_r00 774
-#define _DYNAMIC_EXIT_r10 775
-#define _DYNAMIC_EXIT_r20 776
-#define _DYNAMIC_EXIT_r30 777
-#define _END_FOR_r10 778
-#define _END_SEND_r31 779
-#define _ERROR_POP_N_r00 780
-#define _EXIT_INIT_CHECK_r10 781
-#define _EXIT_TRACE_r00 782
-#define _EXIT_TRACE_r10 783
-#define _EXIT_TRACE_r20 784
-#define _EXIT_TRACE_r30 785
-#define _EXPAND_METHOD_r00 786
-#define _EXPAND_METHOD_KW_r11 787
-#define _FATAL_ERROR_r00 788
-#define _FATAL_ERROR_r11 789
-#define _FATAL_ERROR_r22 790
-#define _FATAL_ERROR_r33 791
-#define _FORMAT_SIMPLE_r11 792
-#define _FORMAT_WITH_SPEC_r21 793
-#define _FOR_ITER_r23 794
-#define _FOR_ITER_GEN_FRAME_r03 795
-#define _FOR_ITER_GEN_FRAME_r13 796
-#define _FOR_ITER_GEN_FRAME_r23 797
-#define _FOR_ITER_TIER_TWO_r23 798
-#define _GET_AITER_r11 799
-#define _GET_ANEXT_r12 800
-#define _GET_AWAITABLE_r11 801
-#define _GET_ITER_r12 802
-#define _GET_LEN_r12 803
-#define _GUARD_BINARY_OP_EXTEND_r22 804
-#define _GUARD_BINARY_OP_SUBSCR_TUPLE_INT_BOUNDS_r02 805
-#define _GUARD_BINARY_OP_SUBSCR_TUPLE_INT_BOUNDS_r12 806
-#define _GUARD_BINARY_OP_SUBSCR_TUPLE_INT_BOUNDS_r22 807
-#define _GUARD_BINARY_OP_SUBSCR_TUPLE_INT_BOUNDS_r33 808
-#define _GUARD_BIT_IS_SET_POP_r00 809
-#define _GUARD_BIT_IS_SET_POP_r10 810
-#define _GUARD_BIT_IS_SET_POP_r21 811
-#define _GUARD_BIT_IS_SET_POP_r32 812
-#define _GUARD_BIT_IS_SET_POP_4_r00 813
-#define _GUARD_BIT_IS_SET_POP_4_r10 814
-#define _GUARD_BIT_IS_SET_POP_4_r21 815
-#define _GUARD_BIT_IS_SET_POP_4_r32 816
-#define _GUARD_BIT_IS_SET_POP_5_r00 817
-#define _GUARD_BIT_IS_SET_POP_5_r10 818
-#define _GUARD_BIT_IS_SET_POP_5_r21 819
-#define _GUARD_BIT_IS_SET_POP_5_r32 820
-#define _GUARD_BIT_IS_SET_POP_6_r00 821
-#define _GUARD_BIT_IS_SET_POP_6_r10 822
-#define _GUARD_BIT_IS_SET_POP_6_r21 823
-#define _GUARD_BIT_IS_SET_POP_6_r32 824
-#define _GUARD_BIT_IS_SET_POP_7_r00 825
-#define _GUARD_BIT_IS_SET_POP_7_r10 826
-#define _GUARD_BIT_IS_SET_POP_7_r21 827
-#define _GUARD_BIT_IS_SET_POP_7_r32 828
-#define _GUARD_BIT_IS_UNSET_POP_r00 829
-#define _GUARD_BIT_IS_UNSET_POP_r10 830
-#define _GUARD_BIT_IS_UNSET_POP_r21 831
-#define _GUARD_BIT_IS_UNSET_POP_r32 832
-#define _GUARD_BIT_IS_UNSET_POP_4_r00 833
-#define _GUARD_BIT_IS_UNSET_POP_4_r10 834
-#define _GUARD_BIT_IS_UNSET_POP_4_r21 835
-#define _GUARD_BIT_IS_UNSET_POP_4_r32 836
-#define _GUARD_BIT_IS_UNSET_POP_5_r00 837
-#define _GUARD_BIT_IS_UNSET_POP_5_r10 838
-#define _GUARD_BIT_IS_UNSET_POP_5_r21 839
-#define _GUARD_BIT_IS_UNSET_POP_5_r32 840
-#define _GUARD_BIT_IS_UNSET_POP_6_r00 841
-#define _GUARD_BIT_IS_UNSET_POP_6_r10 842
-#define _GUARD_BIT_IS_UNSET_POP_6_r21 843
-#define _GUARD_BIT_IS_UNSET_POP_6_r32 844
-#define _GUARD_BIT_IS_UNSET_POP_7_r00 845
-#define _GUARD_BIT_IS_UNSET_POP_7_r10 846
-#define _GUARD_BIT_IS_UNSET_POP_7_r21 847
-#define _GUARD_BIT_IS_UNSET_POP_7_r32 848
-#define _GUARD_CALLABLE_ISINSTANCE_r03 849
-#define _GUARD_CALLABLE_ISINSTANCE_r13 850
-#define _GUARD_CALLABLE_ISINSTANCE_r23 851
-#define _GUARD_CALLABLE_ISINSTANCE_r33 852
-#define _GUARD_CALLABLE_LEN_r03 853
-#define _GUARD_CALLABLE_LEN_r13 854
-#define _GUARD_CALLABLE_LEN_r23 855
-#define _GUARD_CALLABLE_LEN_r33 856
-#define _GUARD_CALLABLE_LIST_APPEND_r03 857
-#define _GUARD_CALLABLE_LIST_APPEND_r13 858
-#define _GUARD_CALLABLE_LIST_APPEND_r23 859
-#define _GUARD_CALLABLE_LIST_APPEND_r33 860
-#define _GUARD_CALLABLE_STR_1_r03 861
-#define _GUARD_CALLABLE_STR_1_r13 862
-#define _GUARD_CALLABLE_STR_1_r23 863
-#define _GUARD_CALLABLE_STR_1_r33 864
-#define _GUARD_CALLABLE_TUPLE_1_r03 865
-#define _GUARD_CALLABLE_TUPLE_1_r13 866
-#define _GUARD_CALLABLE_TUPLE_1_r23 867
-#define _GUARD_CALLABLE_TUPLE_1_r33 868
-#define _GUARD_CALLABLE_TYPE_1_r03 869
-#define _GUARD_CALLABLE_TYPE_1_r13 870
-#define _GUARD_CALLABLE_TYPE_1_r23 871
-#define _GUARD_CALLABLE_TYPE_1_r33 872
-#define _GUARD_CODE_VERSION_RETURN_GENERATOR_r00 873
-#define _GUARD_CODE_VERSION_RETURN_GENERATOR_r11 874
-#define _GUARD_CODE_VERSION_RETURN_GENERATOR_r22 875
-#define _GUARD_CODE_VERSION_RETURN_GENERATOR_r33 876
-#define _GUARD_CODE_VERSION_RETURN_VALUE_r00 877
-#define _GUARD_CODE_VERSION_RETURN_VALUE_r11 878
-#define _GUARD_CODE_VERSION_RETURN_VALUE_r22 879
-#define _GUARD_CODE_VERSION_RETURN_VALUE_r33 880
-#define _GUARD_CODE_VERSION_YIELD_VALUE_r00 881
-#define _GUARD_CODE_VERSION_YIELD_VALUE_r11 882
-#define _GUARD_CODE_VERSION_YIELD_VALUE_r22 883
-#define _GUARD_CODE_VERSION_YIELD_VALUE_r33 884
-#define _GUARD_CODE_VERSION__PUSH_FRAME_r00 885
-#define _GUARD_CODE_VERSION__PUSH_FRAME_r11 886
-#define _GUARD_CODE_VERSION__PUSH_FRAME_r22 887
-#define _GUARD_CODE_VERSION__PUSH_FRAME_r33 888
-#define _GUARD_DORV_NO_DICT_r01 889
-#define _GUARD_DORV_NO_DICT_r11 890
-#define _GUARD_DORV_NO_DICT_r22 891
-#define _GUARD_DORV_NO_DICT_r33 892
-#define _GUARD_DORV_VALUES_INST_ATTR_FROM_DICT_r01 893
-#define _GUARD_DORV_VALUES_INST_ATTR_FROM_DICT_r11 894
-#define _GUARD_DORV_VALUES_INST_ATTR_FROM_DICT_r22 895
-#define _GUARD_DORV_VALUES_INST_ATTR_FROM_DICT_r33 896
-#define _GUARD_GLOBALS_VERSION_r00 897
-#define _GUARD_GLOBALS_VERSION_r11 898
-#define _GUARD_GLOBALS_VERSION_r22 899
-#define _GUARD_GLOBALS_VERSION_r33 900
-#define _GUARD_IP_RETURN_GENERATOR_r00 901
-#define _GUARD_IP_RETURN_GENERATOR_r11 902
-#define _GUARD_IP_RETURN_GENERATOR_r22 903
-#define _GUARD_IP_RETURN_GENERATOR_r33 904
-#define _GUARD_IP_RETURN_VALUE_r00 905
-#define _GUARD_IP_RETURN_VALUE_r11 906
-#define _GUARD_IP_RETURN_VALUE_r22 907
-#define _GUARD_IP_RETURN_VALUE_r33 908
-#define _GUARD_IP_YIELD_VALUE_r00 909
-#define _GUARD_IP_YIELD_VALUE_r11 910
-#define _GUARD_IP_YIELD_VALUE_r22 911
-#define _GUARD_IP_YIELD_VALUE_r33 912
-#define _GUARD_IP__PUSH_FRAME_r00 913
-#define _GUARD_IP__PUSH_FRAME_r11 914
-#define _GUARD_IP__PUSH_FRAME_r22 915
-#define _GUARD_IP__PUSH_FRAME_r33 916
-#define _GUARD_IS_FALSE_POP_r00 917
-#define _GUARD_IS_FALSE_POP_r10 918
-#define _GUARD_IS_FALSE_POP_r21 919
-#define _GUARD_IS_FALSE_POP_r32 920
-#define _GUARD_IS_NONE_POP_r00 921
-#define _GUARD_IS_NONE_POP_r10 922
-#define _GUARD_IS_NONE_POP_r21 923
-#define _GUARD_IS_NONE_POP_r32 924
-#define _GUARD_IS_NOT_NONE_POP_r10 925
-#define _GUARD_IS_TRUE_POP_r00 926
-#define _GUARD_IS_TRUE_POP_r10 927
-#define _GUARD_IS_TRUE_POP_r21 928
-#define _GUARD_IS_TRUE_POP_r32 929
-#define _GUARD_KEYS_VERSION_r01 930
-#define _GUARD_KEYS_VERSION_r11 931
-#define _GUARD_KEYS_VERSION_r22 932
-#define _GUARD_KEYS_VERSION_r33 933
-#define _GUARD_NOS_ANY_DICT_r02 934
-#define _GUARD_NOS_ANY_DICT_r12 935
-#define _GUARD_NOS_ANY_DICT_r22 936
-#define _GUARD_NOS_ANY_DICT_r33 937
-#define _GUARD_NOS_COMPACT_ASCII_r02 938
-#define _GUARD_NOS_COMPACT_ASCII_r12 939
-#define _GUARD_NOS_COMPACT_ASCII_r22 940
-#define _GUARD_NOS_COMPACT_ASCII_r33 941
-#define _GUARD_NOS_DICT_r02 942
-#define _GUARD_NOS_DICT_r12 943
-#define _GUARD_NOS_DICT_r22 944
-#define _GUARD_NOS_DICT_r33 945
-#define _GUARD_NOS_FLOAT_r02 946
-#define _GUARD_NOS_FLOAT_r12 947
-#define _GUARD_NOS_FLOAT_r22 948
-#define _GUARD_NOS_FLOAT_r33 949
-#define _GUARD_NOS_INT_r02 950
-#define _GUARD_NOS_INT_r12 951
-#define _GUARD_NOS_INT_r22 952
-#define _GUARD_NOS_INT_r33 953
-#define _GUARD_NOS_LIST_r02 954
-#define _GUARD_NOS_LIST_r12 955
-#define _GUARD_NOS_LIST_r22 956
-#define _GUARD_NOS_LIST_r33 957
-#define _GUARD_NOS_NOT_NULL_r02 958
-#define _GUARD_NOS_NOT_NULL_r12 959
-#define _GUARD_NOS_NOT_NULL_r22 960
-#define _GUARD_NOS_NOT_NULL_r33 961
-#define _GUARD_NOS_NULL_r02 962
-#define _GUARD_NOS_NULL_r12 963
-#define _GUARD_NOS_NULL_r22 964
-#define _GUARD_NOS_NULL_r33 965
-#define _GUARD_NOS_OVERFLOWED_r02 966
-#define _GUARD_NOS_OVERFLOWED_r12 967
-#define _GUARD_NOS_OVERFLOWED_r22 968
-#define _GUARD_NOS_OVERFLOWED_r33 969
-#define _GUARD_NOS_TUPLE_r02 970
-#define _GUARD_NOS_TUPLE_r12 971
-#define _GUARD_NOS_TUPLE_r22 972
-#define _GUARD_NOS_TUPLE_r33 973
-#define _GUARD_NOS_UNICODE_r02 974
-#define _GUARD_NOS_UNICODE_r12 975
-#define _GUARD_NOS_UNICODE_r22 976
-#define _GUARD_NOS_UNICODE_r33 977
-#define _GUARD_NOT_EXHAUSTED_LIST_r02 978
-#define _GUARD_NOT_EXHAUSTED_LIST_r12 979
-#define _GUARD_NOT_EXHAUSTED_LIST_r22 980
-#define _GUARD_NOT_EXHAUSTED_LIST_r33 981
-#define _GUARD_NOT_EXHAUSTED_RANGE_r02 982
-#define _GUARD_NOT_EXHAUSTED_RANGE_r12 983
-#define _GUARD_NOT_EXHAUSTED_RANGE_r22 984
-#define _GUARD_NOT_EXHAUSTED_RANGE_r33 985
-#define _GUARD_NOT_EXHAUSTED_TUPLE_r02 986
-#define _GUARD_NOT_EXHAUSTED_TUPLE_r12 987
-#define _GUARD_NOT_EXHAUSTED_TUPLE_r22 988
-#define _GUARD_NOT_EXHAUSTED_TUPLE_r33 989
-#define _GUARD_THIRD_NULL_r03 990
-#define _GUARD_THIRD_NULL_r13 991
-#define _GUARD_THIRD_NULL_r23 992
-#define _GUARD_THIRD_NULL_r33 993
-#define _GUARD_TOS_ANY_DICT_r01 994
-#define _GUARD_TOS_ANY_DICT_r11 995
-#define _GUARD_TOS_ANY_DICT_r22 996
-#define _GUARD_TOS_ANY_DICT_r33 997
-#define _GUARD_TOS_ANY_SET_r01 998
-#define _GUARD_TOS_ANY_SET_r11 999
-#define _GUARD_TOS_ANY_SET_r22 1000
-#define _GUARD_TOS_ANY_SET_r33 1001
-#define _GUARD_TOS_DICT_r01 1002
-#define _GUARD_TOS_DICT_r11 1003
-#define _GUARD_TOS_DICT_r22 1004
-#define _GUARD_TOS_DICT_r33 1005
-#define _GUARD_TOS_FLOAT_r01 1006
-#define _GUARD_TOS_FLOAT_r11 1007
-#define _GUARD_TOS_FLOAT_r22 1008
-#define _GUARD_TOS_FLOAT_r33 1009
-#define _GUARD_TOS_FROZENDICT_r01 1010
-#define _GUARD_TOS_FROZENDICT_r11 1011
-#define _GUARD_TOS_FROZENDICT_r22 1012
-#define _GUARD_TOS_FROZENDICT_r33 1013
-#define _GUARD_TOS_FROZENSET_r01 1014
-#define _GUARD_TOS_FROZENSET_r11 1015
-#define _GUARD_TOS_FROZENSET_r22 1016
-#define _GUARD_TOS_FROZENSET_r33 1017
-#define _GUARD_TOS_INT_r01 1018
-#define _GUARD_TOS_INT_r11 1019
-#define _GUARD_TOS_INT_r22 1020
-#define _GUARD_TOS_INT_r33 1021
-#define _GUARD_TOS_LIST_r01 1022
-#define _GUARD_TOS_LIST_r11 1023
-#define _GUARD_TOS_LIST_r22 1024
-#define _GUARD_TOS_LIST_r33 1025
-#define _GUARD_TOS_OVERFLOWED_r01 1026
-#define _GUARD_TOS_OVERFLOWED_r11 1027
-#define _GUARD_TOS_OVERFLOWED_r22 1028
-#define _GUARD_TOS_OVERFLOWED_r33 1029
-#define _GUARD_TOS_SET_r01 1030
-#define _GUARD_TOS_SET_r11 1031
-#define _GUARD_TOS_SET_r22 1032
-#define _GUARD_TOS_SET_r33 1033
-#define _GUARD_TOS_SLICE_r01 1034
-#define _GUARD_TOS_SLICE_r11 1035
-#define _GUARD_TOS_SLICE_r22 1036
-#define _GUARD_TOS_SLICE_r33 1037
-#define _GUARD_TOS_TUPLE_r01 1038
-#define _GUARD_TOS_TUPLE_r11 1039
-#define _GUARD_TOS_TUPLE_r22 1040
-#define _GUARD_TOS_TUPLE_r33 1041
-#define _GUARD_TOS_UNICODE_r01 1042
-#define _GUARD_TOS_UNICODE_r11 1043
-#define _GUARD_TOS_UNICODE_r22 1044
-#define _GUARD_TOS_UNICODE_r33 1045
-#define _GUARD_TYPE_VERSION_r01 1046
-#define _GUARD_TYPE_VERSION_r11 1047
-#define _GUARD_TYPE_VERSION_r22 1048
-#define _GUARD_TYPE_VERSION_r33 1049
-#define _GUARD_TYPE_VERSION_LOCKED_r01 1050
-#define _GUARD_TYPE_VERSION_LOCKED_r11 1051
-#define _GUARD_TYPE_VERSION_LOCKED_r22 1052
-#define _GUARD_TYPE_VERSION_LOCKED_r33 1053
-#define _HANDLE_PENDING_AND_DEOPT_r00 1054
-#define _HANDLE_PENDING_AND_DEOPT_r10 1055
-#define _HANDLE_PENDING_AND_DEOPT_r20 1056
-#define _HANDLE_PENDING_AND_DEOPT_r30 1057
-#define _IMPORT_FROM_r12 1058
-#define _IMPORT_NAME_r21 1059
-#define _INIT_CALL_BOUND_METHOD_EXACT_ARGS_r00 1060
-#define _INIT_CALL_PY_EXACT_ARGS_r01 1061
-#define _INIT_CALL_PY_EXACT_ARGS_0_r01 1062
-#define _INIT_CALL_PY_EXACT_ARGS_1_r01 1063
-#define _INIT_CALL_PY_EXACT_ARGS_2_r01 1064
-#define _INIT_CALL_PY_EXACT_ARGS_3_r01 1065
-#define _INIT_CALL_PY_EXACT_ARGS_4_r01 1066
-#define _INSERT_1_LOAD_CONST_INLINE_r02 1067
-#define _INSERT_1_LOAD_CONST_INLINE_r12 1068
-#define _INSERT_1_LOAD_CONST_INLINE_r23 1069
-#define _INSERT_1_LOAD_CONST_INLINE_BORROW_r02 1070
-#define _INSERT_1_LOAD_CONST_INLINE_BORROW_r12 1071
-#define _INSERT_1_LOAD_CONST_INLINE_BORROW_r23 1072
-#define _INSERT_2_LOAD_CONST_INLINE_BORROW_r03 1073
-#define _INSERT_2_LOAD_CONST_INLINE_BORROW_r13 1074
-#define _INSERT_2_LOAD_CONST_INLINE_BORROW_r23 1075
-#define _INSERT_NULL_r10 1076
-#define _INSTRUMENTED_FOR_ITER_r23 1077
-#define _INSTRUMENTED_INSTRUCTION_r00 1078
-#define _INSTRUMENTED_JUMP_FORWARD_r00 1079
-#define _INSTRUMENTED_JUMP_FORWARD_r11 1080
-#define _INSTRUMENTED_JUMP_FORWARD_r22 1081
-#define _INSTRUMENTED_JUMP_FORWARD_r33 1082
-#define _INSTRUMENTED_LINE_r00 1083
-#define _INSTRUMENTED_NOT_TAKEN_r00 1084
-#define _INSTRUMENTED_NOT_TAKEN_r11 1085
-#define _INSTRUMENTED_NOT_TAKEN_r22 1086
-#define _INSTRUMENTED_NOT_TAKEN_r33 1087
-#define _INSTRUMENTED_POP_JUMP_IF_FALSE_r00 1088
-#define _INSTRUMENTED_POP_JUMP_IF_FALSE_r10 1089
-#define _INSTRUMENTED_POP_JUMP_IF_FALSE_r21 1090
-#define _INSTRUMENTED_POP_JUMP_IF_FALSE_r32 1091
-#define _INSTRUMENTED_POP_JUMP_IF_NONE_r10 1092
-#define _INSTRUMENTED_POP_JUMP_IF_NOT_NONE_r10 1093
-#define _INSTRUMENTED_POP_JUMP_IF_TRUE_r00 1094
-#define _INSTRUMENTED_POP_JUMP_IF_TRUE_r10 1095
-#define _INSTRUMENTED_POP_JUMP_IF_TRUE_r21 1096
-#define _INSTRUMENTED_POP_JUMP_IF_TRUE_r32 1097
-#define _IS_NONE_r11 1098
-#define _IS_OP_r03 1099
-#define _IS_OP_r13 1100
-#define _IS_OP_r23 1101
-#define _ITER_CHECK_LIST_r02 1102
-#define _ITER_CHECK_LIST_r12 1103
-#define _ITER_CHECK_LIST_r22 1104
-#define _ITER_CHECK_LIST_r33 1105
-#define _ITER_CHECK_RANGE_r02 1106
-#define _ITER_CHECK_RANGE_r12 1107
-#define _ITER_CHECK_RANGE_r22 1108
-#define _ITER_CHECK_RANGE_r33 1109
-#define _ITER_CHECK_TUPLE_r02 1110
-#define _ITER_CHECK_TUPLE_r12 1111
-#define _ITER_CHECK_TUPLE_r22 1112
-#define _ITER_CHECK_TUPLE_r33 1113
-#define _ITER_JUMP_LIST_r02 1114
-#define _ITER_JUMP_LIST_r12 1115
-#define _ITER_JUMP_LIST_r22 1116
-#define _ITER_JUMP_LIST_r33 1117
-#define _ITER_JUMP_RANGE_r02 1118
-#define _ITER_JUMP_RANGE_r12 1119
-#define _ITER_JUMP_RANGE_r22 1120
-#define _ITER_JUMP_RANGE_r33 1121
-#define _ITER_JUMP_TUPLE_r02 1122
-#define _ITER_JUMP_TUPLE_r12 1123
-#define _ITER_JUMP_TUPLE_r22 1124
-#define _ITER_JUMP_TUPLE_r33 1125
-#define _ITER_NEXT_LIST_r23 1126
-#define _ITER_NEXT_LIST_TIER_TWO_r23 1127
-#define _ITER_NEXT_RANGE_r03 1128
-#define _ITER_NEXT_RANGE_r13 1129
-#define _ITER_NEXT_RANGE_r23 1130
-#define _ITER_NEXT_TUPLE_r03 1131
-#define _ITER_NEXT_TUPLE_r13 1132
-#define _ITER_NEXT_TUPLE_r23 1133
-#define _JUMP_BACKWARD_NO_INTERRUPT_r00 1134
-#define _JUMP_BACKWARD_NO_INTERRUPT_r11 1135
-#define _JUMP_BACKWARD_NO_INTERRUPT_r22 1136
-#define _JUMP_BACKWARD_NO_INTERRUPT_r33 1137
-#define _JUMP_TO_TOP_r00 1138
-#define _LIST_APPEND_r10 1139
-#define _LIST_EXTEND_r10 1140
-#define _LOAD_ATTR_r10 1141
-#define _LOAD_ATTR_CLASS_r11 1142
-#define _LOAD_ATTR_GETATTRIBUTE_OVERRIDDEN_r11 1143
-#define _LOAD_ATTR_INSTANCE_VALUE_r02 1144
-#define _LOAD_ATTR_INSTANCE_VALUE_r12 1145
-#define _LOAD_ATTR_INSTANCE_VALUE_r23 1146
-#define _LOAD_ATTR_METHOD_LAZY_DICT_r02 1147
-#define _LOAD_ATTR_METHOD_LAZY_DICT_r12 1148
-#define _LOAD_ATTR_METHOD_LAZY_DICT_r23 1149
-#define _LOAD_ATTR_METHOD_NO_DICT_r02 1150
-#define _LOAD_ATTR_METHOD_NO_DICT_r12 1151
-#define _LOAD_ATTR_METHOD_NO_DICT_r23 1152
-#define _LOAD_ATTR_METHOD_WITH_VALUES_r02 1153
-#define _LOAD_ATTR_METHOD_WITH_VALUES_r12 1154
-#define _LOAD_ATTR_METHOD_WITH_VALUES_r23 1155
-#define _LOAD_ATTR_MODULE_r12 1156
-#define _LOAD_ATTR_NONDESCRIPTOR_NO_DICT_r11 1157
-#define _LOAD_ATTR_NONDESCRIPTOR_WITH_VALUES_r11 1158
-#define _LOAD_ATTR_PROPERTY_FRAME_r11 1159
-#define _LOAD_ATTR_SLOT_r02 1160
-#define _LOAD_ATTR_SLOT_r12 1161
-#define _LOAD_ATTR_SLOT_r23 1162
-#define _LOAD_ATTR_WITH_HINT_r12 1163
-#define _LOAD_BUILD_CLASS_r01 1164
-#define _LOAD_BYTECODE_r00 1165
-#define _LOAD_COMMON_CONSTANT_r01 1166
-#define _LOAD_COMMON_CONSTANT_r12 1167
-#define _LOAD_COMMON_CONSTANT_r23 1168
-#define _LOAD_CONST_r01 1169
-#define _LOAD_CONST_r12 1170
-#define _LOAD_CONST_r23 1171
-#define _LOAD_CONST_INLINE_r01 1172
-#define _LOAD_CONST_INLINE_r12 1173
-#define _LOAD_CONST_INLINE_r23 1174
-#define _LOAD_CONST_INLINE_BORROW_r01 1175
-#define _LOAD_CONST_INLINE_BORROW_r12 1176
-#define _LOAD_CONST_INLINE_BORROW_r23 1177
-#define _LOAD_CONST_UNDER_INLINE_r02 1178
-#define _LOAD_CONST_UNDER_INLINE_r12 1179
-#define _LOAD_CONST_UNDER_INLINE_r23 1180
-#define _LOAD_CONST_UNDER_INLINE_BORROW_r02 1181
-#define _LOAD_CONST_UNDER_INLINE_BORROW_r12 1182
-#define _LOAD_CONST_UNDER_INLINE_BORROW_r23 1183
-#define _LOAD_DEREF_r01 1184
-#define _LOAD_FAST_r01 1185
-#define _LOAD_FAST_r12 1186
-#define _LOAD_FAST_r23 1187
-#define _LOAD_FAST_0_r01 1188
-#define _LOAD_FAST_0_r12 1189
-#define _LOAD_FAST_0_r23 1190
-#define _LOAD_FAST_1_r01 1191
-#define _LOAD_FAST_1_r12 1192
-#define _LOAD_FAST_1_r23 1193
-#define _LOAD_FAST_2_r01 1194
-#define _LOAD_FAST_2_r12 1195
-#define _LOAD_FAST_2_r23 1196
-#define _LOAD_FAST_3_r01 1197
-#define _LOAD_FAST_3_r12 1198
-#define _LOAD_FAST_3_r23 1199
-#define _LOAD_FAST_4_r01 1200
-#define _LOAD_FAST_4_r12 1201
-#define _LOAD_FAST_4_r23 1202
-#define _LOAD_FAST_5_r01 1203
-#define _LOAD_FAST_5_r12 1204
-#define _LOAD_FAST_5_r23 1205
-#define _LOAD_FAST_6_r01 1206
-#define _LOAD_FAST_6_r12 1207
-#define _LOAD_FAST_6_r23 1208
-#define _LOAD_FAST_7_r01 1209
-#define _LOAD_FAST_7_r12 1210
-#define _LOAD_FAST_7_r23 1211
-#define _LOAD_FAST_AND_CLEAR_r01 1212
-#define _LOAD_FAST_AND_CLEAR_r12 1213
-#define _LOAD_FAST_AND_CLEAR_r23 1214
-#define _LOAD_FAST_BORROW_r01 1215
-#define _LOAD_FAST_BORROW_r12 1216
-#define _LOAD_FAST_BORROW_r23 1217
-#define _LOAD_FAST_BORROW_0_r01 1218
-#define _LOAD_FAST_BORROW_0_r12 1219
-#define _LOAD_FAST_BORROW_0_r23 1220
-#define _LOAD_FAST_BORROW_1_r01 1221
-#define _LOAD_FAST_BORROW_1_r12 1222
-#define _LOAD_FAST_BORROW_1_r23 1223
-#define _LOAD_FAST_BORROW_2_r01 1224
-#define _LOAD_FAST_BORROW_2_r12 1225
-#define _LOAD_FAST_BORROW_2_r23 1226
-#define _LOAD_FAST_BORROW_3_r01 1227
-#define _LOAD_FAST_BORROW_3_r12 1228
-#define _LOAD_FAST_BORROW_3_r23 1229
-#define _LOAD_FAST_BORROW_4_r01 1230
-#define _LOAD_FAST_BORROW_4_r12 1231
-#define _LOAD_FAST_BORROW_4_r23 1232
-#define _LOAD_FAST_BORROW_5_r01 1233
-#define _LOAD_FAST_BORROW_5_r12 1234
-#define _LOAD_FAST_BORROW_5_r23 1235
-#define _LOAD_FAST_BORROW_6_r01 1236
-#define _LOAD_FAST_BORROW_6_r12 1237
-#define _LOAD_FAST_BORROW_6_r23 1238
-#define _LOAD_FAST_BORROW_7_r01 1239
-#define _LOAD_FAST_BORROW_7_r12 1240
-#define _LOAD_FAST_BORROW_7_r23 1241
-#define _LOAD_FAST_BORROW_LOAD_FAST_BORROW_r02 1242
-#define _LOAD_FAST_BORROW_LOAD_FAST_BORROW_r13 1243
-#define _LOAD_FAST_CHECK_r01 1244
-#define _LOAD_FAST_CHECK_r12 1245
-#define _LOAD_FAST_CHECK_r23 1246
-#define _LOAD_FAST_LOAD_FAST_r02 1247
-#define _LOAD_FAST_LOAD_FAST_r13 1248
-#define _LOAD_FROM_DICT_OR_DEREF_r11 1249
-#define _LOAD_FROM_DICT_OR_GLOBALS_r11 1250
-#define _LOAD_GLOBAL_r00 1251
-#define _LOAD_GLOBAL_BUILTINS_r01 1252
-#define _LOAD_GLOBAL_MODULE_r01 1253
-#define _LOAD_LOCALS_r01 1254
-#define _LOAD_LOCALS_r12 1255
-#define _LOAD_LOCALS_r23 1256
-#define _LOAD_NAME_r01 1257
-#define _LOAD_SMALL_INT_r01 1258
-#define _LOAD_SMALL_INT_r12 1259
-#define _LOAD_SMALL_INT_r23 1260
-#define _LOAD_SMALL_INT_0_r01 1261
-#define _LOAD_SMALL_INT_0_r12 1262
-#define _LOAD_SMALL_INT_0_r23 1263
-#define _LOAD_SMALL_INT_1_r01 1264
-#define _LOAD_SMALL_INT_1_r12 1265
-#define _LOAD_SMALL_INT_1_r23 1266
-#define _LOAD_SMALL_INT_2_r01 1267
-#define _LOAD_SMALL_INT_2_r12 1268
-#define _LOAD_SMALL_INT_2_r23 1269
-#define _LOAD_SMALL_INT_3_r01 1270
-#define _LOAD_SMALL_INT_3_r12 1271
-#define _LOAD_SMALL_INT_3_r23 1272
-#define _LOAD_SPECIAL_r00 1273
-#define _LOAD_SUPER_ATTR_ATTR_r31 1274
-#define _LOAD_SUPER_ATTR_METHOD_r32 1275
-#define _LOCK_OBJECT_r01 1276
-#define _LOCK_OBJECT_r11 1277
-#define _LOCK_OBJECT_r22 1278
-#define _LOCK_OBJECT_r33 1279
-#define _MAKE_CALLARGS_A_TUPLE_r33 1280
-#define _MAKE_CELL_r00 1281
-#define _MAKE_FUNCTION_r11 1282
-#define _MAKE_HEAP_SAFE_r01 1283
-#define _MAKE_HEAP_SAFE_r11 1284
-#define _MAKE_HEAP_SAFE_r22 1285
-#define _MAKE_HEAP_SAFE_r33 1286
-#define _MAKE_WARM_r00 1287
-#define _MAKE_WARM_r11 1288
-#define _MAKE_WARM_r22 1289
-#define _MAKE_WARM_r33 1290
-#define _MAP_ADD_r20 1291
-#define _MATCH_CLASS_r33 1292
-#define _MATCH_KEYS_r23 1293
-#define _MATCH_MAPPING_r02 1294
-#define _MATCH_MAPPING_r12 1295
-#define _MATCH_MAPPING_r23 1296
-#define _MATCH_SEQUENCE_r02 1297
-#define _MATCH_SEQUENCE_r12 1298
-#define _MATCH_SEQUENCE_r23 1299
-#define _MAYBE_EXPAND_METHOD_r00 1300
-#define _MAYBE_EXPAND_METHOD_KW_r11 1301
-#define _MONITOR_CALL_r00 1302
-#define _MONITOR_CALL_KW_r11 1303
-#define _MONITOR_JUMP_BACKWARD_r00 1304
-#define _MONITOR_JUMP_BACKWARD_r11 1305
-#define _MONITOR_JUMP_BACKWARD_r22 1306
-#define _MONITOR_JUMP_BACKWARD_r33 1307
-#define _MONITOR_RESUME_r00 1308
-#define _NOP_r00 1309
-#define _NOP_r11 1310
-#define _NOP_r22 1311
-#define _NOP_r33 1312
-#define _POP_CALL_r20 1313
-#define _POP_CALL_LOAD_CONST_INLINE_BORROW_r21 1314
-#define _POP_CALL_ONE_r30 1315
-#define _POP_CALL_ONE_LOAD_CONST_INLINE_BORROW_r31 1316
-#define _POP_CALL_TWO_r30 1317
-#define _POP_CALL_TWO_LOAD_CONST_INLINE_BORROW_r31 1318
-#define _POP_EXCEPT_r10 1319
-#define _POP_ITER_r20 1320
-#define _POP_JUMP_IF_FALSE_r00 1321
-#define _POP_JUMP_IF_FALSE_r10 1322
-#define _POP_JUMP_IF_FALSE_r21 1323
-#define _POP_JUMP_IF_FALSE_r32 1324
-#define _POP_JUMP_IF_TRUE_r00 1325
-#define _POP_JUMP_IF_TRUE_r10 1326
-#define _POP_JUMP_IF_TRUE_r21 1327
-#define _POP_JUMP_IF_TRUE_r32 1328
-#define _POP_TOP_r10 1329
-#define _POP_TOP_FLOAT_r00 1330
-#define _POP_TOP_FLOAT_r10 1331
-#define _POP_TOP_FLOAT_r21 1332
-#define _POP_TOP_FLOAT_r32 1333
-#define _POP_TOP_INT_r00 1334
-#define _POP_TOP_INT_r10 1335
-#define _POP_TOP_INT_r21 1336
-#define _POP_TOP_INT_r32 1337
-#define _POP_TOP_LOAD_CONST_INLINE_r11 1338
-#define _POP_TOP_LOAD_CONST_INLINE_BORROW_r11 1339
-#define _POP_TOP_NOP_r00 1340
-#define _POP_TOP_NOP_r10 1341
-#define _POP_TOP_NOP_r21 1342
-#define _POP_TOP_NOP_r32 1343
-#define _POP_TOP_UNICODE_r00 1344
-#define _POP_TOP_UNICODE_r10 1345
-#define _POP_TOP_UNICODE_r21 1346
-#define _POP_TOP_UNICODE_r32 1347
-#define _POP_TWO_r20 1348
-#define _POP_TWO_LOAD_CONST_INLINE_BORROW_r21 1349
-#define _PUSH_EXC_INFO_r02 1350
-#define _PUSH_EXC_INFO_r12 1351
-#define _PUSH_EXC_INFO_r23 1352
-#define _PUSH_FRAME_r10 1353
-#define _PUSH_NULL_r01 1354
-#define _PUSH_NULL_r12 1355
-#define _PUSH_NULL_r23 1356
-#define _PUSH_NULL_CONDITIONAL_r00 1357
-#define _PY_FRAME_EX_r31 1358
-#define _PY_FRAME_GENERAL_r01 1359
-#define _PY_FRAME_KW_r11 1360
-#define _REPLACE_WITH_TRUE_r02 1361
-#define _REPLACE_WITH_TRUE_r12 1362
-#define _REPLACE_WITH_TRUE_r23 1363
-#define _RESUME_CHECK_r00 1364
-#define _RESUME_CHECK_r11 1365
-#define _RESUME_CHECK_r22 1366
-#define _RESUME_CHECK_r33 1367
-#define _RETURN_GENERATOR_r01 1368
-#define _RETURN_VALUE_r11 1369
-#define _SAVE_RETURN_OFFSET_r00 1370
-#define _SAVE_RETURN_OFFSET_r11 1371
-#define _SAVE_RETURN_OFFSET_r22 1372
-#define _SAVE_RETURN_OFFSET_r33 1373
-#define _SEND_r33 1374
-#define _SEND_GEN_FRAME_r33 1375
-#define _SETUP_ANNOTATIONS_r00 1376
-#define _SET_ADD_r10 1377
-#define _SET_FUNCTION_ATTRIBUTE_r01 1378
-#define _SET_FUNCTION_ATTRIBUTE_r11 1379
-#define _SET_FUNCTION_ATTRIBUTE_r21 1380
-#define _SET_FUNCTION_ATTRIBUTE_r32 1381
-#define _SET_IP_r00 1382
-#define _SET_IP_r11 1383
-#define _SET_IP_r22 1384
-#define _SET_IP_r33 1385
-#define _SET_UPDATE_r11 1386
-#define _SHUFFLE_2_LOAD_CONST_INLINE_BORROW_r02 1387
-#define _SHUFFLE_2_LOAD_CONST_INLINE_BORROW_r12 1388
-#define _SHUFFLE_2_LOAD_CONST_INLINE_BORROW_r22 1389
-#define _SHUFFLE_2_LOAD_CONST_INLINE_BORROW_r32 1390
-#define _SHUFFLE_3_LOAD_CONST_INLINE_BORROW_r03 1391
-#define _SHUFFLE_3_LOAD_CONST_INLINE_BORROW_r13 1392
-#define _SHUFFLE_3_LOAD_CONST_INLINE_BORROW_r23 1393
-#define _SHUFFLE_3_LOAD_CONST_INLINE_BORROW_r33 1394
-#define _SPILL_OR_RELOAD_r01 1395
-#define _SPILL_OR_RELOAD_r02 1396
-#define _SPILL_OR_RELOAD_r03 1397
-#define _SPILL_OR_RELOAD_r10 1398
-#define _SPILL_OR_RELOAD_r12 1399
-#define _SPILL_OR_RELOAD_r13 1400
-#define _SPILL_OR_RELOAD_r20 1401
-#define _SPILL_OR_RELOAD_r21 1402
-#define _SPILL_OR_RELOAD_r23 1403
-#define _SPILL_OR_RELOAD_r30 1404
-#define _SPILL_OR_RELOAD_r31 1405
-#define _SPILL_OR_RELOAD_r32 1406
-#define _START_EXECUTOR_r00 1407
-#define _STORE_ATTR_r20 1408
-#define _STORE_ATTR_INSTANCE_VALUE_r21 1409
-#define _STORE_ATTR_SLOT_r21 1410
-#define _STORE_ATTR_WITH_HINT_r21 1411
-#define _STORE_DEREF_r10 1412
-#define _STORE_FAST_LOAD_FAST_r11 1413
-#define _STORE_FAST_STORE_FAST_r20 1414
-#define _STORE_GLOBAL_r10 1415
-#define _STORE_NAME_r10 1416
-#define _STORE_SLICE_r30 1417
-#define _STORE_SUBSCR_r30 1418
-#define _STORE_SUBSCR_DICT_r31 1419
-#define _STORE_SUBSCR_LIST_INT_r32 1420
-#define _SWAP_r11 1421
-#define _SWAP_2_r02 1422
-#define _SWAP_2_r12 1423
-#define _SWAP_2_r22 1424
-#define _SWAP_2_r33 1425
-#define _SWAP_3_r03 1426
-#define _SWAP_3_r13 1427
-#define _SWAP_3_r23 1428
-#define _SWAP_3_r33 1429
-#define _SWAP_FAST_r01 1430
-#define _SWAP_FAST_r11 1431
-#define _SWAP_FAST_r22 1432
-#define _SWAP_FAST_r33 1433
-#define _SWAP_FAST_0_r01 1434
-#define _SWAP_FAST_0_r11 1435
-#define _SWAP_FAST_0_r22 1436
-#define _SWAP_FAST_0_r33 1437
-#define _SWAP_FAST_1_r01 1438
-#define _SWAP_FAST_1_r11 1439
-#define _SWAP_FAST_1_r22 1440
-#define _SWAP_FAST_1_r33 1441
-#define _SWAP_FAST_2_r01 1442
-#define _SWAP_FAST_2_r11 1443
-#define _SWAP_FAST_2_r22 1444
-#define _SWAP_FAST_2_r33 1445
-#define _SWAP_FAST_3_r01 1446
-#define _SWAP_FAST_3_r11 1447
-#define _SWAP_FAST_3_r22 1448
-#define _SWAP_FAST_3_r33 1449
-#define _SWAP_FAST_4_r01 1450
-#define _SWAP_FAST_4_r11 1451
-#define _SWAP_FAST_4_r22 1452
-#define _SWAP_FAST_4_r33 1453
-#define _SWAP_FAST_5_r01 1454
-#define _SWAP_FAST_5_r11 1455
-#define _SWAP_FAST_5_r22 1456
-#define _SWAP_FAST_5_r33 1457
-#define _SWAP_FAST_6_r01 1458
-#define _SWAP_FAST_6_r11 1459
-#define _SWAP_FAST_6_r22 1460
-#define _SWAP_FAST_6_r33 1461
-#define _SWAP_FAST_7_r01 1462
-#define _SWAP_FAST_7_r11 1463
-#define _SWAP_FAST_7_r22 1464
-#define _SWAP_FAST_7_r33 1465
-#define _TIER2_RESUME_CHECK_r00 1466
-#define _TIER2_RESUME_CHECK_r11 1467
-#define _TIER2_RESUME_CHECK_r22 1468
-#define _TIER2_RESUME_CHECK_r33 1469
-#define _TO_BOOL_r11 1470
-#define _TO_BOOL_BOOL_r01 1471
-#define _TO_BOOL_BOOL_r11 1472
-#define _TO_BOOL_BOOL_r22 1473
-#define _TO_BOOL_BOOL_r33 1474
-#define _TO_BOOL_INT_r02 1475
-#define _TO_BOOL_INT_r12 1476
-#define _TO_BOOL_INT_r23 1477
-#define _TO_BOOL_LIST_r02 1478
-#define _TO_BOOL_LIST_r12 1479
-#define _TO_BOOL_LIST_r23 1480
-#define _TO_BOOL_NONE_r01 1481
-#define _TO_BOOL_NONE_r11 1482
-#define _TO_BOOL_NONE_r22 1483
-#define _TO_BOOL_NONE_r33 1484
-#define _TO_BOOL_STR_r02 1485
-#define _TO_BOOL_STR_r12 1486
-#define _TO_BOOL_STR_r23 1487
-#define _TRACE_RECORD_r00 1488
-#define _UNARY_INVERT_r12 1489
-#define _UNARY_NEGATIVE_r12 1490
-#define _UNARY_NOT_r01 1491
-#define _UNARY_NOT_r11 1492
-#define _UNARY_NOT_r22 1493
-#define _UNARY_NOT_r33 1494
-#define _UNPACK_EX_r10 1495
-#define _UNPACK_SEQUENCE_r10 1496
-#define _UNPACK_SEQUENCE_LIST_r10 1497
-#define _UNPACK_SEQUENCE_TUPLE_r10 1498
-#define _UNPACK_SEQUENCE_TWO_TUPLE_r12 1499
-#define _WITH_EXCEPT_START_r33 1500
-#define _YIELD_VALUE_r11 1501
-#define MAX_UOP_REGS_ID 1501
+#define _YIELD_VALUE 607
+#define MAX_UOP_ID 607
+#define _BINARY_OP_r23 608
+#define _BINARY_OP_ADD_FLOAT_r03 609
+#define _BINARY_OP_ADD_FLOAT_r13 610
+#define _BINARY_OP_ADD_FLOAT_r23 611
+#define _BINARY_OP_ADD_INT_r03 612
+#define _BINARY_OP_ADD_INT_r13 613
+#define _BINARY_OP_ADD_INT_r23 614
+#define _BINARY_OP_ADD_UNICODE_r03 615
+#define _BINARY_OP_ADD_UNICODE_r13 616
+#define _BINARY_OP_ADD_UNICODE_r23 617
+#define _BINARY_OP_EXTEND_r23 618
+#define _BINARY_OP_INPLACE_ADD_UNICODE_r21 619
+#define _BINARY_OP_MULTIPLY_FLOAT_r03 620
+#define _BINARY_OP_MULTIPLY_FLOAT_r13 621
+#define _BINARY_OP_MULTIPLY_FLOAT_r23 622
+#define _BINARY_OP_MULTIPLY_INT_r03 623
+#define _BINARY_OP_MULTIPLY_INT_r13 624
+#define _BINARY_OP_MULTIPLY_INT_r23 625
+#define _BINARY_OP_SUBSCR_CHECK_FUNC_r23 626
+#define _BINARY_OP_SUBSCR_DICT_r23 627
+#define _BINARY_OP_SUBSCR_INIT_CALL_r01 628
+#define _BINARY_OP_SUBSCR_INIT_CALL_r11 629
+#define _BINARY_OP_SUBSCR_INIT_CALL_r21 630
+#define _BINARY_OP_SUBSCR_INIT_CALL_r31 631
+#define _BINARY_OP_SUBSCR_LIST_INT_r23 632
+#define _BINARY_OP_SUBSCR_LIST_SLICE_r23 633
+#define _BINARY_OP_SUBSCR_STR_INT_r23 634
+#define _BINARY_OP_SUBSCR_TUPLE_INT_r03 635
+#define _BINARY_OP_SUBSCR_TUPLE_INT_r13 636
+#define _BINARY_OP_SUBSCR_TUPLE_INT_r23 637
+#define _BINARY_OP_SUBSCR_USTR_INT_r23 638
+#define _BINARY_OP_SUBTRACT_FLOAT_r03 639
+#define _BINARY_OP_SUBTRACT_FLOAT_r13 640
+#define _BINARY_OP_SUBTRACT_FLOAT_r23 641
+#define _BINARY_OP_SUBTRACT_INT_r03 642
+#define _BINARY_OP_SUBTRACT_INT_r13 643
+#define _BINARY_OP_SUBTRACT_INT_r23 644
+#define _BINARY_SLICE_r31 645
+#define _BUILD_INTERPOLATION_r01 646
+#define _BUILD_LIST_r01 647
+#define _BUILD_MAP_r01 648
+#define _BUILD_SET_r01 649
+#define _BUILD_SLICE_r01 650
+#define _BUILD_STRING_r01 651
+#define _BUILD_TEMPLATE_r21 652
+#define _BUILD_TUPLE_r01 653
+#define _CALL_BUILTIN_CLASS_r01 654
+#define _CALL_BUILTIN_FAST_r01 655
+#define _CALL_BUILTIN_FAST_WITH_KEYWORDS_r01 656
+#define _CALL_BUILTIN_O_r03 657
+#define _CALL_FUNCTION_EX_NON_PY_GENERAL_r31 658
+#define _CALL_INTRINSIC_1_r12 659
+#define _CALL_INTRINSIC_2_r21 660
+#define _CALL_ISINSTANCE_r31 661
+#define _CALL_KW_NON_PY_r11 662
+#define _CALL_LEN_r33 663
+#define _CALL_LIST_APPEND_r03 664
+#define _CALL_LIST_APPEND_r13 665
+#define _CALL_LIST_APPEND_r23 666
+#define _CALL_LIST_APPEND_r33 667
+#define _CALL_METHOD_DESCRIPTOR_FAST_r01 668
+#define _CALL_METHOD_DESCRIPTOR_FAST_WITH_KEYWORDS_r01 669
+#define _CALL_METHOD_DESCRIPTOR_NOARGS_r01 670
+#define _CALL_METHOD_DESCRIPTOR_O_r03 671
+#define _CALL_NON_PY_GENERAL_r01 672
+#define _CALL_STR_1_r32 673
+#define _CALL_TUPLE_1_r32 674
+#define _CALL_TYPE_1_r02 675
+#define _CALL_TYPE_1_r12 676
+#define _CALL_TYPE_1_r22 677
+#define _CALL_TYPE_1_r32 678
+#define _CHECK_AND_ALLOCATE_OBJECT_r00 679
+#define _CHECK_ATTR_CLASS_r01 680
+#define _CHECK_ATTR_CLASS_r11 681
+#define _CHECK_ATTR_CLASS_r22 682
+#define _CHECK_ATTR_CLASS_r33 683
+#define _CHECK_ATTR_METHOD_LAZY_DICT_r01 684
+#define _CHECK_ATTR_METHOD_LAZY_DICT_r11 685
+#define _CHECK_ATTR_METHOD_LAZY_DICT_r22 686
+#define _CHECK_ATTR_METHOD_LAZY_DICT_r33 687
+#define _CHECK_CALL_BOUND_METHOD_EXACT_ARGS_r00 688
+#define _CHECK_EG_MATCH_r22 689
+#define _CHECK_EXC_MATCH_r22 690
+#define _CHECK_FUNCTION_EXACT_ARGS_r00 691
+#define _CHECK_FUNCTION_VERSION_r00 692
+#define _CHECK_FUNCTION_VERSION_INLINE_r00 693
+#define _CHECK_FUNCTION_VERSION_INLINE_r11 694
+#define _CHECK_FUNCTION_VERSION_INLINE_r22 695
+#define _CHECK_FUNCTION_VERSION_INLINE_r33 696
+#define _CHECK_FUNCTION_VERSION_KW_r11 697
+#define _CHECK_IS_NOT_PY_CALLABLE_r00 698
+#define _CHECK_IS_NOT_PY_CALLABLE_EX_r03 699
+#define _CHECK_IS_NOT_PY_CALLABLE_EX_r13 700
+#define _CHECK_IS_NOT_PY_CALLABLE_EX_r23 701
+#define _CHECK_IS_NOT_PY_CALLABLE_EX_r33 702
+#define _CHECK_IS_NOT_PY_CALLABLE_KW_r11 703
+#define _CHECK_IS_PY_CALLABLE_EX_r03 704
+#define _CHECK_IS_PY_CALLABLE_EX_r13 705
+#define _CHECK_IS_PY_CALLABLE_EX_r23 706
+#define _CHECK_IS_PY_CALLABLE_EX_r33 707
+#define _CHECK_MANAGED_OBJECT_HAS_VALUES_r01 708
+#define _CHECK_MANAGED_OBJECT_HAS_VALUES_r11 709
+#define _CHECK_MANAGED_OBJECT_HAS_VALUES_r22 710
+#define _CHECK_MANAGED_OBJECT_HAS_VALUES_r33 711
+#define _CHECK_METHOD_VERSION_r00 712
+#define _CHECK_METHOD_VERSION_KW_r11 713
+#define _CHECK_PEP_523_r00 714
+#define _CHECK_PEP_523_r11 715
+#define _CHECK_PEP_523_r22 716
+#define _CHECK_PEP_523_r33 717
+#define _CHECK_PERIODIC_r00 718
+#define _CHECK_PERIODIC_AT_END_r00 719
+#define _CHECK_PERIODIC_IF_NOT_YIELD_FROM_r00 720
+#define _CHECK_RECURSION_REMAINING_r00 721
+#define _CHECK_RECURSION_REMAINING_r11 722
+#define _CHECK_RECURSION_REMAINING_r22 723
+#define _CHECK_RECURSION_REMAINING_r33 724
+#define _CHECK_STACK_SPACE_r00 725
+#define _CHECK_STACK_SPACE_OPERAND_r00 726
+#define _CHECK_STACK_SPACE_OPERAND_r11 727
+#define _CHECK_STACK_SPACE_OPERAND_r22 728
+#define _CHECK_STACK_SPACE_OPERAND_r33 729
+#define _CHECK_VALIDITY_r00 730
+#define _CHECK_VALIDITY_r11 731
+#define _CHECK_VALIDITY_r22 732
+#define _CHECK_VALIDITY_r33 733
+#define _COLD_DYNAMIC_EXIT_r00 734
+#define _COLD_EXIT_r00 735
+#define _COMPARE_OP_r21 736
+#define _COMPARE_OP_FLOAT_r03 737
+#define _COMPARE_OP_FLOAT_r13 738
+#define _COMPARE_OP_FLOAT_r23 739
+#define _COMPARE_OP_INT_r23 740
+#define _COMPARE_OP_STR_r23 741
+#define _CONTAINS_OP_r23 742
+#define _CONTAINS_OP_DICT_r23 743
+#define _CONTAINS_OP_SET_r23 744
+#define _CONVERT_VALUE_r11 745
+#define _COPY_r01 746
+#define _COPY_1_r02 747
+#define _COPY_1_r12 748
+#define _COPY_1_r23 749
+#define _COPY_2_r03 750
+#define _COPY_2_r13 751
+#define _COPY_2_r23 752
+#define _COPY_3_r03 753
+#define _COPY_3_r13 754
+#define _COPY_3_r23 755
+#define _COPY_3_r33 756
+#define _COPY_FREE_VARS_r00 757
+#define _COPY_FREE_VARS_r11 758
+#define _COPY_FREE_VARS_r22 759
+#define _COPY_FREE_VARS_r33 760
+#define _CREATE_INIT_FRAME_r01 761
+#define _DELETE_ATTR_r10 762
+#define _DELETE_DEREF_r00 763
+#define _DELETE_FAST_r00 764
+#define _DELETE_GLOBAL_r00 765
+#define _DELETE_NAME_r00 766
+#define _DELETE_SUBSCR_r20 767
+#define _DEOPT_r00 768
+#define _DEOPT_r10 769
+#define _DEOPT_r20 770
+#define _DEOPT_r30 771
+#define _DICT_MERGE_r10 772
+#define _DICT_UPDATE_r10 773
+#define _DO_CALL_r01 774
+#define _DO_CALL_FUNCTION_EX_r31 775
+#define _DO_CALL_KW_r11 776
+#define _DYNAMIC_EXIT_r00 777
+#define _DYNAMIC_EXIT_r10 778
+#define _DYNAMIC_EXIT_r20 779
+#define _DYNAMIC_EXIT_r30 780
+#define _END_FOR_r10 781
+#define _END_SEND_r31 782
+#define _ERROR_POP_N_r00 783
+#define _EXIT_INIT_CHECK_r10 784
+#define _EXIT_TRACE_r00 785
+#define _EXIT_TRACE_r10 786
+#define _EXIT_TRACE_r20 787
+#define _EXIT_TRACE_r30 788
+#define _EXPAND_METHOD_r00 789
+#define _EXPAND_METHOD_KW_r11 790
+#define _FATAL_ERROR_r00 791
+#define _FATAL_ERROR_r11 792
+#define _FATAL_ERROR_r22 793
+#define _FATAL_ERROR_r33 794
+#define _FORMAT_SIMPLE_r11 795
+#define _FORMAT_WITH_SPEC_r21 796
+#define _FOR_ITER_r23 797
+#define _FOR_ITER_GEN_FRAME_r03 798
+#define _FOR_ITER_GEN_FRAME_r13 799
+#define _FOR_ITER_GEN_FRAME_r23 800
+#define _FOR_ITER_TIER_TWO_r23 801
+#define _GET_AITER_r11 802
+#define _GET_ANEXT_r12 803
+#define _GET_AWAITABLE_r11 804
+#define _GET_ITER_r12 805
+#define _GET_LEN_r12 806
+#define _GUARD_BINARY_OP_EXTEND_r22 807
+#define _GUARD_BINARY_OP_SUBSCR_TUPLE_INT_BOUNDS_r02 808
+#define _GUARD_BINARY_OP_SUBSCR_TUPLE_INT_BOUNDS_r12 809
+#define _GUARD_BINARY_OP_SUBSCR_TUPLE_INT_BOUNDS_r22 810
+#define _GUARD_BINARY_OP_SUBSCR_TUPLE_INT_BOUNDS_r33 811
+#define _GUARD_BIT_IS_SET_POP_r00 812
+#define _GUARD_BIT_IS_SET_POP_r10 813
+#define _GUARD_BIT_IS_SET_POP_r21 814
+#define _GUARD_BIT_IS_SET_POP_r32 815
+#define _GUARD_BIT_IS_SET_POP_4_r00 816
+#define _GUARD_BIT_IS_SET_POP_4_r10 817
+#define _GUARD_BIT_IS_SET_POP_4_r21 818
+#define _GUARD_BIT_IS_SET_POP_4_r32 819
+#define _GUARD_BIT_IS_SET_POP_5_r00 820
+#define _GUARD_BIT_IS_SET_POP_5_r10 821
+#define _GUARD_BIT_IS_SET_POP_5_r21 822
+#define _GUARD_BIT_IS_SET_POP_5_r32 823
+#define _GUARD_BIT_IS_SET_POP_6_r00 824
+#define _GUARD_BIT_IS_SET_POP_6_r10 825
+#define _GUARD_BIT_IS_SET_POP_6_r21 826
+#define _GUARD_BIT_IS_SET_POP_6_r32 827
+#define _GUARD_BIT_IS_SET_POP_7_r00 828
+#define _GUARD_BIT_IS_SET_POP_7_r10 829
+#define _GUARD_BIT_IS_SET_POP_7_r21 830
+#define _GUARD_BIT_IS_SET_POP_7_r32 831
+#define _GUARD_BIT_IS_UNSET_POP_r00 832
+#define _GUARD_BIT_IS_UNSET_POP_r10 833
+#define _GUARD_BIT_IS_UNSET_POP_r21 834
+#define _GUARD_BIT_IS_UNSET_POP_r32 835
+#define _GUARD_BIT_IS_UNSET_POP_4_r00 836
+#define _GUARD_BIT_IS_UNSET_POP_4_r10 837
+#define _GUARD_BIT_IS_UNSET_POP_4_r21 838
+#define _GUARD_BIT_IS_UNSET_POP_4_r32 839
+#define _GUARD_BIT_IS_UNSET_POP_5_r00 840
+#define _GUARD_BIT_IS_UNSET_POP_5_r10 841
+#define _GUARD_BIT_IS_UNSET_POP_5_r21 842
+#define _GUARD_BIT_IS_UNSET_POP_5_r32 843
+#define _GUARD_BIT_IS_UNSET_POP_6_r00 844
+#define _GUARD_BIT_IS_UNSET_POP_6_r10 845
+#define _GUARD_BIT_IS_UNSET_POP_6_r21 846
+#define _GUARD_BIT_IS_UNSET_POP_6_r32 847
+#define _GUARD_BIT_IS_UNSET_POP_7_r00 848
+#define _GUARD_BIT_IS_UNSET_POP_7_r10 849
+#define _GUARD_BIT_IS_UNSET_POP_7_r21 850
+#define _GUARD_BIT_IS_UNSET_POP_7_r32 851
+#define _GUARD_CALLABLE_ISINSTANCE_r03 852
+#define _GUARD_CALLABLE_ISINSTANCE_r13 853
+#define _GUARD_CALLABLE_ISINSTANCE_r23 854
+#define _GUARD_CALLABLE_ISINSTANCE_r33 855
+#define _GUARD_CALLABLE_LEN_r03 856
+#define _GUARD_CALLABLE_LEN_r13 857
+#define _GUARD_CALLABLE_LEN_r23 858
+#define _GUARD_CALLABLE_LEN_r33 859
+#define _GUARD_CALLABLE_LIST_APPEND_r03 860
+#define _GUARD_CALLABLE_LIST_APPEND_r13 861
+#define _GUARD_CALLABLE_LIST_APPEND_r23 862
+#define _GUARD_CALLABLE_LIST_APPEND_r33 863
+#define _GUARD_CALLABLE_STR_1_r03 864
+#define _GUARD_CALLABLE_STR_1_r13 865
+#define _GUARD_CALLABLE_STR_1_r23 866
+#define _GUARD_CALLABLE_STR_1_r33 867
+#define _GUARD_CALLABLE_TUPLE_1_r03 868
+#define _GUARD_CALLABLE_TUPLE_1_r13 869
+#define _GUARD_CALLABLE_TUPLE_1_r23 870
+#define _GUARD_CALLABLE_TUPLE_1_r33 871
+#define _GUARD_CALLABLE_TYPE_1_r03 872
+#define _GUARD_CALLABLE_TYPE_1_r13 873
+#define _GUARD_CALLABLE_TYPE_1_r23 874
+#define _GUARD_CALLABLE_TYPE_1_r33 875
+#define _GUARD_CODE_VERSION_RETURN_GENERATOR_r00 876
+#define _GUARD_CODE_VERSION_RETURN_GENERATOR_r11 877
+#define _GUARD_CODE_VERSION_RETURN_GENERATOR_r22 878
+#define _GUARD_CODE_VERSION_RETURN_GENERATOR_r33 879
+#define _GUARD_CODE_VERSION_RETURN_VALUE_r00 880
+#define _GUARD_CODE_VERSION_RETURN_VALUE_r11 881
+#define _GUARD_CODE_VERSION_RETURN_VALUE_r22 882
+#define _GUARD_CODE_VERSION_RETURN_VALUE_r33 883
+#define _GUARD_CODE_VERSION_YIELD_VALUE_r00 884
+#define _GUARD_CODE_VERSION_YIELD_VALUE_r11 885
+#define _GUARD_CODE_VERSION_YIELD_VALUE_r22 886
+#define _GUARD_CODE_VERSION_YIELD_VALUE_r33 887
+#define _GUARD_CODE_VERSION__PUSH_FRAME_r00 888
+#define _GUARD_CODE_VERSION__PUSH_FRAME_r11 889
+#define _GUARD_CODE_VERSION__PUSH_FRAME_r22 890
+#define _GUARD_CODE_VERSION__PUSH_FRAME_r33 891
+#define _GUARD_DORV_NO_DICT_r01 892
+#define _GUARD_DORV_NO_DICT_r11 893
+#define _GUARD_DORV_NO_DICT_r22 894
+#define _GUARD_DORV_NO_DICT_r33 895
+#define _GUARD_DORV_VALUES_INST_ATTR_FROM_DICT_r01 896
+#define _GUARD_DORV_VALUES_INST_ATTR_FROM_DICT_r11 897
+#define _GUARD_DORV_VALUES_INST_ATTR_FROM_DICT_r22 898
+#define _GUARD_DORV_VALUES_INST_ATTR_FROM_DICT_r33 899
+#define _GUARD_GLOBALS_VERSION_r00 900
+#define _GUARD_GLOBALS_VERSION_r11 901
+#define _GUARD_GLOBALS_VERSION_r22 902
+#define _GUARD_GLOBALS_VERSION_r33 903
+#define _GUARD_IP_RETURN_GENERATOR_r00 904
+#define _GUARD_IP_RETURN_GENERATOR_r11 905
+#define _GUARD_IP_RETURN_GENERATOR_r22 906
+#define _GUARD_IP_RETURN_GENERATOR_r33 907
+#define _GUARD_IP_RETURN_VALUE_r00 908
+#define _GUARD_IP_RETURN_VALUE_r11 909
+#define _GUARD_IP_RETURN_VALUE_r22 910
+#define _GUARD_IP_RETURN_VALUE_r33 911
+#define _GUARD_IP_YIELD_VALUE_r00 912
+#define _GUARD_IP_YIELD_VALUE_r11 913
+#define _GUARD_IP_YIELD_VALUE_r22 914
+#define _GUARD_IP_YIELD_VALUE_r33 915
+#define _GUARD_IP__PUSH_FRAME_r00 916
+#define _GUARD_IP__PUSH_FRAME_r11 917
+#define _GUARD_IP__PUSH_FRAME_r22 918
+#define _GUARD_IP__PUSH_FRAME_r33 919
+#define _GUARD_IS_FALSE_POP_r00 920
+#define _GUARD_IS_FALSE_POP_r10 921
+#define _GUARD_IS_FALSE_POP_r21 922
+#define _GUARD_IS_FALSE_POP_r32 923
+#define _GUARD_IS_NONE_POP_r00 924
+#define _GUARD_IS_NONE_POP_r10 925
+#define _GUARD_IS_NONE_POP_r21 926
+#define _GUARD_IS_NONE_POP_r32 927
+#define _GUARD_IS_NOT_NONE_POP_r10 928
+#define _GUARD_IS_TRUE_POP_r00 929
+#define _GUARD_IS_TRUE_POP_r10 930
+#define _GUARD_IS_TRUE_POP_r21 931
+#define _GUARD_IS_TRUE_POP_r32 932
+#define _GUARD_KEYS_VERSION_r01 933
+#define _GUARD_KEYS_VERSION_r11 934
+#define _GUARD_KEYS_VERSION_r22 935
+#define _GUARD_KEYS_VERSION_r33 936
+#define _GUARD_NOS_ANY_DICT_r02 937
+#define _GUARD_NOS_ANY_DICT_r12 938
+#define _GUARD_NOS_ANY_DICT_r22 939
+#define _GUARD_NOS_ANY_DICT_r33 940
+#define _GUARD_NOS_COMPACT_ASCII_r02 941
+#define _GUARD_NOS_COMPACT_ASCII_r12 942
+#define _GUARD_NOS_COMPACT_ASCII_r22 943
+#define _GUARD_NOS_COMPACT_ASCII_r33 944
+#define _GUARD_NOS_DICT_r02 945
+#define _GUARD_NOS_DICT_r12 946
+#define _GUARD_NOS_DICT_r22 947
+#define _GUARD_NOS_DICT_r33 948
+#define _GUARD_NOS_FLOAT_r02 949
+#define _GUARD_NOS_FLOAT_r12 950
+#define _GUARD_NOS_FLOAT_r22 951
+#define _GUARD_NOS_FLOAT_r33 952
+#define _GUARD_NOS_INT_r02 953
+#define _GUARD_NOS_INT_r12 954
+#define _GUARD_NOS_INT_r22 955
+#define _GUARD_NOS_INT_r33 956
+#define _GUARD_NOS_LIST_r02 957
+#define _GUARD_NOS_LIST_r12 958
+#define _GUARD_NOS_LIST_r22 959
+#define _GUARD_NOS_LIST_r33 960
+#define _GUARD_NOS_NOT_NULL_r02 961
+#define _GUARD_NOS_NOT_NULL_r12 962
+#define _GUARD_NOS_NOT_NULL_r22 963
+#define _GUARD_NOS_NOT_NULL_r33 964
+#define _GUARD_NOS_NULL_r02 965
+#define _GUARD_NOS_NULL_r12 966
+#define _GUARD_NOS_NULL_r22 967
+#define _GUARD_NOS_NULL_r33 968
+#define _GUARD_NOS_OVERFLOWED_r02 969
+#define _GUARD_NOS_OVERFLOWED_r12 970
+#define _GUARD_NOS_OVERFLOWED_r22 971
+#define _GUARD_NOS_OVERFLOWED_r33 972
+#define _GUARD_NOS_TUPLE_r02 973
+#define _GUARD_NOS_TUPLE_r12 974
+#define _GUARD_NOS_TUPLE_r22 975
+#define _GUARD_NOS_TUPLE_r33 976
+#define _GUARD_NOS_UNICODE_r02 977
+#define _GUARD_NOS_UNICODE_r12 978
+#define _GUARD_NOS_UNICODE_r22 979
+#define _GUARD_NOS_UNICODE_r33 980
+#define _GUARD_NOT_EXHAUSTED_LIST_r02 981
+#define _GUARD_NOT_EXHAUSTED_LIST_r12 982
+#define _GUARD_NOT_EXHAUSTED_LIST_r22 983
+#define _GUARD_NOT_EXHAUSTED_LIST_r33 984
+#define _GUARD_NOT_EXHAUSTED_RANGE_r02 985
+#define _GUARD_NOT_EXHAUSTED_RANGE_r12 986
+#define _GUARD_NOT_EXHAUSTED_RANGE_r22 987
+#define _GUARD_NOT_EXHAUSTED_RANGE_r33 988
+#define _GUARD_NOT_EXHAUSTED_TUPLE_r02 989
+#define _GUARD_NOT_EXHAUSTED_TUPLE_r12 990
+#define _GUARD_NOT_EXHAUSTED_TUPLE_r22 991
+#define _GUARD_NOT_EXHAUSTED_TUPLE_r33 992
+#define _GUARD_THIRD_NULL_r03 993
+#define _GUARD_THIRD_NULL_r13 994
+#define _GUARD_THIRD_NULL_r23 995
+#define _GUARD_THIRD_NULL_r33 996
+#define _GUARD_TOS_ANY_DICT_r01 997
+#define _GUARD_TOS_ANY_DICT_r11 998
+#define _GUARD_TOS_ANY_DICT_r22 999
+#define _GUARD_TOS_ANY_DICT_r33 1000
+#define _GUARD_TOS_ANY_SET_r01 1001
+#define _GUARD_TOS_ANY_SET_r11 1002
+#define _GUARD_TOS_ANY_SET_r22 1003
+#define _GUARD_TOS_ANY_SET_r33 1004
+#define _GUARD_TOS_DICT_r01 1005
+#define _GUARD_TOS_DICT_r11 1006
+#define _GUARD_TOS_DICT_r22 1007
+#define _GUARD_TOS_DICT_r33 1008
+#define _GUARD_TOS_FLOAT_r01 1009
+#define _GUARD_TOS_FLOAT_r11 1010
+#define _GUARD_TOS_FLOAT_r22 1011
+#define _GUARD_TOS_FLOAT_r33 1012
+#define _GUARD_TOS_FROZENDICT_r01 1013
+#define _GUARD_TOS_FROZENDICT_r11 1014
+#define _GUARD_TOS_FROZENDICT_r22 1015
+#define _GUARD_TOS_FROZENDICT_r33 1016
+#define _GUARD_TOS_FROZENSET_r01 1017
+#define _GUARD_TOS_FROZENSET_r11 1018
+#define _GUARD_TOS_FROZENSET_r22 1019
+#define _GUARD_TOS_FROZENSET_r33 1020
+#define _GUARD_TOS_INT_r01 1021
+#define _GUARD_TOS_INT_r11 1022
+#define _GUARD_TOS_INT_r22 1023
+#define _GUARD_TOS_INT_r33 1024
+#define _GUARD_TOS_LIST_r01 1025
+#define _GUARD_TOS_LIST_r11 1026
+#define _GUARD_TOS_LIST_r22 1027
+#define _GUARD_TOS_LIST_r33 1028
+#define _GUARD_TOS_OVERFLOWED_r01 1029
+#define _GUARD_TOS_OVERFLOWED_r11 1030
+#define _GUARD_TOS_OVERFLOWED_r22 1031
+#define _GUARD_TOS_OVERFLOWED_r33 1032
+#define _GUARD_TOS_SET_r01 1033
+#define _GUARD_TOS_SET_r11 1034
+#define _GUARD_TOS_SET_r22 1035
+#define _GUARD_TOS_SET_r33 1036
+#define _GUARD_TOS_SLICE_r01 1037
+#define _GUARD_TOS_SLICE_r11 1038
+#define _GUARD_TOS_SLICE_r22 1039
+#define _GUARD_TOS_SLICE_r33 1040
+#define _GUARD_TOS_TUPLE_r01 1041
+#define _GUARD_TOS_TUPLE_r11 1042
+#define _GUARD_TOS_TUPLE_r22 1043
+#define _GUARD_TOS_TUPLE_r33 1044
+#define _GUARD_TOS_UNICODE_r01 1045
+#define _GUARD_TOS_UNICODE_r11 1046
+#define _GUARD_TOS_UNICODE_r22 1047
+#define _GUARD_TOS_UNICODE_r33 1048
+#define _GUARD_TYPE_VERSION_r01 1049
+#define _GUARD_TYPE_VERSION_r11 1050
+#define _GUARD_TYPE_VERSION_r22 1051
+#define _GUARD_TYPE_VERSION_r33 1052
+#define _GUARD_TYPE_VERSION_LOCKED_r01 1053
+#define _GUARD_TYPE_VERSION_LOCKED_r11 1054
+#define _GUARD_TYPE_VERSION_LOCKED_r22 1055
+#define _GUARD_TYPE_VERSION_LOCKED_r33 1056
+#define _HANDLE_PENDING_AND_DEOPT_r00 1057
+#define _HANDLE_PENDING_AND_DEOPT_r10 1058
+#define _HANDLE_PENDING_AND_DEOPT_r20 1059
+#define _HANDLE_PENDING_AND_DEOPT_r30 1060
+#define _IMPORT_FROM_r12 1061
+#define _IMPORT_NAME_r21 1062
+#define _INIT_CALL_BOUND_METHOD_EXACT_ARGS_r00 1063
+#define _INIT_CALL_PY_EXACT_ARGS_r01 1064
+#define _INIT_CALL_PY_EXACT_ARGS_0_r01 1065
+#define _INIT_CALL_PY_EXACT_ARGS_1_r01 1066
+#define _INIT_CALL_PY_EXACT_ARGS_2_r01 1067
+#define _INIT_CALL_PY_EXACT_ARGS_3_r01 1068
+#define _INIT_CALL_PY_EXACT_ARGS_4_r01 1069
+#define _INSERT_1_LOAD_CONST_INLINE_r02 1070
+#define _INSERT_1_LOAD_CONST_INLINE_r12 1071
+#define _INSERT_1_LOAD_CONST_INLINE_r23 1072
+#define _INSERT_1_LOAD_CONST_INLINE_BORROW_r02 1073
+#define _INSERT_1_LOAD_CONST_INLINE_BORROW_r12 1074
+#define _INSERT_1_LOAD_CONST_INLINE_BORROW_r23 1075
+#define _INSERT_2_LOAD_CONST_INLINE_BORROW_r03 1076
+#define _INSERT_2_LOAD_CONST_INLINE_BORROW_r13 1077
+#define _INSERT_2_LOAD_CONST_INLINE_BORROW_r23 1078
+#define _INSERT_NULL_r10 1079
+#define _INSTRUMENTED_FOR_ITER_r23 1080
+#define _INSTRUMENTED_INSTRUCTION_r00 1081
+#define _INSTRUMENTED_JUMP_FORWARD_r00 1082
+#define _INSTRUMENTED_JUMP_FORWARD_r11 1083
+#define _INSTRUMENTED_JUMP_FORWARD_r22 1084
+#define _INSTRUMENTED_JUMP_FORWARD_r33 1085
+#define _INSTRUMENTED_LINE_r00 1086
+#define _INSTRUMENTED_NOT_TAKEN_r00 1087
+#define _INSTRUMENTED_NOT_TAKEN_r11 1088
+#define _INSTRUMENTED_NOT_TAKEN_r22 1089
+#define _INSTRUMENTED_NOT_TAKEN_r33 1090
+#define _INSTRUMENTED_POP_JUMP_IF_FALSE_r00 1091
+#define _INSTRUMENTED_POP_JUMP_IF_FALSE_r10 1092
+#define _INSTRUMENTED_POP_JUMP_IF_FALSE_r21 1093
+#define _INSTRUMENTED_POP_JUMP_IF_FALSE_r32 1094
+#define _INSTRUMENTED_POP_JUMP_IF_NONE_r10 1095
+#define _INSTRUMENTED_POP_JUMP_IF_NOT_NONE_r10 1096
+#define _INSTRUMENTED_POP_JUMP_IF_TRUE_r00 1097
+#define _INSTRUMENTED_POP_JUMP_IF_TRUE_r10 1098
+#define _INSTRUMENTED_POP_JUMP_IF_TRUE_r21 1099
+#define _INSTRUMENTED_POP_JUMP_IF_TRUE_r32 1100
+#define _IS_NONE_r11 1101
+#define _IS_OP_r03 1102
+#define _IS_OP_r13 1103
+#define _IS_OP_r23 1104
+#define _ITER_CHECK_LIST_r02 1105
+#define _ITER_CHECK_LIST_r12 1106
+#define _ITER_CHECK_LIST_r22 1107
+#define _ITER_CHECK_LIST_r33 1108
+#define _ITER_CHECK_RANGE_r02 1109
+#define _ITER_CHECK_RANGE_r12 1110
+#define _ITER_CHECK_RANGE_r22 1111
+#define _ITER_CHECK_RANGE_r33 1112
+#define _ITER_CHECK_TUPLE_r02 1113
+#define _ITER_CHECK_TUPLE_r12 1114
+#define _ITER_CHECK_TUPLE_r22 1115
+#define _ITER_CHECK_TUPLE_r33 1116
+#define _ITER_JUMP_LIST_r02 1117
+#define _ITER_JUMP_LIST_r12 1118
+#define _ITER_JUMP_LIST_r22 1119
+#define _ITER_JUMP_LIST_r33 1120
+#define _ITER_JUMP_RANGE_r02 1121
+#define _ITER_JUMP_RANGE_r12 1122
+#define _ITER_JUMP_RANGE_r22 1123
+#define _ITER_JUMP_RANGE_r33 1124
+#define _ITER_JUMP_TUPLE_r02 1125
+#define _ITER_JUMP_TUPLE_r12 1126
+#define _ITER_JUMP_TUPLE_r22 1127
+#define _ITER_JUMP_TUPLE_r33 1128
+#define _ITER_NEXT_LIST_r23 1129
+#define _ITER_NEXT_LIST_TIER_TWO_r23 1130
+#define _ITER_NEXT_RANGE_r03 1131
+#define _ITER_NEXT_RANGE_r13 1132
+#define _ITER_NEXT_RANGE_r23 1133
+#define _ITER_NEXT_TUPLE_r03 1134
+#define _ITER_NEXT_TUPLE_r13 1135
+#define _ITER_NEXT_TUPLE_r23 1136
+#define _JUMP_BACKWARD_NO_INTERRUPT_r00 1137
+#define _JUMP_BACKWARD_NO_INTERRUPT_r11 1138
+#define _JUMP_BACKWARD_NO_INTERRUPT_r22 1139
+#define _JUMP_BACKWARD_NO_INTERRUPT_r33 1140
+#define _JUMP_TO_TOP_r00 1141
+#define _LIST_APPEND_r10 1142
+#define _LIST_EXTEND_r10 1143
+#define _LOAD_ATTR_r10 1144
+#define _LOAD_ATTR_CLASS_r11 1145
+#define _LOAD_ATTR_GETATTRIBUTE_OVERRIDDEN_r11 1146
+#define _LOAD_ATTR_INSTANCE_VALUE_r02 1147
+#define _LOAD_ATTR_INSTANCE_VALUE_r12 1148
+#define _LOAD_ATTR_INSTANCE_VALUE_r23 1149
+#define _LOAD_ATTR_METHOD_LAZY_DICT_r02 1150
+#define _LOAD_ATTR_METHOD_LAZY_DICT_r12 1151
+#define _LOAD_ATTR_METHOD_LAZY_DICT_r23 1152
+#define _LOAD_ATTR_METHOD_NO_DICT_r02 1153
+#define _LOAD_ATTR_METHOD_NO_DICT_r12 1154
+#define _LOAD_ATTR_METHOD_NO_DICT_r23 1155
+#define _LOAD_ATTR_METHOD_WITH_VALUES_r02 1156
+#define _LOAD_ATTR_METHOD_WITH_VALUES_r12 1157
+#define _LOAD_ATTR_METHOD_WITH_VALUES_r23 1158
+#define _LOAD_ATTR_MODULE_r12 1159
+#define _LOAD_ATTR_NONDESCRIPTOR_NO_DICT_r11 1160
+#define _LOAD_ATTR_NONDESCRIPTOR_WITH_VALUES_r11 1161
+#define _LOAD_ATTR_PROPERTY_FRAME_r11 1162
+#define _LOAD_ATTR_SLOT_r02 1163
+#define _LOAD_ATTR_SLOT_r12 1164
+#define _LOAD_ATTR_SLOT_r23 1165
+#define _LOAD_ATTR_WITH_HINT_r12 1166
+#define _LOAD_BUILD_CLASS_r01 1167
+#define _LOAD_BYTECODE_r00 1168
+#define _LOAD_COMMON_CONSTANT_r01 1169
+#define _LOAD_COMMON_CONSTANT_r12 1170
+#define _LOAD_COMMON_CONSTANT_r23 1171
+#define _LOAD_CONST_r01 1172
+#define _LOAD_CONST_r12 1173
+#define _LOAD_CONST_r23 1174
+#define _LOAD_CONST_INLINE_r01 1175
+#define _LOAD_CONST_INLINE_r12 1176
+#define _LOAD_CONST_INLINE_r23 1177
+#define _LOAD_CONST_INLINE_BORROW_r01 1178
+#define _LOAD_CONST_INLINE_BORROW_r12 1179
+#define _LOAD_CONST_INLINE_BORROW_r23 1180
+#define _LOAD_CONST_UNDER_INLINE_r02 1181
+#define _LOAD_CONST_UNDER_INLINE_r12 1182
+#define _LOAD_CONST_UNDER_INLINE_r23 1183
+#define _LOAD_CONST_UNDER_INLINE_BORROW_r02 1184
+#define _LOAD_CONST_UNDER_INLINE_BORROW_r12 1185
+#define _LOAD_CONST_UNDER_INLINE_BORROW_r23 1186
+#define _LOAD_DEREF_r01 1187
+#define _LOAD_FAST_r01 1188
+#define _LOAD_FAST_r12 1189
+#define _LOAD_FAST_r23 1190
+#define _LOAD_FAST_0_r01 1191
+#define _LOAD_FAST_0_r12 1192
+#define _LOAD_FAST_0_r23 1193
+#define _LOAD_FAST_1_r01 1194
+#define _LOAD_FAST_1_r12 1195
+#define _LOAD_FAST_1_r23 1196
+#define _LOAD_FAST_2_r01 1197
+#define _LOAD_FAST_2_r12 1198
+#define _LOAD_FAST_2_r23 1199
+#define _LOAD_FAST_3_r01 1200
+#define _LOAD_FAST_3_r12 1201
+#define _LOAD_FAST_3_r23 1202
+#define _LOAD_FAST_4_r01 1203
+#define _LOAD_FAST_4_r12 1204
+#define _LOAD_FAST_4_r23 1205
+#define _LOAD_FAST_5_r01 1206
+#define _LOAD_FAST_5_r12 1207
+#define _LOAD_FAST_5_r23 1208
+#define _LOAD_FAST_6_r01 1209
+#define _LOAD_FAST_6_r12 1210
+#define _LOAD_FAST_6_r23 1211
+#define _LOAD_FAST_7_r01 1212
+#define _LOAD_FAST_7_r12 1213
+#define _LOAD_FAST_7_r23 1214
+#define _LOAD_FAST_AND_CLEAR_r01 1215
+#define _LOAD_FAST_AND_CLEAR_r12 1216
+#define _LOAD_FAST_AND_CLEAR_r23 1217
+#define _LOAD_FAST_BORROW_r01 1218
+#define _LOAD_FAST_BORROW_r12 1219
+#define _LOAD_FAST_BORROW_r23 1220
+#define _LOAD_FAST_BORROW_0_r01 1221
+#define _LOAD_FAST_BORROW_0_r12 1222
+#define _LOAD_FAST_BORROW_0_r23 1223
+#define _LOAD_FAST_BORROW_1_r01 1224
+#define _LOAD_FAST_BORROW_1_r12 1225
+#define _LOAD_FAST_BORROW_1_r23 1226
+#define _LOAD_FAST_BORROW_2_r01 1227
+#define _LOAD_FAST_BORROW_2_r12 1228
+#define _LOAD_FAST_BORROW_2_r23 1229
+#define _LOAD_FAST_BORROW_3_r01 1230
+#define _LOAD_FAST_BORROW_3_r12 1231
+#define _LOAD_FAST_BORROW_3_r23 1232
+#define _LOAD_FAST_BORROW_4_r01 1233
+#define _LOAD_FAST_BORROW_4_r12 1234
+#define _LOAD_FAST_BORROW_4_r23 1235
+#define _LOAD_FAST_BORROW_5_r01 1236
+#define _LOAD_FAST_BORROW_5_r12 1237
+#define _LOAD_FAST_BORROW_5_r23 1238
+#define _LOAD_FAST_BORROW_6_r01 1239
+#define _LOAD_FAST_BORROW_6_r12 1240
+#define _LOAD_FAST_BORROW_6_r23 1241
+#define _LOAD_FAST_BORROW_7_r01 1242
+#define _LOAD_FAST_BORROW_7_r12 1243
+#define _LOAD_FAST_BORROW_7_r23 1244
+#define _LOAD_FAST_BORROW_LOAD_FAST_BORROW_r02 1245
+#define _LOAD_FAST_BORROW_LOAD_FAST_BORROW_r13 1246
+#define _LOAD_FAST_CHECK_r01 1247
+#define _LOAD_FAST_CHECK_r12 1248
+#define _LOAD_FAST_CHECK_r23 1249
+#define _LOAD_FAST_LOAD_FAST_r02 1250
+#define _LOAD_FAST_LOAD_FAST_r13 1251
+#define _LOAD_FROM_DICT_OR_DEREF_r11 1252
+#define _LOAD_FROM_DICT_OR_GLOBALS_r11 1253
+#define _LOAD_GLOBAL_r00 1254
+#define _LOAD_GLOBAL_BUILTINS_r01 1255
+#define _LOAD_GLOBAL_MODULE_r01 1256
+#define _LOAD_LOCALS_r01 1257
+#define _LOAD_LOCALS_r12 1258
+#define _LOAD_LOCALS_r23 1259
+#define _LOAD_NAME_r01 1260
+#define _LOAD_SMALL_INT_r01 1261
+#define _LOAD_SMALL_INT_r12 1262
+#define _LOAD_SMALL_INT_r23 1263
+#define _LOAD_SMALL_INT_0_r01 1264
+#define _LOAD_SMALL_INT_0_r12 1265
+#define _LOAD_SMALL_INT_0_r23 1266
+#define _LOAD_SMALL_INT_1_r01 1267
+#define _LOAD_SMALL_INT_1_r12 1268
+#define _LOAD_SMALL_INT_1_r23 1269
+#define _LOAD_SMALL_INT_2_r01 1270
+#define _LOAD_SMALL_INT_2_r12 1271
+#define _LOAD_SMALL_INT_2_r23 1272
+#define _LOAD_SMALL_INT_3_r01 1273
+#define _LOAD_SMALL_INT_3_r12 1274
+#define _LOAD_SMALL_INT_3_r23 1275
+#define _LOAD_SPECIAL_r00 1276
+#define _LOAD_SUPER_ATTR_ATTR_r31 1277
+#define _LOAD_SUPER_ATTR_METHOD_r32 1278
+#define _LOCK_OBJECT_r01 1279
+#define _LOCK_OBJECT_r11 1280
+#define _LOCK_OBJECT_r22 1281
+#define _LOCK_OBJECT_r33 1282
+#define _MAKE_CALLARGS_A_TUPLE_r33 1283
+#define _MAKE_CELL_r00 1284
+#define _MAKE_FUNCTION_r11 1285
+#define _MAKE_HEAP_SAFE_r01 1286
+#define _MAKE_HEAP_SAFE_r11 1287
+#define _MAKE_HEAP_SAFE_r22 1288
+#define _MAKE_HEAP_SAFE_r33 1289
+#define _MAKE_WARM_r00 1290
+#define _MAKE_WARM_r11 1291
+#define _MAKE_WARM_r22 1292
+#define _MAKE_WARM_r33 1293
+#define _MAP_ADD_r20 1294
+#define _MATCH_CLASS_r33 1295
+#define _MATCH_KEYS_r23 1296
+#define _MATCH_MAPPING_r02 1297
+#define _MATCH_MAPPING_r12 1298
+#define _MATCH_MAPPING_r23 1299
+#define _MATCH_SEQUENCE_r02 1300
+#define _MATCH_SEQUENCE_r12 1301
+#define _MATCH_SEQUENCE_r23 1302
+#define _MAYBE_EXPAND_METHOD_r00 1303
+#define _MAYBE_EXPAND_METHOD_KW_r11 1304
+#define _MONITOR_CALL_r00 1305
+#define _MONITOR_CALL_KW_r11 1306
+#define _MONITOR_JUMP_BACKWARD_r00 1307
+#define _MONITOR_JUMP_BACKWARD_r11 1308
+#define _MONITOR_JUMP_BACKWARD_r22 1309
+#define _MONITOR_JUMP_BACKWARD_r33 1310
+#define _MONITOR_RESUME_r00 1311
+#define _NOP_r00 1312
+#define _NOP_r11 1313
+#define _NOP_r22 1314
+#define _NOP_r33 1315
+#define _POP_CALL_r20 1316
+#define _POP_CALL_LOAD_CONST_INLINE_BORROW_r21 1317
+#define _POP_CALL_ONE_r30 1318
+#define _POP_CALL_ONE_LOAD_CONST_INLINE_BORROW_r31 1319
+#define _POP_CALL_TWO_r30 1320
+#define _POP_CALL_TWO_LOAD_CONST_INLINE_BORROW_r31 1321
+#define _POP_EXCEPT_r10 1322
+#define _POP_ITER_r20 1323
+#define _POP_JUMP_IF_FALSE_r00 1324
+#define _POP_JUMP_IF_FALSE_r10 1325
+#define _POP_JUMP_IF_FALSE_r21 1326
+#define _POP_JUMP_IF_FALSE_r32 1327
+#define _POP_JUMP_IF_TRUE_r00 1328
+#define _POP_JUMP_IF_TRUE_r10 1329
+#define _POP_JUMP_IF_TRUE_r21 1330
+#define _POP_JUMP_IF_TRUE_r32 1331
+#define _POP_TOP_r10 1332
+#define _POP_TOP_FLOAT_r00 1333
+#define _POP_TOP_FLOAT_r10 1334
+#define _POP_TOP_FLOAT_r21 1335
+#define _POP_TOP_FLOAT_r32 1336
+#define _POP_TOP_INT_r00 1337
+#define _POP_TOP_INT_r10 1338
+#define _POP_TOP_INT_r21 1339
+#define _POP_TOP_INT_r32 1340
+#define _POP_TOP_LOAD_CONST_INLINE_r11 1341
+#define _POP_TOP_LOAD_CONST_INLINE_BORROW_r11 1342
+#define _POP_TOP_NOP_r00 1343
+#define _POP_TOP_NOP_r10 1344
+#define _POP_TOP_NOP_r21 1345
+#define _POP_TOP_NOP_r32 1346
+#define _POP_TOP_UNICODE_r00 1347
+#define _POP_TOP_UNICODE_r10 1348
+#define _POP_TOP_UNICODE_r21 1349
+#define _POP_TOP_UNICODE_r32 1350
+#define _POP_TWO_r20 1351
+#define _POP_TWO_LOAD_CONST_INLINE_BORROW_r21 1352
+#define _PUSH_EXC_INFO_r02 1353
+#define _PUSH_EXC_INFO_r12 1354
+#define _PUSH_EXC_INFO_r23 1355
+#define _PUSH_FRAME_r10 1356
+#define _PUSH_NULL_r01 1357
+#define _PUSH_NULL_r12 1358
+#define _PUSH_NULL_r23 1359
+#define _PUSH_NULL_CONDITIONAL_r00 1360
+#define _PY_FRAME_EX_r31 1361
+#define _PY_FRAME_GENERAL_r01 1362
+#define _PY_FRAME_KW_r11 1363
+#define _REPLACE_WITH_TRUE_r02 1364
+#define _REPLACE_WITH_TRUE_r12 1365
+#define _REPLACE_WITH_TRUE_r23 1366
+#define _RESUME_CHECK_r00 1367
+#define _RESUME_CHECK_r11 1368
+#define _RESUME_CHECK_r22 1369
+#define _RESUME_CHECK_r33 1370
+#define _RETURN_GENERATOR_r01 1371
+#define _RETURN_VALUE_r11 1372
+#define _SAVE_RETURN_OFFSET_r00 1373
+#define _SAVE_RETURN_OFFSET_r11 1374
+#define _SAVE_RETURN_OFFSET_r22 1375
+#define _SAVE_RETURN_OFFSET_r33 1376
+#define _SEND_r33 1377
+#define _SEND_GEN_FRAME_r33 1378
+#define _SETUP_ANNOTATIONS_r00 1379
+#define _SET_ADD_r10 1380
+#define _SET_FUNCTION_ATTRIBUTE_r01 1381
+#define _SET_FUNCTION_ATTRIBUTE_r11 1382
+#define _SET_FUNCTION_ATTRIBUTE_r21 1383
+#define _SET_FUNCTION_ATTRIBUTE_r32 1384
+#define _SET_IP_r00 1385
+#define _SET_IP_r11 1386
+#define _SET_IP_r22 1387
+#define _SET_IP_r33 1388
+#define _SET_UPDATE_r11 1389
+#define _SHUFFLE_2_LOAD_CONST_INLINE_BORROW_r02 1390
+#define _SHUFFLE_2_LOAD_CONST_INLINE_BORROW_r12 1391
+#define _SHUFFLE_2_LOAD_CONST_INLINE_BORROW_r22 1392
+#define _SHUFFLE_2_LOAD_CONST_INLINE_BORROW_r32 1393
+#define _SHUFFLE_3_LOAD_CONST_INLINE_BORROW_r03 1394
+#define _SHUFFLE_3_LOAD_CONST_INLINE_BORROW_r13 1395
+#define _SHUFFLE_3_LOAD_CONST_INLINE_BORROW_r23 1396
+#define _SHUFFLE_3_LOAD_CONST_INLINE_BORROW_r33 1397
+#define _SPILL_OR_RELOAD_r01 1398
+#define _SPILL_OR_RELOAD_r02 1399
+#define _SPILL_OR_RELOAD_r03 1400
+#define _SPILL_OR_RELOAD_r10 1401
+#define _SPILL_OR_RELOAD_r12 1402
+#define _SPILL_OR_RELOAD_r13 1403
+#define _SPILL_OR_RELOAD_r20 1404
+#define _SPILL_OR_RELOAD_r21 1405
+#define _SPILL_OR_RELOAD_r23 1406
+#define _SPILL_OR_RELOAD_r30 1407
+#define _SPILL_OR_RELOAD_r31 1408
+#define _SPILL_OR_RELOAD_r32 1409
+#define _START_EXECUTOR_r00 1410
+#define _STORE_ATTR_r20 1411
+#define _STORE_ATTR_INSTANCE_VALUE_r21 1412
+#define _STORE_ATTR_SLOT_r21 1413
+#define _STORE_ATTR_WITH_HINT_r21 1414
+#define _STORE_DEREF_r10 1415
+#define _STORE_FAST_LOAD_FAST_r11 1416
+#define _STORE_FAST_STORE_FAST_r20 1417
+#define _STORE_GLOBAL_r10 1418
+#define _STORE_NAME_r10 1419
+#define _STORE_SLICE_r30 1420
+#define _STORE_SUBSCR_r30 1421
+#define _STORE_SUBSCR_DICT_r31 1422
+#define _STORE_SUBSCR_LIST_INT_r32 1423
+#define _SWAP_r11 1424
+#define _SWAP_2_r02 1425
+#define _SWAP_2_r12 1426
+#define _SWAP_2_r22 1427
+#define _SWAP_2_r33 1428
+#define _SWAP_3_r03 1429
+#define _SWAP_3_r13 1430
+#define _SWAP_3_r23 1431
+#define _SWAP_3_r33 1432
+#define _SWAP_FAST_r01 1433
+#define _SWAP_FAST_r11 1434
+#define _SWAP_FAST_r22 1435
+#define _SWAP_FAST_r33 1436
+#define _SWAP_FAST_0_r01 1437
+#define _SWAP_FAST_0_r11 1438
+#define _SWAP_FAST_0_r22 1439
+#define _SWAP_FAST_0_r33 1440
+#define _SWAP_FAST_1_r01 1441
+#define _SWAP_FAST_1_r11 1442
+#define _SWAP_FAST_1_r22 1443
+#define _SWAP_FAST_1_r33 1444
+#define _SWAP_FAST_2_r01 1445
+#define _SWAP_FAST_2_r11 1446
+#define _SWAP_FAST_2_r22 1447
+#define _SWAP_FAST_2_r33 1448
+#define _SWAP_FAST_3_r01 1449
+#define _SWAP_FAST_3_r11 1450
+#define _SWAP_FAST_3_r22 1451
+#define _SWAP_FAST_3_r33 1452
+#define _SWAP_FAST_4_r01 1453
+#define _SWAP_FAST_4_r11 1454
+#define _SWAP_FAST_4_r22 1455
+#define _SWAP_FAST_4_r33 1456
+#define _SWAP_FAST_5_r01 1457
+#define _SWAP_FAST_5_r11 1458
+#define _SWAP_FAST_5_r22 1459
+#define _SWAP_FAST_5_r33 1460
+#define _SWAP_FAST_6_r01 1461
+#define _SWAP_FAST_6_r11 1462
+#define _SWAP_FAST_6_r22 1463
+#define _SWAP_FAST_6_r33 1464
+#define _SWAP_FAST_7_r01 1465
+#define _SWAP_FAST_7_r11 1466
+#define _SWAP_FAST_7_r22 1467
+#define _SWAP_FAST_7_r33 1468
+#define _TIER2_RESUME_CHECK_r00 1469
+#define _TIER2_RESUME_CHECK_r11 1470
+#define _TIER2_RESUME_CHECK_r22 1471
+#define _TIER2_RESUME_CHECK_r33 1472
+#define _TO_BOOL_r11 1473
+#define _TO_BOOL_BOOL_r01 1474
+#define _TO_BOOL_BOOL_r11 1475
+#define _TO_BOOL_BOOL_r22 1476
+#define _TO_BOOL_BOOL_r33 1477
+#define _TO_BOOL_INT_r02 1478
+#define _TO_BOOL_INT_r12 1479
+#define _TO_BOOL_INT_r23 1480
+#define _TO_BOOL_LIST_r02 1481
+#define _TO_BOOL_LIST_r12 1482
+#define _TO_BOOL_LIST_r23 1483
+#define _TO_BOOL_NONE_r01 1484
+#define _TO_BOOL_NONE_r11 1485
+#define _TO_BOOL_NONE_r22 1486
+#define _TO_BOOL_NONE_r33 1487
+#define _TO_BOOL_STR_r02 1488
+#define _TO_BOOL_STR_r12 1489
+#define _TO_BOOL_STR_r23 1490
+#define _TRACE_RECORD_r00 1491
+#define _UNARY_INVERT_r12 1492
+#define _UNARY_NEGATIVE_r12 1493
+#define _UNARY_NOT_r01 1494
+#define _UNARY_NOT_r11 1495
+#define _UNARY_NOT_r22 1496
+#define _UNARY_NOT_r33 1497
+#define _UNPACK_EX_r10 1498
+#define _UNPACK_SEQUENCE_r10 1499
+#define _UNPACK_SEQUENCE_LIST_r10 1500
+#define _UNPACK_SEQUENCE_TUPLE_r10 1501
+#define _UNPACK_SEQUENCE_TWO_TUPLE_r12 1502
+#define _UNPACK_SEQUENCE_UNIQUE_THREE_TUPLE_r03 1503
+#define _UNPACK_SEQUENCE_UNIQUE_THREE_TUPLE_r13 1504
+#define _UNPACK_SEQUENCE_UNIQUE_TUPLE_r10 1505
+#define _UNPACK_SEQUENCE_UNIQUE_TWO_TUPLE_r02 1506
+#define _UNPACK_SEQUENCE_UNIQUE_TWO_TUPLE_r12 1507
+#define _UNPACK_SEQUENCE_UNIQUE_TWO_TUPLE_r23 1508
+#define _WITH_EXCEPT_START_r33 1509
+#define _YIELD_VALUE_r11 1510
+#define MAX_UOP_REGS_ID 1510
 
 #ifdef __cplusplus
 }
index 3fec783ca2de2ed1bc768f12516eb240c4dc24f5..46cdda273599c49483448b3b3fce433af017bc5d 100644 (file)
@@ -156,7 +156,10 @@ const uint32_t _PyUop_Flags[MAX_UOP_ID+1] = {
     [_DELETE_NAME] = HAS_ARG_FLAG | HAS_NAME_FLAG | HAS_ERROR_FLAG | HAS_ERROR_NO_POP_FLAG | HAS_ESCAPES_FLAG,
     [_UNPACK_SEQUENCE] = HAS_ARG_FLAG | HAS_ERROR_FLAG | HAS_ESCAPES_FLAG,
     [_UNPACK_SEQUENCE_TWO_TUPLE] = HAS_ARG_FLAG | HAS_EXIT_FLAG | HAS_ESCAPES_FLAG,
+    [_UNPACK_SEQUENCE_UNIQUE_TWO_TUPLE] = 0,
+    [_UNPACK_SEQUENCE_UNIQUE_THREE_TUPLE] = 0,
     [_UNPACK_SEQUENCE_TUPLE] = HAS_ARG_FLAG | HAS_EXIT_FLAG | HAS_ESCAPES_FLAG,
+    [_UNPACK_SEQUENCE_UNIQUE_TUPLE] = HAS_ARG_FLAG,
     [_UNPACK_SEQUENCE_LIST] = HAS_ARG_FLAG | HAS_DEOPT_FLAG | HAS_ESCAPES_FLAG,
     [_UNPACK_EX] = HAS_ARG_FLAG | HAS_ERROR_FLAG | HAS_ESCAPES_FLAG,
     [_STORE_ATTR] = HAS_ARG_FLAG | HAS_NAME_FLAG | HAS_ERROR_FLAG | HAS_ESCAPES_FLAG,
@@ -1497,6 +1500,24 @@ const _PyUopCachingInfo _PyUop_Caching[MAX_UOP_ID+1] = {
             { -1, -1, -1 },
         },
     },
+    [_UNPACK_SEQUENCE_UNIQUE_TWO_TUPLE] = {
+        .best = { 0, 1, 2, 2 },
+        .entries = {
+            { 2, 0, _UNPACK_SEQUENCE_UNIQUE_TWO_TUPLE_r02 },
+            { 2, 1, _UNPACK_SEQUENCE_UNIQUE_TWO_TUPLE_r12 },
+            { 3, 2, _UNPACK_SEQUENCE_UNIQUE_TWO_TUPLE_r23 },
+            { -1, -1, -1 },
+        },
+    },
+    [_UNPACK_SEQUENCE_UNIQUE_THREE_TUPLE] = {
+        .best = { 0, 1, 1, 1 },
+        .entries = {
+            { 3, 0, _UNPACK_SEQUENCE_UNIQUE_THREE_TUPLE_r03 },
+            { 3, 1, _UNPACK_SEQUENCE_UNIQUE_THREE_TUPLE_r13 },
+            { -1, -1, -1 },
+            { -1, -1, -1 },
+        },
+    },
     [_UNPACK_SEQUENCE_TUPLE] = {
         .best = { 1, 1, 1, 1 },
         .entries = {
@@ -1506,6 +1527,15 @@ const _PyUopCachingInfo _PyUop_Caching[MAX_UOP_ID+1] = {
             { -1, -1, -1 },
         },
     },
+    [_UNPACK_SEQUENCE_UNIQUE_TUPLE] = {
+        .best = { 1, 1, 1, 1 },
+        .entries = {
+            { -1, -1, -1 },
+            { 0, 1, _UNPACK_SEQUENCE_UNIQUE_TUPLE_r10 },
+            { -1, -1, -1 },
+            { -1, -1, -1 },
+        },
+    },
     [_UNPACK_SEQUENCE_LIST] = {
         .best = { 1, 1, 1, 1 },
         .entries = {
@@ -3864,7 +3894,13 @@ const uint16_t _PyUop_Uncached[MAX_UOP_REGS_ID+1] = {
     [_DELETE_NAME_r00] = _DELETE_NAME,
     [_UNPACK_SEQUENCE_r10] = _UNPACK_SEQUENCE,
     [_UNPACK_SEQUENCE_TWO_TUPLE_r12] = _UNPACK_SEQUENCE_TWO_TUPLE,
+    [_UNPACK_SEQUENCE_UNIQUE_TWO_TUPLE_r02] = _UNPACK_SEQUENCE_UNIQUE_TWO_TUPLE,
+    [_UNPACK_SEQUENCE_UNIQUE_TWO_TUPLE_r12] = _UNPACK_SEQUENCE_UNIQUE_TWO_TUPLE,
+    [_UNPACK_SEQUENCE_UNIQUE_TWO_TUPLE_r23] = _UNPACK_SEQUENCE_UNIQUE_TWO_TUPLE,
+    [_UNPACK_SEQUENCE_UNIQUE_THREE_TUPLE_r03] = _UNPACK_SEQUENCE_UNIQUE_THREE_TUPLE,
+    [_UNPACK_SEQUENCE_UNIQUE_THREE_TUPLE_r13] = _UNPACK_SEQUENCE_UNIQUE_THREE_TUPLE,
     [_UNPACK_SEQUENCE_TUPLE_r10] = _UNPACK_SEQUENCE_TUPLE,
+    [_UNPACK_SEQUENCE_UNIQUE_TUPLE_r10] = _UNPACK_SEQUENCE_UNIQUE_TUPLE,
     [_UNPACK_SEQUENCE_LIST_r10] = _UNPACK_SEQUENCE_LIST,
     [_UNPACK_EX_r10] = _UNPACK_EX,
     [_STORE_ATTR_r20] = _STORE_ATTR,
@@ -5571,6 +5607,15 @@ const char *const _PyOpcode_uop_name[MAX_UOP_REGS_ID+1] = {
     [_UNPACK_SEQUENCE_TUPLE_r10] = "_UNPACK_SEQUENCE_TUPLE_r10",
     [_UNPACK_SEQUENCE_TWO_TUPLE] = "_UNPACK_SEQUENCE_TWO_TUPLE",
     [_UNPACK_SEQUENCE_TWO_TUPLE_r12] = "_UNPACK_SEQUENCE_TWO_TUPLE_r12",
+    [_UNPACK_SEQUENCE_UNIQUE_THREE_TUPLE] = "_UNPACK_SEQUENCE_UNIQUE_THREE_TUPLE",
+    [_UNPACK_SEQUENCE_UNIQUE_THREE_TUPLE_r03] = "_UNPACK_SEQUENCE_UNIQUE_THREE_TUPLE_r03",
+    [_UNPACK_SEQUENCE_UNIQUE_THREE_TUPLE_r13] = "_UNPACK_SEQUENCE_UNIQUE_THREE_TUPLE_r13",
+    [_UNPACK_SEQUENCE_UNIQUE_TUPLE] = "_UNPACK_SEQUENCE_UNIQUE_TUPLE",
+    [_UNPACK_SEQUENCE_UNIQUE_TUPLE_r10] = "_UNPACK_SEQUENCE_UNIQUE_TUPLE_r10",
+    [_UNPACK_SEQUENCE_UNIQUE_TWO_TUPLE] = "_UNPACK_SEQUENCE_UNIQUE_TWO_TUPLE",
+    [_UNPACK_SEQUENCE_UNIQUE_TWO_TUPLE_r02] = "_UNPACK_SEQUENCE_UNIQUE_TWO_TUPLE_r02",
+    [_UNPACK_SEQUENCE_UNIQUE_TWO_TUPLE_r12] = "_UNPACK_SEQUENCE_UNIQUE_TWO_TUPLE_r12",
+    [_UNPACK_SEQUENCE_UNIQUE_TWO_TUPLE_r23] = "_UNPACK_SEQUENCE_UNIQUE_TWO_TUPLE_r23",
     [_WITH_EXCEPT_START] = "_WITH_EXCEPT_START",
     [_WITH_EXCEPT_START_r33] = "_WITH_EXCEPT_START_r33",
     [_YIELD_VALUE] = "_YIELD_VALUE",
@@ -5821,8 +5866,14 @@ int _PyUop_num_popped(int opcode, int oparg)
             return 1;
         case _UNPACK_SEQUENCE_TWO_TUPLE:
             return 1;
+        case _UNPACK_SEQUENCE_UNIQUE_TWO_TUPLE:
+            return 1;
+        case _UNPACK_SEQUENCE_UNIQUE_THREE_TUPLE:
+            return 1;
         case _UNPACK_SEQUENCE_TUPLE:
             return 1;
+        case _UNPACK_SEQUENCE_UNIQUE_TUPLE:
+            return 1;
         case _UNPACK_SEQUENCE_LIST:
             return 1;
         case _UNPACK_EX:
index bd9bc8a1a533c35489d9a141bd07983f47945762..e90998bb1e3b27580e2146278f1e791a8b096246 100644 (file)
@@ -2029,6 +2029,125 @@ class TestUopsOptimization(unittest.TestCase):
         self.assertEqual(uops.count("_BINARY_OP_SUBSCR_LIST_INT"), 1)
         self.assertEqual(uops.count("_TO_BOOL_LIST"), 1)
 
+    def test_unique_tuple_unpack(self):
+        def f(n):
+            def four_tuple(x):
+                return (x, x, x, x)
+            hits = 0
+            for i in range(n):
+                w, x, y, z = four_tuple(1)
+                hits += w + x + y + z
+            return hits
+
+        res, ex = self._run_with_optimizer(f, TIER2_THRESHOLD)
+        self.assertEqual(res, TIER2_THRESHOLD * 4)
+        self.assertIsNotNone(ex)
+        uops = get_opnames(ex)
+
+        self.assertIn("_BUILD_TUPLE", uops)
+        self.assertIn("_UNPACK_SEQUENCE_UNIQUE_TUPLE", uops)
+        self.assertNotIn("_UNPACK_SEQUENCE_TUPLE", uops)
+
+    def test_non_unique_tuple_unpack(self):
+        def f(n):
+            def four_tuple(x):
+                return (x, x, x, x)
+            hits = 0
+            for i in range(n):
+                t = four_tuple(1)
+                w, x, y, z = t
+                hits += w + x + y + z
+            return hits
+
+        res, ex = self._run_with_optimizer(f, TIER2_THRESHOLD)
+        self.assertEqual(res, TIER2_THRESHOLD * 4)
+        self.assertIsNotNone(ex)
+        uops = get_opnames(ex)
+
+        self.assertIn("_BUILD_TUPLE", uops)
+        self.assertIn("_UNPACK_SEQUENCE_TUPLE", uops)
+        self.assertNotIn("_UNPACK_SEQUENCE_UNIQUE_TUPLE", uops)
+
+    def test_unique_three_tuple_unpack(self):
+        def f(n):
+            def three_tuple(x):
+                return (x, x, x)
+            hits = 0
+            for i in range(n):
+                x, y, z = three_tuple(1)
+                hits += x + y + z
+            return hits
+
+        res, ex = self._run_with_optimizer(f, TIER2_THRESHOLD)
+        self.assertEqual(res, TIER2_THRESHOLD * 3)
+        self.assertIsNotNone(ex)
+        uops = get_opnames(ex)
+
+        self.assertIn("_BUILD_TUPLE", uops)
+        self.assertIn("_UNPACK_SEQUENCE_UNIQUE_THREE_TUPLE", uops)
+        self.assertNotIn("_UNPACK_SEQUENCE_TUPLE", uops)
+
+    def test_non_unique_three_tuple_unpack(self):
+        def f(n):
+            def three_tuple(x):
+                return (x, x, x)
+            hits = 0
+            for i in range(n):
+                t = three_tuple(1)
+                x, y, z = t
+                hits += x + y + z
+            return hits
+
+        res, ex = self._run_with_optimizer(f, TIER2_THRESHOLD)
+        self.assertEqual(res, TIER2_THRESHOLD * 3)
+        self.assertIsNotNone(ex)
+        uops = get_opnames(ex)
+
+        self.assertIn("_BUILD_TUPLE", uops)
+        self.assertIn("_UNPACK_SEQUENCE_TUPLE", uops)
+        self.assertNotIn("_UNPACK_SEQUENCE_UNIQUE_THREE_TUPLE", uops)
+
+    def test_unique_two_tuple_unpack(self):
+        def f(n):
+            def two_tuple(x):
+                return (x, x)
+            hits = 0
+            for i in range(n):
+                x, y = two_tuple(1)
+                hits += x + y
+            return hits
+
+        res, ex = self._run_with_optimizer(f, TIER2_THRESHOLD)
+        self.assertEqual(res, TIER2_THRESHOLD * 2)
+        self.assertIsNotNone(ex)
+        uops = get_opnames(ex)
+
+        self.assertIn("_BUILD_TUPLE", uops)
+        self.assertIn("_UNPACK_SEQUENCE_UNIQUE_TWO_TUPLE", uops)
+        self.assertNotIn("_UNPACK_SEQUENCE_TWO_TUPLE", uops)
+        self.assertNotIn("_UNPACK_SEQUENCE_TUPLE", uops)
+
+    def test_non_unique_two_tuple_unpack(self):
+        def f(n):
+            def two_tuple(x):
+                return (x, x)
+            hits = 0
+            for i in range(n):
+                tt = two_tuple(1)
+                x, y = tt
+                hits += x + y
+            return hits
+
+        res, ex = self._run_with_optimizer(f, TIER2_THRESHOLD)
+        self.assertEqual(res, TIER2_THRESHOLD * 2)
+        self.assertIsNotNone(ex)
+        uops = get_opnames(ex)
+
+        self.assertIn("_BUILD_TUPLE", uops)
+        self.assertIn("_UNPACK_SEQUENCE_TWO_TUPLE", uops)
+        self.assertNotIn("_UNPACK_SEQUENCE_TUPLE", uops)
+        self.assertNotIn("_UNPACK_SEQUENCE_UNIQUE_TWO_TUPLE", uops)
+
     def test_remove_guard_for_known_type_set(self):
         def f(n):
             x = 0
diff --git a/Misc/NEWS.d/next/Core_and_Builtins/2026-01-31-15-15-43.gh-issue-143414.Jgl4xu.rst b/Misc/NEWS.d/next/Core_and_Builtins/2026-01-31-15-15-43.gh-issue-143414.Jgl4xu.rst
new file mode 100644 (file)
index 0000000..91f66e6
--- /dev/null
@@ -0,0 +1 @@
+Add tracking to the JIT optimizer to determine whether a reference is uniquely owned or shared
index 01afa53e15cd5dda3f9881aa68ccf732006f736c..ee6320e6ca3cfe934488560ee54fdc74eea387f7 100644 (file)
@@ -234,6 +234,23 @@ _PyTuple_FromPairSteal(PyObject *first, PyObject *second)
 
 /* Methods */
 
+/*
+ Free of a tuple where all contents have been stolen and
+ is now untracked by GC. This operation is thus non-escaping.
+ */
+void
+_PyStolenTuple_Free(PyObject *obj)
+{
+    assert(PyTuple_CheckExact(obj));
+    PyTupleObject *op = _PyTuple_CAST(obj);
+    assert(Py_SIZE(op) != 0);
+    assert(!_PyObject_GC_IS_TRACKED(obj));
+    // This will abort on the empty singleton (if there is one).
+    if (!maybe_freelist_push(op)) {
+        PyTuple_Type.tp_free((PyObject *)op);
+    }
+}
+
 static void
 tuple_dealloc(PyObject *self)
 {
index a42e6a57abe2bfd46e019cb4a50f17895deb8390..a2c2eb55db9b3b9fe4520658f85e4fd433180fe6 100644 (file)
@@ -33,7 +33,7 @@
 #include "pycore_sliceobject.h"   // _PyBuildSlice_ConsumeRefs
 #include "pycore_stackref.h"
 #include "pycore_template.h"      // _PyTemplate_Build()
-#include "pycore_tuple.h"         // _PyTuple_ITEMS()
+#include "pycore_tuple.h"         // _PyStolenTuple_Free(), _PyTuple_ITEMS()
 #include "pycore_typeobject.h"    // _PySuper_Lookup()
 
 #include "pycore_dict.h"
@@ -1739,6 +1739,25 @@ dummy_func(
             PyStackRef_CLOSE(seq);
         }
 
+        op(_UNPACK_SEQUENCE_UNIQUE_TWO_TUPLE, (seq -- val1, val0)) {
+            PyObject *seq_o = PyStackRef_AsPyObjectSteal(seq);
+            STAT_INC(UNPACK_SEQUENCE, hit);
+            val0 = PyStackRef_FromPyObjectSteal(PyTuple_GET_ITEM(seq_o, 0));
+            val1 = PyStackRef_FromPyObjectSteal(PyTuple_GET_ITEM(seq_o, 1));
+            PyObject_GC_UnTrack(seq_o);
+            _PyStolenTuple_Free(seq_o);
+        }
+
+        op(_UNPACK_SEQUENCE_UNIQUE_THREE_TUPLE, (seq -- val2, val1, val0)) {
+            PyObject *seq_o = PyStackRef_AsPyObjectSteal(seq);
+            STAT_INC(UNPACK_SEQUENCE, hit);
+            val0 = PyStackRef_FromPyObjectSteal(PyTuple_GET_ITEM(seq_o, 0));
+            val1 = PyStackRef_FromPyObjectSteal(PyTuple_GET_ITEM(seq_o, 1));
+            val2 = PyStackRef_FromPyObjectSteal(PyTuple_GET_ITEM(seq_o, 2));
+            PyObject_GC_UnTrack(seq_o);
+            _PyStolenTuple_Free(seq_o);
+        }
+
         macro(UNPACK_SEQUENCE_TUPLE) =
             _GUARD_TOS_TUPLE + unused/1 + _UNPACK_SEQUENCE_TUPLE;
 
@@ -1754,6 +1773,20 @@ dummy_func(
             DECREF_INPUTS();
         }
 
+        op(_UNPACK_SEQUENCE_UNIQUE_TUPLE, (seq -- values[oparg])) {
+            PyObject *seq_o = PyStackRef_AsPyObjectSteal(seq);
+            assert(PyTuple_CheckExact(seq_o));
+            assert(PyTuple_GET_SIZE(seq_o) == oparg);
+            assert(_PyObject_IsUniquelyReferenced(seq_o));
+            STAT_INC(UNPACK_SEQUENCE, hit);
+            PyObject **items = _PyTuple_ITEMS(seq_o);
+            for (int i = oparg; --i >= 0; ) {
+                *values++ = PyStackRef_FromPyObjectSteal(items[i]);
+            }
+            PyObject_GC_UnTrack(seq_o);
+            _PyStolenTuple_Free(seq_o);
+        }
+
         macro(UNPACK_SEQUENCE_LIST) =
             _GUARD_TOS_LIST + unused/1 + _UNPACK_SEQUENCE_LIST;
 
index 4e8d2a4aab02a970ff0737a79728ae085a8ea33f..9de6e2850d773b2a69d090cb40b826e09538842a 100644 (file)
             break;
         }
 
+        case _UNPACK_SEQUENCE_UNIQUE_TWO_TUPLE_r02: {
+            CHECK_CURRENT_CACHED_VALUES(0);
+            assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE());
+            _PyStackRef seq;
+            _PyStackRef val1;
+            _PyStackRef val0;
+            seq = stack_pointer[-1];
+            PyObject *seq_o = PyStackRef_AsPyObjectSteal(seq);
+            STAT_INC(UNPACK_SEQUENCE, hit);
+            val0 = PyStackRef_FromPyObjectSteal(PyTuple_GET_ITEM(seq_o, 0));
+            val1 = PyStackRef_FromPyObjectSteal(PyTuple_GET_ITEM(seq_o, 1));
+            PyObject_GC_UnTrack(seq_o);
+            _PyStolenTuple_Free(seq_o);
+            _tos_cache1 = val0;
+            _tos_cache0 = val1;
+            SET_CURRENT_CACHED_VALUES(2);
+            stack_pointer += -1;
+            ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
+            assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE());
+            break;
+        }
+
+        case _UNPACK_SEQUENCE_UNIQUE_TWO_TUPLE_r12: {
+            CHECK_CURRENT_CACHED_VALUES(1);
+            assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE());
+            _PyStackRef seq;
+            _PyStackRef val1;
+            _PyStackRef val0;
+            _PyStackRef _stack_item_0 = _tos_cache0;
+            seq = _stack_item_0;
+            PyObject *seq_o = PyStackRef_AsPyObjectSteal(seq);
+            STAT_INC(UNPACK_SEQUENCE, hit);
+            val0 = PyStackRef_FromPyObjectSteal(PyTuple_GET_ITEM(seq_o, 0));
+            val1 = PyStackRef_FromPyObjectSteal(PyTuple_GET_ITEM(seq_o, 1));
+            PyObject_GC_UnTrack(seq_o);
+            _PyStolenTuple_Free(seq_o);
+            _tos_cache1 = val0;
+            _tos_cache0 = val1;
+            SET_CURRENT_CACHED_VALUES(2);
+            assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE());
+            break;
+        }
+
+        case _UNPACK_SEQUENCE_UNIQUE_TWO_TUPLE_r23: {
+            CHECK_CURRENT_CACHED_VALUES(2);
+            assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE());
+            _PyStackRef seq;
+            _PyStackRef val1;
+            _PyStackRef val0;
+            _PyStackRef _stack_item_0 = _tos_cache0;
+            _PyStackRef _stack_item_1 = _tos_cache1;
+            seq = _stack_item_1;
+            PyObject *seq_o = PyStackRef_AsPyObjectSteal(seq);
+            STAT_INC(UNPACK_SEQUENCE, hit);
+            val0 = PyStackRef_FromPyObjectSteal(PyTuple_GET_ITEM(seq_o, 0));
+            val1 = PyStackRef_FromPyObjectSteal(PyTuple_GET_ITEM(seq_o, 1));
+            PyObject_GC_UnTrack(seq_o);
+            _PyStolenTuple_Free(seq_o);
+            _tos_cache2 = val0;
+            _tos_cache1 = val1;
+            _tos_cache0 = _stack_item_0;
+            SET_CURRENT_CACHED_VALUES(3);
+            assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE());
+            break;
+        }
+
+        case _UNPACK_SEQUENCE_UNIQUE_THREE_TUPLE_r03: {
+            CHECK_CURRENT_CACHED_VALUES(0);
+            assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE());
+            _PyStackRef seq;
+            _PyStackRef val2;
+            _PyStackRef val1;
+            _PyStackRef val0;
+            seq = stack_pointer[-1];
+            PyObject *seq_o = PyStackRef_AsPyObjectSteal(seq);
+            STAT_INC(UNPACK_SEQUENCE, hit);
+            val0 = PyStackRef_FromPyObjectSteal(PyTuple_GET_ITEM(seq_o, 0));
+            val1 = PyStackRef_FromPyObjectSteal(PyTuple_GET_ITEM(seq_o, 1));
+            val2 = PyStackRef_FromPyObjectSteal(PyTuple_GET_ITEM(seq_o, 2));
+            PyObject_GC_UnTrack(seq_o);
+            _PyStolenTuple_Free(seq_o);
+            _tos_cache2 = val0;
+            _tos_cache1 = val1;
+            _tos_cache0 = val2;
+            SET_CURRENT_CACHED_VALUES(3);
+            stack_pointer += -1;
+            ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
+            assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE());
+            break;
+        }
+
+        case _UNPACK_SEQUENCE_UNIQUE_THREE_TUPLE_r13: {
+            CHECK_CURRENT_CACHED_VALUES(1);
+            assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE());
+            _PyStackRef seq;
+            _PyStackRef val2;
+            _PyStackRef val1;
+            _PyStackRef val0;
+            _PyStackRef _stack_item_0 = _tos_cache0;
+            seq = _stack_item_0;
+            PyObject *seq_o = PyStackRef_AsPyObjectSteal(seq);
+            STAT_INC(UNPACK_SEQUENCE, hit);
+            val0 = PyStackRef_FromPyObjectSteal(PyTuple_GET_ITEM(seq_o, 0));
+            val1 = PyStackRef_FromPyObjectSteal(PyTuple_GET_ITEM(seq_o, 1));
+            val2 = PyStackRef_FromPyObjectSteal(PyTuple_GET_ITEM(seq_o, 2));
+            PyObject_GC_UnTrack(seq_o);
+            _PyStolenTuple_Free(seq_o);
+            _tos_cache2 = val0;
+            _tos_cache1 = val1;
+            _tos_cache0 = val2;
+            SET_CURRENT_CACHED_VALUES(3);
+            assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE());
+            break;
+        }
+
         case _UNPACK_SEQUENCE_TUPLE_r10: {
             CHECK_CURRENT_CACHED_VALUES(1);
             assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE());
             break;
         }
 
+        case _UNPACK_SEQUENCE_UNIQUE_TUPLE_r10: {
+            CHECK_CURRENT_CACHED_VALUES(1);
+            assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE());
+            _PyStackRef seq;
+            _PyStackRef *values;
+            _PyStackRef _stack_item_0 = _tos_cache0;
+            oparg = CURRENT_OPARG();
+            seq = _stack_item_0;
+            values = &stack_pointer[0];
+            PyObject *seq_o = PyStackRef_AsPyObjectSteal(seq);
+            assert(PyTuple_CheckExact(seq_o));
+            assert(PyTuple_GET_SIZE(seq_o) == oparg);
+            assert(_PyObject_IsUniquelyReferenced(seq_o));
+            STAT_INC(UNPACK_SEQUENCE, hit);
+            PyObject **items = _PyTuple_ITEMS(seq_o);
+            for (int i = oparg; --i >= 0; ) {
+                *values++ = PyStackRef_FromPyObjectSteal(items[i]);
+            }
+            PyObject_GC_UnTrack(seq_o);
+            _PyStolenTuple_Free(seq_o);
+            SET_CURRENT_CACHED_VALUES(0);
+            stack_pointer += oparg;
+            ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
+            assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE());
+            break;
+        }
+
         case _UNPACK_SEQUENCE_LIST_r10: {
             CHECK_CURRENT_CACHED_VALUES(1);
             assert(WITHIN_STACK_BOUNDS_IGNORING_CACHE());
index f2d0e2940d7188772ad4153acd3781c532eccdd8..36820e33099e42abe46f6d6628a0783e984cb6ba 100644 (file)
@@ -93,7 +93,19 @@ dummy_func(void) {
         if (sym_is_immortal(PyJitRef_Unwrap(value))) {
             ADD_OP(_NOP, 0, 0);
         }
-        value = PyJitRef_StripReferenceInfo(value);
+        value = PyJitRef_StripBorrowInfo(value);
+    }
+
+    op(_COPY_FREE_VARS, (--)) {
+        PyCodeObject *co = get_current_code_object(ctx);
+        if (co == NULL) {
+            ctx->done = true;
+            break;
+        }
+        int offset = co->co_nlocalsplus - oparg;
+        for (int i = 0; i < oparg; ++i) {
+            ctx->frame->locals[offset + i] = sym_new_not_null(ctx);
+        }
     }
 
     op(_LOAD_FAST_CHECK, (-- value)) {
@@ -102,20 +114,24 @@ dummy_func(void) {
         if (sym_is_null(value)) {
             ctx->done = true;
         }
+        assert(!PyJitRef_IsUnique(value));
     }
 
     op(_LOAD_FAST, (-- value)) {
         value = GETLOCAL(oparg);
+        assert(!PyJitRef_IsUnique(value));
     }
 
     op(_LOAD_FAST_BORROW, (-- value)) {
         value = PyJitRef_Borrow(GETLOCAL(oparg));
+        assert(!PyJitRef_IsUnique(value));
     }
 
     op(_LOAD_FAST_AND_CLEAR, (-- value)) {
         value = GETLOCAL(oparg);
         JitOptRef temp = sym_new_null(ctx);
         GETLOCAL(oparg) = temp;
+        assert(!PyJitRef_IsUnique(value));
     }
 
     op(_STORE_ATTR_INSTANCE_VALUE, (offset/1, value, owner -- o)) {
@@ -132,7 +148,7 @@ dummy_func(void) {
 
     op(_SWAP_FAST, (value -- trash)) {
         JitOptRef tmp = GETLOCAL(oparg);
-        GETLOCAL(oparg) = value;
+        GETLOCAL(oparg) = PyJitRef_RemoveUnique(value);
         trash = tmp;
     }
 
@@ -713,6 +729,7 @@ dummy_func(void) {
 
     op(_COPY, (bottom, unused[oparg-1] -- bottom, unused[oparg-1], top)) {
         assert(oparg > 0);
+        bottom = PyJitRef_RemoveUnique(bottom);
         top = bottom;
     }
 
@@ -1311,6 +1328,7 @@ dummy_func(void) {
 
     op(_BUILD_TUPLE, (values[oparg] -- tup)) {
         tup = sym_new_tuple(ctx, oparg, values);
+        tup = PyJitRef_MakeUnique(tup);
     }
 
     op(_BUILD_LIST, (values[oparg] -- list)) {
@@ -1339,11 +1357,20 @@ dummy_func(void) {
     }
 
     op(_UNPACK_SEQUENCE_TWO_TUPLE, (seq -- val1, val0)) {
+        if (PyJitRef_IsUnique(seq) && sym_tuple_length(seq) == 2) {
+            ADD_OP(_UNPACK_SEQUENCE_UNIQUE_TWO_TUPLE, oparg, 0);
+        }
         val0 = sym_tuple_getitem(ctx, seq, 0);
         val1 = sym_tuple_getitem(ctx, seq, 1);
     }
 
     op(_UNPACK_SEQUENCE_TUPLE, (seq -- values[oparg])) {
+        if (PyJitRef_IsUnique(seq) && sym_tuple_length(seq) == 3) {
+            ADD_OP(_UNPACK_SEQUENCE_UNIQUE_THREE_TUPLE, oparg, 0);
+        }
+        else if (PyJitRef_IsUnique(seq) && sym_tuple_length(seq) == oparg) {
+            ADD_OP(_UNPACK_SEQUENCE_UNIQUE_TUPLE, oparg, 0);
+        }
         for (int i = 0; i < oparg; i++) {
             values[i] = sym_tuple_getitem(ctx, seq, oparg - i - 1);
         }
index 860bb02b7a01226401359d74f04f614aa2afb70c..38831e4664247af2cbb3d21b05d7ecd6393f25ee 100644 (file)
@@ -31,6 +31,7 @@
             if (sym_is_null(value)) {
                 ctx->done = true;
             }
+            assert(!PyJitRef_IsUnique(value));
             CHECK_STACK_BOUNDS(1);
             stack_pointer[0] = value;
             stack_pointer += 1;
@@ -41,6 +42,7 @@
         case _LOAD_FAST: {
             JitOptRef value;
             value = GETLOCAL(oparg);
+            assert(!PyJitRef_IsUnique(value));
             CHECK_STACK_BOUNDS(1);
             stack_pointer[0] = value;
             stack_pointer += 1;
@@ -51,6 +53,7 @@
         case _LOAD_FAST_BORROW: {
             JitOptRef value;
             value = PyJitRef_Borrow(GETLOCAL(oparg));
+            assert(!PyJitRef_IsUnique(value));
             CHECK_STACK_BOUNDS(1);
             stack_pointer[0] = value;
             stack_pointer += 1;
@@ -63,6 +66,7 @@
             value = GETLOCAL(oparg);
             JitOptRef temp = sym_new_null(ctx);
             GETLOCAL(oparg) = temp;
+            assert(!PyJitRef_IsUnique(value));
             CHECK_STACK_BOUNDS(1);
             stack_pointer[0] = value;
             stack_pointer += 1;
             JitOptRef trash;
             value = stack_pointer[-1];
             JitOptRef tmp = GETLOCAL(oparg);
-            GETLOCAL(oparg) = value;
+            GETLOCAL(oparg) = PyJitRef_RemoveUnique(value);
             trash = tmp;
             stack_pointer[-1] = trash;
             break;
             if (sym_is_immortal(PyJitRef_Unwrap(value))) {
                 ADD_OP(_NOP, 0, 0);
             }
-            value = PyJitRef_StripReferenceInfo(value);
+            value = PyJitRef_StripBorrowInfo(value);
             stack_pointer[-1] = value;
             break;
         }
             JitOptRef val1;
             JitOptRef val0;
             seq = stack_pointer[-1];
+            if (PyJitRef_IsUnique(seq) && sym_tuple_length(seq) == 2) {
+                ADD_OP(_UNPACK_SEQUENCE_UNIQUE_TWO_TUPLE, oparg, 0);
+            }
             val0 = sym_tuple_getitem(ctx, seq, 0);
             val1 = sym_tuple_getitem(ctx, seq, 1);
             CHECK_STACK_BOUNDS(1);
             break;
         }
 
+        case _UNPACK_SEQUENCE_UNIQUE_TWO_TUPLE: {
+            JitOptRef val1;
+            JitOptRef val0;
+            val1 = sym_new_not_null(ctx);
+            val0 = sym_new_not_null(ctx);
+            CHECK_STACK_BOUNDS(1);
+            stack_pointer[-1] = val1;
+            stack_pointer[0] = val0;
+            stack_pointer += 1;
+            ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
+            break;
+        }
+
+        case _UNPACK_SEQUENCE_UNIQUE_THREE_TUPLE: {
+            JitOptRef val2;
+            JitOptRef val1;
+            JitOptRef val0;
+            val2 = sym_new_not_null(ctx);
+            val1 = sym_new_not_null(ctx);
+            val0 = sym_new_not_null(ctx);
+            CHECK_STACK_BOUNDS(2);
+            stack_pointer[-1] = val2;
+            stack_pointer[0] = val1;
+            stack_pointer[1] = val0;
+            stack_pointer += 2;
+            ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
+            break;
+        }
+
         case _UNPACK_SEQUENCE_TUPLE: {
             JitOptRef seq;
             JitOptRef *values;
             seq = stack_pointer[-1];
             values = &stack_pointer[-1];
+            if (PyJitRef_IsUnique(seq) && sym_tuple_length(seq) == 3) {
+                ADD_OP(_UNPACK_SEQUENCE_UNIQUE_THREE_TUPLE, oparg, 0);
+            }
+            else if (PyJitRef_IsUnique(seq) && sym_tuple_length(seq) == oparg) {
+                ADD_OP(_UNPACK_SEQUENCE_UNIQUE_TUPLE, oparg, 0);
+            }
             for (int i = 0; i < oparg; i++) {
                 values[i] = sym_tuple_getitem(ctx, seq, oparg - i - 1);
             }
             break;
         }
 
+        case _UNPACK_SEQUENCE_UNIQUE_TUPLE: {
+            JitOptRef *values;
+            values = &stack_pointer[-1];
+            for (int _i = oparg; --_i >= 0;) {
+                values[_i] = sym_new_not_null(ctx);
+            }
+            CHECK_STACK_BOUNDS(-1 + oparg);
+            stack_pointer += -1 + oparg;
+            ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
+            break;
+        }
+
         case _UNPACK_SEQUENCE_LIST: {
             JitOptRef *values;
             values = &stack_pointer[-1];
         }
 
         case _COPY_FREE_VARS: {
+            PyCodeObject *co = get_current_code_object(ctx);
+            if (co == NULL) {
+                ctx->done = true;
+                break;
+            }
+            int offset = co->co_nlocalsplus - oparg;
+            for (int i = 0; i < oparg; ++i) {
+                ctx->frame->locals[offset + i] = sym_new_not_null(ctx);
+            }
             break;
         }
 
             JitOptRef tup;
             values = &stack_pointer[-oparg];
             tup = sym_new_tuple(ctx, oparg, values);
+            tup = PyJitRef_MakeUnique(tup);
             CHECK_STACK_BOUNDS(1 - oparg);
             stack_pointer[-oparg] = tup;
             stack_pointer += 1 - oparg;
             JitOptRef top;
             bottom = stack_pointer[-1 - (oparg-1)];
             assert(oparg > 0);
+            bottom = PyJitRef_RemoveUnique(bottom);
             top = bottom;
             CHECK_STACK_BOUNDS(1);
+            stack_pointer[-1 - (oparg-1)] = bottom;
             stack_pointer[0] = top;
             stack_pointer += 1;
             ASSERT_WITHIN_STACK_BOUNDS(__FILE__, __LINE__);
index e14ca1228d2f563058fa78a1447e19a13e09117e..2a8d8c45c588baa275fc53c715f82845d22e4790 100644 (file)
@@ -1521,7 +1521,7 @@ _Py_uop_frame_new(
 
     // Initialize with the initial state of all local variables
     for (int i = 0; i < arg_len; i++) {
-        frame->locals[i] = args[i];
+        frame->locals[i] = PyJitRef_RemoveUnique(args[i]);
     }
 
     // If the args are known, then it's safe to just initialize
index 7bb4d725d51a4d6e7cfd6fda8954222ed685239e..6ba9c43ef1f0c38cbdeee18aa3120434c17e88f8 100644 (file)
@@ -715,6 +715,8 @@ NON_ESCAPING_FUNCTIONS = (
     "_PyThreadState_PopCStackRefSteal",
     "doesnt_escape",
     "_Py_GatherStats_GetIter",
+    "_PyStolenTuple_Free",
+    "PyObject_GC_UnTrack",
 )