+
    Bi(             	          ^ RI t ^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RIH	t	H
t
HtHtHtHt ]P                  ! R4      t^ RIHt ] P$                  R 4       tR tR tR t]
]P.                  ! ]R	4      ] ! R
 R]P0                  4      4       4       4       t]
]P.                  ! ]R	4      ]]P.                  ! ]P4                  ! R4      R8H  R4       ! R R]P0                  4      4       4       4       4       t]
]P.                  ! ]R	4      ]]P.                  ! ]P4                  ! R4      R8H  R4       ! R R]P0                  4      4       4       4       4       tR t]R8X  d   ]P>                  ! 4        R# R# )    N)script_helperrequires_specializationimport_helperPy_GIL_DISABLEDrequires_jit_enabled
reset_code_testinternalcapiTIER2_THRESHOLDc              #   d   "   \        V 4        R x  \        V 4       R #   \        T 4       i ; i5iN)r   )funcs   &./usr/lib/python3.14/test/test_capi/test_opt.pyclear_executorsr      s'      t4
4s   0  0-0c                     V P                   pVP                  p\        ^ \        V4      ^4       F  p \        P
                  ! W4      u # 	  R#   \         d     K.  i ; ir   N)__code__co_coderangelen_opcodeget_executor
ValueError)r   coder   is   &   r   get_first_executorr      sZ    ==DllG1c'lA&	''00 '
   		s   AAAc              #   6   "   V  F  pV^ ,          x  K  	  R# 5ir    )exitems   & r   iter_opnamesr!   )   s     1g    c                 *    \        \        V 4      4      # r   )listr!   )r   s   &r   get_opnamesr%   .   s    R !!    z3optimizer not yet supported in free-threaded buildsc                   2   a  ] tR t^2t o R tR tR tRtV tR# )TestExecutorInvalidationc                n   / pR P                  R \        ^4       4       4      p\        \        P                  ! V4      W4       \        ^4       Uu. uF  q1RV 2,          NK  	  pp\        ^4       Uu. uF  p\        4       NK  	  ppV F
  pV! 4        K  	  V Uu. uF  p\        V4      NK  	  pp\        V4       Fk  w  rV P                  V
P                  4       4       VRV	^,             F  p\        P                  W4       K  	  V P                  V
P                  4       4       Km  	  R Fs  p	\        P                  Wi,          4       WR  F"  p
V P                  V
P                  4       4       K$  	  VRV	  F"  p
V P                  V
P                  4       4       K$  	  Ku  	  R# u upi u upi u upi )
c              3   <   "   T F  pR V R\          R2x  K  	  R# 5i)z
            def fz#():
                for _ in range(z():
                    pass
            Nr
   ).0ns   & r   	<genexpr>BTestExecutorInvalidation.test_invalidate_object.<locals>.<genexpr>:   s5      

 "A	   /0 1 "s   fN)            r   )joinr   exectextwrapdedentobjectr   	enumerate
assertTrueis_validr	   add_executor_dependencyinvalidate_executorsassertFalse)selfnsfunc_srcr-   funcs_objectsr0   	executorsr   exeobjs   &           r   test_invalidate_object/TestExecutorInvalidation.test_invalidate_object7   sh   99 

 q
 
 	X__X&/',Qx0x!qW++x0%*1X.X68X.AC 49:Eq'*E	:  	*FAOOCLLN+t!}!99#C %OOCLLN+	 + A227:> }  0 % !}/ %	 ! 1. ;s   F(4F-F2c                l   / p\        \        P                  ! R \         R24      W4       VR,          pV! 4        \	        V4      pV P                  V4       V P                  VP                  4       4       \        P                  VP                  4       V P                  VP                  4       4       R# )z5
            def f():
                for i in range(z$):
                    pass
        r0   N)r6   r7   r8   r   r   assertIsNotNoner;   r<   r	   r>   r   r?   )r@   rA   r0   rG   s   &   r   test_uop_optimizer_invalidation8TestExecutorInvalidation.test_uop_optimizer_invalidationY   s    X__ "  /0 1	  		
 sG	 #S!'..qzz:(r&   c                0   R  pV! 4        \        V4      pV P                  V4       V P                  VP                  4       4       \        P
                  ! 4        V P                  VP                  4       4       \        V4      pV P                  V4       R# )c                  2    \        \        4       F  p K  	  R # r   r   r   )rD   s    r   r0   CTestExecutorInvalidation.test_sys__clear_internal_caches.<locals>.fj   s    ?+ ,r&   N)r   rL   r;   r<   sys_clear_internal_cachesr?   assertIsNone)r@   r0   rG   s   &  r   test_sys__clear_internal_caches8TestExecutorInvalidation.test_sys__clear_internal_cachesi   sp    	 	
 #S!'""$( ##r&   r   N)	__name__
__module____qualname____firstlineno__rI   rM   rV   __static_attributes____classdictcell____classdict__s   @r   r(   r(   2   s     
 0D)  r&   r(   PYTHON_UOPS_OPTIMIZE0zNeeds uop optimizer to run.c                      a  ] tR t^wt o R tR tR tR tR tR t	R t
R tR	 tR
 tR tR tR tR tR tR tR tRtV tR# )TestUopsc                    R  pV! \         4       \        V4      pV P                  V4       \        V4      pV P	                  RV4       V P	                  RV4       R# )c                 ,    ^ pW8  d   V^,          pK  R# r   r   )xr   s   & r   testfunc*TestUops.test_basic_loop.<locals>.testfunc~       A%Q r&   _JUMP_TO_TOP_LOAD_FAST_BORROW_0Nr   r   rL   r%   assertInr@   rg   r   uopss   &   r   test_basic_loopTestUops.test_basic_loop}   sO    	
 	!)R 2nd++T2r&   c                   / p\        \        P                  ! R\         R24      W4       VR,          p\	        V4      pV P                  V4       V! 4        \	        V4      pV P                  V4       T P                  \        ;QJ d1    R \        V4       4       F  '       g   K   R4       R# 	  R4       R# ! R \        V4       4       4      4       R# )z2Check EXTENDED_ARG handling in superblock creationaU  
            def many_vars():
                # 260 vars, so z9 should have index 259
                a0 = a1 = a2 = a3 = a4 = a5 = a6 = a7 = a8 = a9 = 42
                b0 = b1 = b2 = b3 = b4 = b5 = b6 = b7 = b8 = b9 = 42
                c0 = c1 = c2 = c3 = c4 = c5 = c6 = c7 = c8 = c9 = 42
                d0 = d1 = d2 = d3 = d4 = d5 = d6 = d7 = d8 = d9 = 42
                e0 = e1 = e2 = e3 = e4 = e5 = e6 = e7 = e8 = e9 = 42
                f0 = f1 = f2 = f3 = f4 = f5 = f6 = f7 = f8 = f9 = 42
                g0 = g1 = g2 = g3 = g4 = g5 = g6 = g7 = g8 = g9 = 42
                h0 = h1 = h2 = h3 = h4 = h5 = h6 = h7 = h8 = h9 = 42
                i0 = i1 = i2 = i3 = i4 = i5 = i6 = i7 = i8 = i9 = 42
                j0 = j1 = j2 = j3 = j4 = j5 = j6 = j7 = j8 = j9 = 42
                k0 = k1 = k2 = k3 = k4 = k5 = k6 = k7 = k8 = k9 = 42
                l0 = l1 = l2 = l3 = l4 = l5 = l6 = l7 = l8 = l9 = 42
                m0 = m1 = m2 = m3 = m4 = m5 = m6 = m7 = m8 = m9 = 42
                n0 = n1 = n2 = n3 = n4 = n5 = n6 = n7 = n8 = n9 = 42
                o0 = o1 = o2 = o3 = o4 = o5 = o6 = o7 = o8 = o9 = 42
                p0 = p1 = p2 = p3 = p4 = p5 = p6 = p7 = p8 = p9 = 42
                q0 = q1 = q2 = q3 = q4 = q5 = q6 = q7 = q8 = q9 = 42
                r0 = r1 = r2 = r3 = r4 = r5 = r6 = r7 = r8 = r9 = 42
                s0 = s1 = s2 = s3 = s4 = s5 = s6 = s7 = s8 = s9 = 42
                t0 = t1 = t2 = t3 = t4 = t5 = t6 = t7 = t8 = t9 = 42
                u0 = u1 = u2 = u3 = u4 = u5 = u6 = u7 = u8 = u9 = 42
                v0 = v1 = v2 = v3 = v4 = v5 = v6 = v7 = v8 = v9 = 42
                w0 = w1 = w2 = w3 = w4 = w5 = w6 = w7 = w8 = w9 = 42
                x0 = x1 = x2 = x3 = x4 = x5 = x6 = x7 = x8 = x9 = 42
                y0 = y1 = y2 = y3 = y4 = y5 = y6 = y7 = y8 = y9 = 42
                z0 = z1 = z2 = z3 = z4 = z5 = z6 = z7 = z8 = z9 = z_
                while z9 > 0:
                    z9 = z9 - 1
                    +z9
        	many_varsc              3   6   "   T F  w  rr4WV3R8H  x  K  	  R# 5i)_LOAD_FAST_BORROWN)ru   i  r   r   )r,   opcodeopargrD   operands   &    r   r.   -TestUops.test_extended_arg.<locals>.<genexpr>   s(      G=E 9q $G48UU=Er"   TFN)
r6   r7   r8   r   r   rU   rL   r;   anyr$   )r@   rA   rs   r   s   &   r   test_extended_argTestUops.test_extended_arg   s    X__ "C8 DSBS T	9   @ A 	B {O		*"	*R  G=A"XG 	H 	H G=A"XG G 	Hr&   c                    R  pV! \         4       \        V4      pV P                  V4       \        V4      pV P	                  RV4       R# )c                 b    ^ pW8  d   V^,          p^^^^/w  r#K  ^ pW8  d   V^,          pK  R# r   r   )rf   r   abs   &   r   rg   4TestUops.test_unspecialized_unpack.<locals>.testfunc   s>    A%Q1a|1A%Q r&   _UNPACK_SEQUENCENrl   rn   s   &   r   test_unspecialized_unpack"TestUops.test_unspecialized_unpack   sA    	 	!)R 2($/r&   c                    R  pV! \         4       \        V4      pV P                  V4       \        V4      pV P	                  RV4       R# )c                 ,    ^ pW8  d   V^,          pK  R# r   r   r-   r   s   & r   rg   1TestUops.test_pop_jump_if_false.<locals>.testfunc   ri   r&   _GUARD_IS_TRUE_POPNrl   rn   s   &   r   test_pop_jump_if_falseTestUops.test_pop_jump_if_false   sA    	
 	!)R 2*D1r&   c                    R  pV! \        \        4      4       \        V4      pV P                  V4       \	        V4      pV P                  RV4       V P                  RV4       R# )c                 (    V  F  pVe   K	  ^ pK  	  R # r   r   r   rf   s   & r   rg   0TestUops.test_pop_jump_if_none.<locals>.testfunc   s    9A r&   _GUARD_IS_NONE_POP_GUARD_IS_NOT_NONE_POPNr   r   r   rL   r%   assertNotInrn   s   &   r   test_pop_jump_if_noneTestUops.test_pop_jump_if_none   sY    	
 	'()R 2-t4148r&   c                    R  pV! \        \        4      4       \        V4      pV P                  V4       \	        V4      pV P                  RV4       V P                  RV4       R# )c                 ,    V  F  pR pVf   K  ^ pK  	  R # r   r   r   s   & r   rg   4TestUops.test_pop_jump_if_not_none.<locals>.testfunc   s    =A r&   r   r   Nr   rn   s   &   r   test_pop_jump_if_not_none"TestUops.test_pop_jump_if_not_none   sY    	 	'()R 2-t4148r&   c                    R  pV! \         4       \        V4      pV P                  V4       \        V4      pV P	                  RV4       R# )c                 ,    ^ pW8  g   V^,          pK  R# r   r   r   s   & r   rg   0TestUops.test_pop_jump_if_true.<locals>.testfunc   s    AfQ r&   _GUARD_IS_FALSE_POPNrl   rn   s   &   r   test_pop_jump_if_trueTestUops.test_pop_jump_if_true   sA    	
 	!)R 2+T2r&   c                    R  pV! \         4       \        V4      pV P                  V4       \        V4      pV P	                  RV4       R# )c                 ,    ^ pW8  d   V^,          pK  R# r   r   r   s   & r   rg   -TestUops.test_jump_backward.<locals>.testfunc  ri   r&   rj   Nrl   rn   s   &   r   test_jump_backwardTestUops.test_jump_backward  s@    	
 	!)R 2nd+r&   c                    R  pV! \         4       \        V4      pV P                  V4       \        V4      pV P	                  RV4       R# )c                 H    ^ pW8  d   V^ 8  d   V) pMV5pV^,          pK  V# r   r   )r-   r   s   & r   rg   ,TestUops.test_jump_forward.<locals>.testfunc  s/    A%q5AAQHr&   _BINARY_OP_ADD_INTNrl   rn   s   &   r   test_jump_forwardTestUops.test_jump_forward  sC    	 	!)R 2 	*D1r&   c                    R  pV! \         4      pV P                  V\        \        \         4      4      4       \	        V4      pV P                  V4       \        V4      pV P                  RV4       R# )c                 >    ^ p\        V 4       F  pW,          pK  	  V# r   r   )r-   totalr   s   &  r   rg   .TestUops.test_for_iter_range.<locals>.testfunc&  s!    E1X
 Lr&   _GUARD_NOT_EXHAUSTED_RANGENr   assertEqualsumr   r   rL   r%   rm   )r@   rg   r   r   ro   s   &    r   test_for_iter_rangeTestUops.test_for_iter_range%  s_    	 )E/$: ;<)R  22D9r&   c                    R  p\        \        \        4      4      pV! V4      pV P                  V\	        V4      4       \        V4      pV P                  V4       \        V4      pV P                  RV4       R# )c                 ,    ^ pV  F  pW,          pK  	  V# r   r   r   r   r   s   &  r   rg   -TestUops.test_for_iter_list.<locals>.testfunc9      E
 Lr&   _GUARD_NOT_EXHAUSTED_LISTN)	r$   r   r   r   r   r   rL   r%   rm   r@   rg   r   r   r   ro   s   &     r   test_for_iter_listTestUops.test_for_iter_list8  sg    	 '(A')R  2148r&   c                    R  p\        \        \        4      4      pV! V4      pV P                  V\	        V4      4       \        V4      pV P                  V4       \        V4      pV P                  RV4       R# )c                 ,    ^ pV  F  pW,          pK  	  V# r   r   r   s   &  r   rg   .TestUops.test_for_iter_tuple.<locals>.testfuncM  r   r&   _GUARD_NOT_EXHAUSTED_TUPLEN)	tupler   r   r   r   r   rL   r%   rm   r   s   &     r   test_for_iter_tupleTestUops.test_for_iter_tupleL  sg    	 %()A')R  22D9r&   c                    R  p. ROp\        V4      pV! V4       VP                  ^4       V P                  \        4      ;_uu_ 4        \	        V4       RRR4       R#   + '       g   i     R# ; i)c                     V  F  pK  	  R # r   r   )itrf   s   & r   rg   .TestUops.test_list_edge_case.<locals>.testfunca  s     r&   N)r4   r3   r2   )iterappendassertRaisesStopIterationnext)r@   rg   r   r   s   &   r   test_list_edge_caseTestUops.test_list_edge_case`  sP    	 !W	}--H .---s   	AA0	c                    R  pV! \         4       \        V4      pV P                  V4       \        V4      pV P	                  RV4       V P	                  RV4       R# )c                 @    R  p\        V 4       F  pV! V4       K  	  R# )c                     V ^,           # r4   r   rf   s   &r   dummyATestUops.test_call_py_exact_args.<locals>.testfunc.<locals>.dummyn      s
r&   Nr   r-   r   r   s   &  r   rg   2TestUops.test_call_py_exact_args.<locals>.testfuncm      1Xa r&   _PUSH_FRAMEr   Nrl   rn   s   &   r   test_call_py_exact_args TestUops.test_call_py_exact_argsl  sO    	 	!)R 2mT**D1r&   c                    R  pV! \         4       \        V4      pV P                  V4       \        V4      pV P	                  RV4       R# )c                 D    \        V 4       F  pV^ 8  d   ^ pK  ^pK  	  R# r   r   r   s   & r   rg   ,TestUops.test_branch_taken.<locals>.testfunc|  s!    1Xq5AA	 r&   r   Nrl   rn   s   &   r   test_branch_takenTestUops.test_branch_taken{  sA    	 	!)R 2+T2r&   c                0  a  ! R  R4      oV3R lpV! \         \         4      pV P                  V\        \        \         4      4      \         ,          R,          4       \	        V4      pV P                  V4       \        V4      pV P                  RV4       R# )c                   2   a  ] tR tRt o R tR tR tRtV tR# )/TestUops.test_for_iter_tier_two.<locals>.MyIteri  c                    Wn         R # r   r-   )r@   r-   s   &&r   __init__8TestUops.test_for_iter_tier_two.<locals>.MyIter.__init__  s    r&   c                    V # r   r   r@   s   &r   __iter__8TestUops.test_for_iter_tier_two.<locals>.MyIter.__iter__  s    r&   c                z    V ;P                   ^,          un         V P                   ^ 8  d   \        hV P                   # r   )r-   r   r   s   &r   __next__8TestUops.test_for_iter_tier_two.<locals>.MyIter.__next__  s)    !66A:''vvr&   r   N)	rX   rY   rZ   r[   r   r   r   r\   r]   r^   s   @r   MyIterr     s      r&   r   c                 |   < ^ p\        V4       F)  pS! V 4       F  pVRV,          V,           ,          pK  	  K+  	  V# )r   i  r   )r-   mrf   r   jr   s   &&   r   rg   1TestUops.test_for_iter_tier_two.<locals>.testfunc  s<    A1XAa!OA #  Hr&   i  _FOR_ITER_TIER_TWONr   )r@   rg   rf   r   ro   r   s   &    @r   test_for_iter_tier_twoTestUops.test_for_iter_tier_two  st    		 			 _o6Co 67/IDPQ)R 2*D1r&   c                >   R  pV! \         ^,          4      pV P                  V\         ^,          4       \        V4      pV P                  V4       \	        \        V4      4      pVP                  R4      VP                  R4      ,           pV P                  V^4       R# )c                 "   ^ p\        V 4       F}  pV^,          '       d
   V^,          pV^,          '       d
   V^,          pV^,          '       d
   V^,          pV^,          '       d
   V^,          pV^,          '       g   Kt  V^,          pK  	  V# r   r   )r-   bitsr   s   &  r   rg   0TestUops.test_confidence_score.<locals>.testfunc  sv    D1Xt88AIDt88AIDT66AIDT66AIDT66AID  Kr&   r   r   N)r   r   r   rL   r$   r!   countassertLessEqual)r@   rg   rf   r   opsr   s   &     r   test_confidence_scoreTestUops.test_confidence_score  s    	 _q()Oa/0)R <#$		./#))<Q2RRUA&r&   r   N)rX   rY   rZ   r[   rp   r{   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r\   r]   r^   s   @r   rc   rc   w   sa     3-H^0&2993,2(:&9(:(
2328' 'r&   rc   c                     a  ] tR tRt o R tR tR tR tR tR t	R t
R	 tR
 tR tR tR tR tR tR tR tR tR tR tR tR tR tR tR tR tR tR tR tR t R t!]"PF                  ! R 4      R! 4       t$R" t%R# t&R$ t'R% t(R& t)R' t*R( t+R) t,R* t-R+ t.R, t/R- t0R. t1R/ t2R0 t3R1 t4R2 t5R3 t6R4 t7R5 t8R6 t9R7 t:R8 t;R9 t<R: t=R; t>R< t?R= t@R> tAR? tBR@ tCRA tDRB tERC tFRD tGRE tHRFtIV tJRG# )HTestUopsOptimizationi  c                .    V! V4      p\        V4      pW43# r   )r   )r@   rg   argresr   s   &&&  r   _run_with_optimizer(TestUopsOptimization._run_with_optimizer  s    sm)wr&   c                @   R  pV P                  V\        4      w  r#V P                  V4       V P                  V\        ^,
          ^,          ^,           4       \	        V4       Uu. uF  qDR8X  g   K  VNK  	  pp\	        V4       Uu. uF  qDR8X  g   K  VNK  	  pp\	        V4       Uu. uF  qDR8X  g   K  VNK  	  ppV P                  \        V4      ^4       V P                  \        V4      ^4       V P                  \        V4      ^4       R# u upi u upi u upi )c                 b    ^ p\        V 4       F  pW,           pV^,           pV^,          pK  	  X# r   r   )loopsnumr   rf   r   s   &    r   rg   @TestUopsOptimization.test_int_type_propagation.<locals>.testfunc  s5    C5\IEq " Hr&   r   _GUARD_TOS_INT_GUARD_NOS_INTN)r
  r   rL   r   r!   assertGreaterEqualr   r  )r@   rg   r	  r   opnamebinop_countguard_tos_int_countguard_nos_int_counts   &       r   test_int_type_propagation.TestUopsOptimization.test_int_type_propagation  s   	 **8_ER 2a7!;<,8,<_,<&J^@^vv,<_4@4Dc4D&RbHbvv4Dc4@4Dc4D&RbHbvv4DcK 0!4S!45q9S!45q9 `ccs$   %D2DDD)D6Dc                >  a R  oV3R lpV! \         4      p\        V4      pV P                  V4       V P                  V\         ^,
          ^,          4       \	        V4       Uu. uF  qDR8X  g   K  VNK  	  pp\	        V4       Uu. uF  qDR8X  g   K  VNK  	  pp\	        V4       Uu. uF  qDR8X  g   K  VNK  	  ppV P                  \        V4      ^4       V P                  \        V4      ^4       V P                  \        V4      ^4       R# u upi u upi u upi )c                     W ,           # r   r   r   s   &r   doubleLTestUopsOptimization.test_int_type_propagation_through_frame.<locals>.double  	    5Lr&   c                 b   < ^ p\        V 4       F  pW,           pS! V4      pV^,          pK  	  X# r   r   )r  r  r   rf   r   r  s   &    r   rg   NTestUopsOptimization.test_int_type_propagation_through_frame.<locals>.testfunc  s6    C5\I1Iq " Hr&   r   r  r  Nr   r   rL   r   r!   r  r   r  	r@   rg   r	  r   r  r  r  r  r  s	   &       @r   'test_int_type_propagation_through_frame<TestUopsOptimization.test_int_type_propagation_through_frame     		 ')R 2a78,8,<_,<&J^@^vv,<_4@4Dc4D&RbHbvv4Dc4@4Dc4D&RbHbvv4DcK 0!4S!45q9S!45q9 `cc$   $D1DDD(D5Dc                >  a R  oV3R lpV! \         4      p\        V4      pV P                  V4       V P                  V\         ^,
          ^,          4       \	        V4       Uu. uF  qDR8X  g   K  VNK  	  pp\	        V4       Uu. uF  qDR8X  g   K  VNK  	  pp\	        V4       Uu. uF  qDR8X  g   K  VNK  	  ppV P                  \        V4      ^4       V P                  \        V4      ^4       V P                  \        V4      ^4       R# u upi u upi u upi )c                     W ,           # r   r   r   s   &r   r  ITestUopsOptimization.test_int_type_propagation_from_frame.<locals>.double  r  r&   c                 b   < ^ p\        V 4       F  pS! V4      pW3,           pV^,          pK  	  X# r   r   )r  r  r   r   rf   r  s   &    r   rg   KTestUopsOptimization.test_int_type_propagation_from_frame.<locals>.testfunc  s6    C5\3KEq " Hr&   r   r  r  Nr!  r"  s	   &       @r   $test_int_type_propagation_from_frame9TestUopsOptimization.test_int_type_propagation_from_frame  r%  r&  c                    R  pV P                  V\        4      w  r#V P                  V4       \        V4       Uu. uF  qDR8X  g   K  VNK  	  ppV P	                  \        V4      ^4       R# u upi )c                 b    ^ pW8  d'   W,           p^pV^,           W#,           pV^,          pK,  X# r   r   )r  r  rf   yr   s   &    r   rg   =TestUopsOptimization.test_int_impure_region.<locals>.testfunc  s4    C+IQEqHr&   r   N)r
  r   rL   r!   r  r   )r@   rg   r	  r   r  r  s   &     r   test_int_impure_region+TestUopsOptimization.test_int_impure_region  si    	 **8_ER ,8,<_,<&J^@^vv,<_K 0!4 `s   A,A,c                    R  pV P                  V\        4      w  r#V P                  V4       \        V4      pV P	                  RV4       V P	                  RV4       V P                  RV4       R# )c                 @    R  p\        V 4       F  pV! V4       K  	  R# )c                     V ^,           # r   r   r   s   &r   r   MTestUopsOptimization.test_call_py_exact_args.<locals>.testfunc.<locals>.dummy!  r   r&   Nr   r   s   &  r   rg   >TestUopsOptimization.test_call_py_exact_args.<locals>.testfunc   r   r&   r   r   _CHECK_PEP_523N)r
  r   rL   r%   rm   r   r@   rg   r	  r   ro   s   &    r   r   ,TestUopsOptimization.test_call_py_exact_args  sb    	 **8_ER 2mT**D1)40r&   c                   R  pV P                  V\        4      w  r#V P                  V\        ^,
          ^,          4       V P                  V4       \	        V4      pV P                  RV4       V P                  RV4       R# )c                 :    \        V 4       F  pW,           pK  	  X# r   r   )r-   r   rf   s   &  r   rg   LTestUopsOptimization.test_int_type_propagate_through_range.<locals>.testfunc.  s    1XE Hr&   r  r  Nr
  r   r   rL   r%   r   r:  s   &    r   %test_int_type_propagate_through_range:TestUopsOptimization.test_int_type_propagate_through_range-  sp    	 **8_E2a78R 2)40)40r&   c                d   R  pV P                  V\        4      w  r#V P                  V^4       V P                  V4       \	        V4      pV P                  RV4       V P                  RV4       \        V4       Uu. uF  qUR8X  g   K  VNK  	  ppV P                  \        V4      ^4       R# u upi )c                 j    ^p\        V 4       F!  pTpTpTpTpW4,           V,           V,           pK#  	  X# r   r   )r-   r0  r   rf   zr   r   r	  s   &       r   rg   ?TestUopsOptimization.test_int_value_numbering.<locals>.testfunc<  s?    A1Xeai!m  Jr&   r  r  N)	r
  r   r   rL   r%   rm   r   r!   r   )r@   rg   r	  r   ro   r  guard_tos_counts   &      r   test_int_value_numbering-TestUopsOptimization.test_int_value_numbering;  s    		 **8_Ea R 2&-)400<R0@_0@fN^D^660@__-q1 `s   ;B-B-c                    R  pV P                  V\        4      w  r#V P                  V\        \	        \        4      4      4       V P                  V4       \        V4      pV P                  RV4       R# )c                 h    \        V 4       F  p\        V 4       Uu. uF  q"NK  	  upu # 	  R # u upi r   r   )r-   rD   r   s   &  r   rg   9TestUopsOptimization.test_comprehension.<locals>.testfuncQ  s,    1X#(8,8a8,, ,s   
/r   N)r
  r   r   r$   r   rL   r%   r   r:  s   &    r   test_comprehension'TestUopsOptimization.test_comprehensionP  s_    	- **8_Ed5#9:;R 2-t4r&   c                   a R  oV3R lpV! ^4       >\         P                  ! 4        R oV! ^ 4       \        V4      pR# )c                     V ^,           # r   r   r   s   &r   r   HTestUopsOptimization.test_call_py_exact_args_disappearing.<locals>.dummy\  s    Q3Jr&   c                 <   < \        V 4       F  pS! V4       K  	  R # r   r   )r-   r   r   s   & r   rg   KTestUopsOptimization.test_call_py_exact_args_disappearing.<locals>.testfunc_  s    1Xa r&   c                     V ^,           # r3   r   r   s   &r   r   rP  h      q5Lr&   N)gccollectr   )r@   rg   r   r   s   &  @r   $test_call_py_exact_args_disappearing9TestUopsOptimization.test_call_py_exact_args_disappearing[  s8    		
 	


	)r&   c                    \         P                  ! R \        P                  ! R4      RR7      pV P	                  V^ ,          P
                  ^ V4       R# )-caL  
        import _testinternalcapi
        import opcode
        import _opcode

        def get_first_executor(func):
            code = func.__code__
            co_code = code.co_code
            for i in range(0, len(co_code), 2):
                try:
                    return _opcode.get_executor(code, i)
                except ValueError:
                    pass
            return None

        def get_opnames(ex):
            return {item[0] for item in ex}

        def testfunc(n):
            for i in range(n):
                x = range(i)
            return x

        testfunc(_testinternalcapi.TIER2_THRESHOLD)

        ex = get_first_executor(testfunc)
        assert ex is not None
        uops = get_opnames(ex)
        assert "_LOAD_GLOBAL_BUILTINS" not in uops
        assert "_LOAD_CONST_INLINE_BORROW" in uops
        1)
PYTHON_JITN)r   run_python_until_endr7   r8   r   rc)r@   results   & r   !test_promote_globals_to_constants6TestUopsOptimization.test_promote_globals_to_constantsr  sF    33D(// K ;< => 	q&1r&   c                   R  pV P                  V\        4      w  r#V P                  V\        ^,           4       V P                  V4       \	        V4      p\        V4       Uu. uF  qUR8X  g   K  VNK  	  pp\        V4       Uu. uF  qUR8X  g   K  VNK  	  ppV P                  \        V4      ^4       V P                  \        V4      ^4       V P                  RV4       R# u upi u upi )c                 v    R p\        V 4       F'  pVR,           pVR,           pVR,           pVR,           pK)  	  V#       ?g      ?r   r-   r   rD   s   &  r   rg   JTestUopsOptimization.test_float_add_constant_propagation.<locals>.testfunc  @    A1XHHHH	 
 Hr&   _GUARD_TOS_FLOAT_GUARD_NOS_FLOAT_BINARY_OP_ADD_FLOATN	r
  r   assertAlmostEqualrL   r%   r!   r  r   rm   r@   rg   r	  r   ro   r  guard_tos_float_countguard_nos_float_counts   &       r   #test_float_add_constant_propagation8TestUopsOptimization.test_float_add_constant_propagation  s    	 **8_EsOa$78R 26B26F g6FFTfJf6F g6B26F g6FFTfJf6F gS!67;S!67; 	,d3 !h gs   "C#/C#C(C(c                   R  pV P                  V\        4      w  r#V P                  V\        ) ^,           4       V P                  V4       \	        V4      p\        V4       Uu. uF  qUR8X  g   K  VNK  	  pp\        V4       Uu. uF  qUR8X  g   K  VNK  	  ppV P                  \        V4      ^4       V P                  \        V4      ^4       V P                  RV4       R# u upi u upi )c                 v    R p\        V 4       F'  pVR,
          pVR,
          pVR,
          pVR,
          pK)  	  V# re  r   rg  s   &  r   rg   OTestUopsOptimization.test_float_subtract_constant_propagation.<locals>.testfunc  ri  r&   rj  rk  _BINARY_OP_SUBTRACT_FLOATNrm  ro  s   &       r   (test_float_subtract_constant_propagation=TestUopsOptimization.test_float_subtract_constant_propagation  s    	 **8_Es_$4q$89R 26B26F g6FFTfJf6F g6B26F g6FFTfJf6F gS!67;S!67; 	148 !h gs   #C$0C$C)C)c                   R  pV P                  V\        4      w  r#V P                  VR4       V P                  V4       \	        V4      p\        V4       Uu. uF  qUR8X  g   K  VNK  	  pp\        V4       Uu. uF  qUR8X  g   K  VNK  	  ppV P                  \        V4      ^4       V P                  \        V4      ^4       V P                  RV4       R# u upi u upi )c                 v    R p\        V 4       F'  pVR ,          pVR ,          pVR ,          pVR ,          pK)  	  V# rf  r   rg  s   &  r   rg   OTestUopsOptimization.test_float_multiply_constant_propagation.<locals>.testfunc  s@    A1XGGGG	 
 Hr&   rf  rj  rk  _BINARY_OP_MULTIPLY_FLOATNrm  ro  s   &       r   (test_float_multiply_constant_propagation=TestUopsOptimization.test_float_multiply_constant_propagation  s    	 **8_EsC(R 26B26F g6FFTfJf6F g6B26F g6FFTfJf6F gS!67;S!67; 	148 !h g   C$C9CCc                   R  pV P                  V\        4      w  r#V P                  VR4       V P                  V4       \	        V4      p\        V4       Uu. uF  qUR8X  g   K  VNK  	  pp\        V4       Uu. uF  qUR8X  g   K  VNK  	  ppV P                  \        V4      ^4       V P                  \        V4      ^4       V P                  RV4       R# u upi u upi )c                 n    R p\        V 4       F#  pW,            W,            W,            W,            K%  	  V#  r   rg  s   &  r   rg   CTestUopsOptimization.test_add_unicode_propagation.<locals>.testfunc  s2    A1X	 
 Hr&   r  _GUARD_TOS_UNICODE_GUARD_NOS_UNICODE_BINARY_OP_ADD_UNICODEN	r
  r   r   rL   r%   r!   r  r   rm   r@   rg   r	  r   ro   r  guard_tos_unicode_countguard_nos_unicode_counts   &       r   test_add_unicode_propagation1TestUopsOptimization.test_add_unicode_propagation  s    	 **8_Eb!R 28DR8H"k8HfVjLj668H"k8DR8H"k8HfVjLj668H"kS!891=S!891=.5	 #l"kr  c                   R  pV P                  V\        4      w  r#V P                  V4       V P                  V4       \	        V4      p\        V4       Uu. uF  qUR8X  g   K  VNK  	  pp\        V4       Uu. uF  qUR8X  g   K  VNK  	  ppV P                  \        V4      ^4       V P                  \        V4      ^4       V P                  RV4       R# u upi u upi )c                 N    R p\        V 4       F  pW8H  pW8H  pW8H  pW8H  pK  	  X# r|  r   r-   r   rD   rf   s   &   r   rg   MTestUopsOptimization.test_compare_op_type_propagation_float.<locals>.testfunc  s8    A1XFFFF	 
 Hr&   rj  rk  _COMPARE_OP_FLOATN	r
  r   r;   rL   r%   r!   r  r   rm   ro  s   &       r   &test_compare_op_type_propagation_float;TestUopsOptimization.test_compare_op_type_propagation_float  s    	 **8_ER 26B26F g6FFTfJf6F g6B26F g6FFTfJf6F gS!67;S!67;)40	 !h g   C#C8CCc                   R  pV P                  V\        4      w  r#V P                  V4       V P                  V4       \	        V4      p\        V4       Uu. uF  qUR8X  g   K  VNK  	  pp\        V4       Uu. uF  qUR8X  g   K  VNK  	  ppV P                  \        V4      ^4       V P                  \        V4      ^4       V P                  RV4       R# u upi u upi )c                 N    ^p\        V 4       F  pW8H  pW8H  pW8H  pW8H  pK  	  X# r   r   r  s   &   r   rg   KTestUopsOptimization.test_compare_op_type_propagation_int.<locals>.testfunc   s8    A1XFFFF	 
 Hr&   r  r  _COMPARE_OP_INTNr  )r@   rg   r	  r   ro   r  r  r  s   &       r   $test_compare_op_type_propagation_int9TestUopsOptimization.test_compare_op_type_propagation_int  s    	 **8_ER 24@4Dc4D&RbHbvv4Dc4@4Dc4D&RbHbvv4DcS!45q9S!45q9'.	 dcr  c                   R  pV P                  V\        4      w  r#V P                  V^4       V P                  V4       \	        V4      p\        V4       Uu. uF  qUR8X  g   K  VNK  	  pp\        V4       Uu. uF  qUR8X  g   K  VNK  	  ppV P                  \        V4      ^4       V P                  \        V4      ^ 4       V P                  RV4       R# u upi u upi )c                 V    ^p\        V 4       F  pV^8  d   ^ pV^8  g   K  ^pK  	  X# r   r   r  s   &   r   rg   STestUopsOptimization.test_compare_op_type_propagation_int_partial.<locals>.testfunc  s4    A1Xq5Aq5A	 
 Hr&   r  r  r  Nr  )r@   rg   r	  r   ro   r  r  r  s   &       r   ,test_compare_op_type_propagation_int_partialATestUopsOptimization.test_compare_op_type_propagation_int_partial  s    	 **8_Ea R 24@4Dc4D&RbHbvv4Dc4@4Dc4D&RbHbvv4DcS!45q90115'.	 dcr  c                   R  pV P                  V\        4      w  r#V P                  V^4       V P                  V4       \	        V4      p\        V4       Uu. uF  qUR8X  g   K  VNK  	  pp\        V4       Uu. uF  qUR8X  g   K  VNK  	  ppV P                  \        V4      ^4       V P                  \        V4      ^ 4       V P                  RV4       R# u upi u upi )c                 V    R p\        V 4       F  pVR8  d   ^ pVR8  g   K  ^pK  	  X# )rf  g       @r   r  s   &   r   rg   UTestUopsOptimization.test_compare_op_type_propagation_float_partial.<locals>.testfunc(  s4    A1Xs7As7A	 
 Hr&   rk  rj  r  Nr  )r@   rg   r	  r   ro   r  rq  rp  s   &       r   .test_compare_op_type_propagation_float_partialCTestUopsOptimization.test_compare_op_type_propagation_float_partial'  s    	 **8_Ea R 26B26F g6FFTfJf6F g6B26F g6FFTfJf6F gS!67;23Q7)40	 !h gr  c                   R  pV P                  V\        4      w  r#V P                  V4       V P                  V4       \	        V4      p\        V4       Uu. uF  qUR8X  g   K  VNK  	  pp\        V4       Uu. uF  qUR8X  g   K  VNK  	  ppV P                  \        V4      ^4       V P                  \        V4      ^4       V P                  RV4       R# u upi u upi )c                 N    R p\        V 4       F  pW8H  pW8H  pW8H  pW8H  pK  	  X# r  r   r  s   &   r   rg   OTestUopsOptimization.test_compare_op_type_propagation_unicode.<locals>.testfunc<  s8    A1XFFFF	 
 Hr&   r  r  _COMPARE_OP_STRNr  r  s   &       r   (test_compare_op_type_propagation_unicode=TestUopsOptimization.test_compare_op_type_propagation_unicode;  s    	 **8_ER 28DR8H"k8HfVjLj668H"k8DR8H"k8HfVjLj668H"kS!891=S!891='.	 #l"kr  c                   / p\         P                  ! R 4      p\        W!V4       VR,          p^ VR&   V P                  V\        ^,
          4      w  rEV P                  V4       ^VR&   V P                  V\        ^,
          4      w  rEV P                  V4       \        V4      pV P                  RV4       V P                  RV4       V P                  RV4       / p\        W!V4       VR,          p^ VR&   V P                  V\        ^,
          4      w  rEV P                  V4       RVR&   V P                  V\        ^,
          4      w  rEV P                  V4       R# )z}
            def testfunc(n):
                for i in range(n):
                    x = _test_global + _test_global
        rg   _test_globalr  r  r   gQ	@N)
r7   r8   r6   r
  r   rU   rL   r%   r   rm   )r@   rA   srcrg   rD   r   ro   s   &      r   test_type_inconsistency,TestUopsOptimization.test_type_inconsistencyO  sG   oo  
 	Sbj>>((?Q3FG">((?Q3FGR 2)40)40*D1 Sbj>>((?Q3FG"!>((?Q3FG"r&   c           	       aa R  oR oVV3R lpV P                  V\        4      w  r#V P                  V\        ^,          4       V P                  V4       V UUUu. uF
  w  p rVWF3NK  	  ppppV Uu. uF  q^ ,          NK  	  p	pV P                  V	P	                  R4      ^4       V P                  V	P	                  R4      ^4       V P                  V	P	                  R4      ^ 4       V P                  V	P	                  R4      ^4       \
        P                  SP                  4      p
V P                  RV
3V4       R# u upppi u upi )c                     V ^,
          # r   r   r   s   &r   dummy12PTestUopsOptimization.test_combine_stack_space_checks_sequential.<locals>.dummy12o  rU  r&   c                     V ^,           pW3# rT  r   r0  rD  s   & r   dummy13PTestUopsOptimization.test_combine_stack_space_checks_sequential.<locals>.dummy13q      AA4Kr&   c                    < ^ p\        V 4       F+  pS! ^4      pS! ^	4      w  rEWV,           V,           ,          pK-  	  V# r   r   )r-   r   rD   r   cdr  r  s   &     r   rg   QTestUopsOptimization.test_combine_stack_space_checks_sequential.<locals>.testfunct  s@    A1XAJqzUQY  Hr&   r   _RETURN_VALUE_CHECK_STACK_SPACE_CHECK_STACK_SPACE_OPERANDN	r
  r   r   rL   r   r	   get_co_framesizer   rm   )r@   rg   r	  r   rv   rD   rx   uops_and_operandsuop	uop_nameslargest_stackr  r  s   &          @@r   *test_combine_stack_space_checks_sequential?TestUopsOptimization.test_combine_stack_space_checks_sequentialn  s   			 **8_Eo23R LNOB3H61af.BO'89'8VV'8	97;91=)=>B)EFJ)::7;K;KL3]CEVW P9s   E 4Ec           	       aa R  oV3R loV3R lpV P                  V\        4      w  r#V P                  V\        ^,          4       V P                  V4       V UUUu. uF
  w  p rVWF3NK  	  ppppV Uu. uF  q^ ,          NK  	  p	pV P                  V	P	                  R4      ^4       V P                  V	P	                  R4      ^4       V P                  V	P	                  R4      ^ 4       V P                  V	P	                  R4      ^4       \
        P                  SP                  4      \
        P                  SP                  4      ,           p
V P                  RV
3V4       R# u upppi u upi )c                     V ^,           # r2   r   r   s   &r   r  LTestUopsOptimization.test_combine_stack_space_checks_nested.<locals>.dummy12  rU  r&   c                    < S! V 4      pW3# r   r   )r0  rD  r  s   & r   dummy15LTestUopsOptimization.test_combine_stack_space_checks_nested.<locals>.dummy15  s    
A4Kr&   c                 b   < ^ p\        V 4       F  pS! ^4      w  r4WV,           ,          pK  	  V# r   r   )r-   r   rD   r   r  r  s   &    r   rg   MTestUopsOptimization.test_combine_stack_space_checks_nested.<locals>.testfunc  s3    A1XqzU
  Hr&   r   r  r  r  Nr  )r@   rg   r	  r   rv   rD   rx   r  r  r  r  r  r  s   &          @@r   &test_combine_stack_space_checks_nested;TestUopsOptimization.test_combine_stack_space_checks_nested  s?   			 **8_Eo12R LNOB3H61af.BO'89'8VV'8	97;91=)=>B)EFJ ..w/?/?@..w/?/?@A 	 	3]CEVW P9s   E&6E-c           	       aaa R  oR oVV3R loVV3R lpV P                  V\        4      w  r#V P                  V\        ^,          4       V P                  V4       V UUUu. uF
  w  p rVWF3NK  	  ppppV Uu. uF  q^ ,          NK  	  p	pV P                  V	P	                  R4      ^4       V P                  V	P	                  R4      ^4       V P                  V	P	                  R4      ^ 4       V P                  V	P	                  R4      ^4       \
        P                  SP                  4      \
        P                  SP                  4      ,           p
V P                  RV
3V4       R# u upppi u upi )	c                     V ^,           # r  r   r   s   &r   r  STestUopsOptimization.test_combine_stack_space_checks_several_calls.<locals>.dummy12  rU  r&   c                     V ^,           pW3# rT  r   r  s   & r   r  STestUopsOptimization.test_combine_stack_space_checks_several_calls.<locals>.dummy13  r  r&   c                 0   < S! V 4      pS! V4      w  r#WV3# r   r   r0  rD  rf   wr  r  s   &   r   dummy18STestUopsOptimization.test_combine_stack_space_checks_several_calls.<locals>.dummy18       
A1:DA7Nr&   c                    < ^ p\        V 4       F3  pS! ^4      pS! ^4      w  rEpWV,           V,           V,           ,          pK5  	  V# r   r   )	r-   r   rD   r   r  r  er  r  s	   &      r   rg   TTestUopsOptimization.test_combine_stack_space_checks_several_calls.<locals>.testfunc  sG    A1XAJ!!*aUQY]"  Hr&   r   r  r  r  Nr  r@   rg   r	  r   rv   rD   rx   r  r  r  r  r  r  r  s   &          @@@r   -test_combine_stack_space_checks_several_callsBTestUopsOptimization.test_combine_stack_space_checks_several_calls  sD   				 **8_Eo23R LNOB3H61af.BO'89'8VV'8	97;91=)=>B)EFJ ..w/?/?@..w/?/?@A 	 	3]CEVW P9   $E,<E3c           	       aaa R  oR oVV3R loVV3R lpV P                  V\        4      w  r#V P                  V\        ^,          4       V P                  V4       V UUUu. uF
  w  p rVWF3NK  	  ppppV Uu. uF  q^ ,          NK  	  p	pV P                  V	P	                  R4      ^4       V P                  V	P	                  R4      ^4       V P                  V	P	                  R4      ^ 4       V P                  V	P	                  R4      ^4       \
        P                  SP                  4      \
        P                  SP                  4      ,           p
V P                  RV
3V4       R# u upppi u upi )	c                     V ^,           # r  r   r   s   &r   r  cTestUopsOptimization.test_combine_stack_space_checks_several_calls_different_order.<locals>.dummy12  rU  r&   c                     V ^,           pW3# rT  r   r  s   & r   r  cTestUopsOptimization.test_combine_stack_space_checks_several_calls_different_order.<locals>.dummy13  r  r&   c                 0   < S! V 4      pS! V4      w  r#WV3# r   r   r  s   &   r   r  cTestUopsOptimization.test_combine_stack_space_checks_several_calls_different_order.<locals>.dummy18  r  r&   c                    < ^ p\        V 4       F3  pS! ^4      w  r4pS! ^4      pWV,           V,           V,           ,          pK5  	  V# r   r   )	r-   r   rD   r  r  r  r   r  r  s	   &      r   rg   dTestUopsOptimization.test_combine_stack_space_checks_several_calls_different_order.<locals>.testfunc  sG    A1X!!*aAJUQY]"  Hr&   r   r  r  r  Nr  r  s   &          @@@r   =test_combine_stack_space_checks_several_calls_different_orderRTestUopsOptimization.test_combine_stack_space_checks_several_calls_different_order  sD   				 **8_Eo23R LNOB3H61af.BO'89'8VV'8	97;91=)=>B)EFJ ..w/?/?@..w/?/?@A 	 	3]CEVW P9r  c           	       aaaaaaa R  oV3R loV3R loV3R loVV3R loV3R loVVV3R loVVV3R lpV P                  V\        4      w  r#V P                  V\        ^,          4       V P                  V4       V UUUu. uF
  w  p rVWF3NK  	  ppppV Uu. uF  q^ ,          NK  	  p	pV P                  V	P	                  R4      ^4       V P                  V	P	                  R	4      ^4       V P                  V	P	                  R
4      ^ 4       V P                  V	P	                  R4      ^4       \
        P                  SP                  4      \
        P                  SP                  4      ,           \
        P                  SP                  4      ,           \
        P                  SP                  4      ,           \
        P                  SP                  4      ,           p
V P                  RV
3V4       R# u upppi u upi )c                     V # r   r   r   s   &r   dummy0ETestUopsOptimization.test_combine_stack_space_complex.<locals>.dummy0      Hr&   c                    < S! V 4      # r   r   rf   r  s   &r   dummy1ETestUopsOptimization.test_combine_stack_space_complex.<locals>.dummy1      !9r&   c                    < S! V 4      # r   r   )rf   r  s   &r   dummy2ETestUopsOptimization.test_combine_stack_space_complex.<locals>.dummy2  r  r&   c                    < S! V 4      # r   r   r  s   &r   dummy3ETestUopsOptimization.test_combine_stack_space_complex.<locals>.dummy3  r  r&   c                 $   < S! V 4      pS! V4      # r   r   )rf   r0  r  r  s   & r   dummy4ETestUopsOptimization.test_combine_stack_space_complex.<locals>.dummy4  s    q	A!9r&   c                    < S! V 4      # r   r   )rf   r  s   &r   dummy5ETestUopsOptimization.test_combine_stack_space_complex.<locals>.dummy5  r  r&   c                 4   < S! V 4      pS! V4      pS! V4      # r   r   )rf   r0  rD  r  r  r  s   &  r   dummy6ETestUopsOptimization.test_combine_stack_space_complex.<locals>.dummy6  s    q	Aq	A!9r&   c                    < ^ p\        V 4       F1  pS! ^4      pS! ^4      pS! ^4      pWV,           V,           ,          pK3  	  V# r   r   )	r-   r   rD   r   r  r  r  r  r  s	   &     r   rg   GTestUopsOptimization.test_combine_stack_space_complex.<locals>.testfunc  sG    A1X1I1I1IUQY	 
 Hr&   r   r  r  r  Nr  )r@   rg   r	  r   rv   rD   rx   r  r  r  r  r  r  r  r  r  r  r  s   &          @@@@@@@r    test_combine_stack_space_complex5TestUopsOptimization.test_combine_stack_space_complex  s   								 **8_Eo12R LNOB3H61af.BO'89'8VV'8	97<92>)=>B)EFJ..v?..v?@..v?@ ..v?@ ..v?	@ 	 	)=9;L	
 P9s   G:Hc           
     &  aa R p/ pRpRP                  \        V4       Uu. uF  pRV^,            RV R2NK  	  up4      pRV^,
           R2p\        \        P                  ! W5,           V,           4      W"4       VR,          oV3R	 loV3R
 lpV P                  V\        4      w  rV P                  V\        V^	,           ,          4       V P                  V	4       V	 U
UUu. uF
  w  p
 rW3NK  	  ppp
pV Uu. uF  q^ ,          NK  	  ppV P                  VP                  R4      ^4       V P                  VP                  R4      ^4       V P                  VP                  R4      ^ ^.4       VP                  R4      ^ 8X  dE   \        P                  SP                  4      \        P                  SP                  4      ,           pM\        P                  SP                  4      pV P                  RV3V4       R# u upi u uppp
i u upi )i'  z*
            def dummy_large(a0):
        r  z
                az = az + 1
        z
                return az	
        dummy_largec                 &   < S! V 4      pV^,           # r  r   )rD  r0  r  s   & r   r  UTestUopsOptimization.test_combine_stack_space_checks_large_framesize.<locals>.dummy15<  s    AAq5Lr&   c                 N   < ^ p\        V 4       F  pVS! ^4      ,          pK  	  V# r   r   )r-   r   rD   r  s   &  r   rg   VTestUopsOptimization.test_combine_stack_space_checks_large_framesize.<locals>.testfunc@  (    A1XWQZ Hr&   r   r  r  N)r5   r   r6   r7   r8   r
  r   r   rL   r   rm   r	   r  r   )r@   repetitionsrA   headerr-   bodyreturn_rg   r	  r   rv   rD   rx   r  r  r  r  r  r  s   &                @@r   /test_combine_stack_space_checks_large_framesizeDTestUopsOptimization.test_combine_stack_space_checks_large_framesize   s   
  ww;')'A#d1# 	') *$Q (	 	X__V]W45r>'		 **8_EoqABR LNOB3H61af.BO'89'8VV'8	97;)EFJ 	ioo&:;aVD??/0A5!2273C3CD!22;3G3GHI 
 .>>w?O?OPM)=9;L	
_)@ P9s   H#H;Hc           	     d  a V3R  loV3R lp\         P                  ! 4       p \         P                  ! \        V,           4       V P	                  V\        4      w  r4\         P                  ! V4       V P                  V\        ^*,          4       V P                  V4       V UUUu. uF
  w  p rgWW3NK  	  ppppV U	u. uF  q^ ,          NK  	  p
p	V P                  V
P                  R4      ^4       V P                  V
P                  R4      ^ 4       V P                  V
P                  R4      ^4       V P                  V
P                  R4      ^4       \        P                  SP                  4      pV P                  RV3V4       R#   \         P                  ! T4       i ; iu upppi u up	i )c                 4   < V ^ 8  d   S! V ^,
          4      # ^*# r   r   )rf   r  s   &r   r  OTestUopsOptimization.test_combine_stack_space_checks_recursion.<locals>.dummy15^  s    a%q1u~%r&   c                 N   < ^ p\        V 4       F  pVS! V 4      ,          pK  	  V# r   r   )r-   r   rD   r  s   &  r   rg   PTestUopsOptimization.test_combine_stack_space_checks_recursion.<locals>.testfuncb  r  r&   r   r  r  r  N)rS   getrecursionlimitsetrecursionlimitr   r
  r   rL   r   r	   r  r   rm   )r@   rg   recursion_limitr	  r   rv   rD   rx   r  r  r  r  r  s   &           @r   )test_combine_stack_space_checks_recursion>TestUopsOptimization.test_combine_stack_space_checks_recursion]  s^   		 //1	3!!/O"CD..xIGC!!/2o23R LNOB3H61af.BO'89'8VV'8	97;91=)=>B)EFJ)::7;K;KL3]CEVW !!/2 P9s   9F 'F&?F-F#c                   aaaaaa	a
a R  oV3R loV3R loV3R loV3R loV3R lo	V	3R lo
V
3R loV3R lpV P                  V^ 4      w  r#V P                  VR
4       V P                  V4       R	# )c                     V # r   r   r   s   &r   dummy_a6TestUopsOptimization.test_many_nested.<locals>.dummy_a|  r  r&   c                    < S! V 4      # r   r   )rf   r*  s   &r   dummy_b6TestUopsOptimization.test_many_nested.<locals>.dummy_b~      1:r&   c                    < S! V 4      # r   r   )rf   r-  s   &r   dummy_c6TestUopsOptimization.test_many_nested.<locals>.dummy_c  r/  r&   c                    < S! V 4      # r   r   )rf   r1  s   &r   dummy_d6TestUopsOptimization.test_many_nested.<locals>.dummy_d  r/  r&   c                    < S! V 4      # r   r   )rf   r4  s   &r   dummy_e6TestUopsOptimization.test_many_nested.<locals>.dummy_e  r/  r&   c                    < S! V 4      # r   r   )rf   r7  s   &r   dummy_f6TestUopsOptimization.test_many_nested.<locals>.dummy_f  r/  r&   c                    < S! V 4      # r   r   )rf   r:  s   &r   dummy_g6TestUopsOptimization.test_many_nested.<locals>.dummy_g  r/  r&   c                    < S! V 4      # r   r   )rf   r=  s   &r   dummy_h6TestUopsOptimization.test_many_nested.<locals>.dummy_h  r/  r&   c                 N   < ^ p\        V 4       F  pVS! V 4      ,          pK  	  V# r   r   )r-   r   rD   r@  s   &  r   rg   7TestUopsOptimization.test_many_nested.<locals>.testfunc  r  r&   N   )r
  r   rU   )r@   rg   r	  r   r*  r-  r1  r4  r7  r:  r=  r@  s   &   @@@@@@@@r   test_many_nested%TestUopsOptimization.test_many_nestedz  sd    									 **8R8g&"r&   c                   a R  oV3R lpV P                  V\        4      w  r#V P                  V\        ^,
          4       V P                  V4       V P	                  R\        V4      4       R# )c               3      "   R x  R # 5ir   r   r   r&   r   gen7TestUopsOptimization.test_return_generator.<locals>.gen  s
     Js   	c                 :   < \        V 4       F
  pS! 4        K  	  X# r   r   )r-   r   rI  s   & r   rg   <TestUopsOptimization.test_return_generator.<locals>.testfunc  s    1X Hr&   _RETURN_GENERATORN)r
  r   r   rL   rm   r%   r@   rg   r	  r   rI  s   &   @r   test_return_generator*TestUopsOptimization.test_return_generator  sY    		 **8_Eo12R );r?;r&   z2Tracing into generators currently isn't supported.c                   a R  oV3R lpV P                  V\        4      w  r#V P                  V\        \	        \        4      4      4       V P                  V4       V P                  R\        V4      4       R# )c              3   :   "   \        V 4       F  pVx  K	  	  R # 5ir   r   r   s   & r   rI  3TestUopsOptimization.test_for_iter_gen.<locals>.gen  s     1X s   c                 >   < S! V 4      p^ pV F  pW#,          pK  	  V# r   r   )r-   gsr   rI  s   &   r   rg   8TestUopsOptimization.test_for_iter_gen.<locals>.testfunc  s'    AAA Hr&   _FOR_ITER_GEN_FRAMEN)r
  r   r   r   r   rL   rm   r%   rN  s   &   @r   test_for_iter_gen&TestUopsOptimization.test_for_iter_gen  s^    		 **8_Ec%"89:R +[_=r&   c                V   \         P                  ! 4       P                  p^p^ p\        R4       F&  pW",            RVRV^	,	          ,          &   W2,          pK(  	  V P	                  \        V4      \        4       V P	                  \        V4      \        4       V P                  VR4       R# )r4   rf  xag      @NrD  )rS   	_getframef_localsr   assertIstypefloatr   )r@   lr   rV  r   s   &    r   -test_modified_local_is_seen_by_optimized_codeBTestUopsOptimization.test_modified_local_is_seen_by_optimized_code  s~    MMO$$wAE!Ad16lOFA   	d1gu%d1gu%F#r&   c                   R  p ! R R4      pV P                  W! 4       4      w  r4\        \        V4      4      pV P                  V4       V P	                  V\
        ^,          4       VP                  R4      pV P	                  V^4       R# )c                 ~    ^ p\        \        4       F'  pWP                  ,          pWP                  ,          pK)  	  V# r   r   r   attr)r   rf   rD   s   &  r   thingCTestUopsOptimization.test_guard_type_version_removed.<locals>.thing  3    A?+VVVV , Hr&   c                       ] tR tRt^tRtR# )ATestUopsOptimization.test_guard_type_version_removed.<locals>.Fooi  r   NrX   rY   rZ   r[   rh  r\   r   r&   r   Foorm        Dr&   ro  _GUARD_TYPE_VERSIONNr
  r$   r!   rL   r   r   r   )r@   ri  ro  r	  r   opnamesguard_type_version_counts   &      r   test_guard_type_version_removed4TestUopsOptimization.test_guard_type_version_removed  s|    		 	 **5#%8|B'(R o12#*==1F#G 115r&   c                (  a R oV3R lp ! R R4      pV P                  W! 4       4      w  r4\        \        V4      4      pV P                  V4       V P	                  V\
        ^,          4       VP                  R4      pV P	                  V^4       R# )zC
Verify that the guard type version if we have an inlined function
c                      R # r   r   r   r&   r   fnHTestUopsOptimization.test_guard_type_version_removed_inlined.<locals>.fn  s    r&   c                    < ^ p\        \        4       F.  pWP                  ,          pS! 4        WP                  ,          pK0  	  V# r   rg  )r   rf   rD   ry  s   &  r   ri  KTestUopsOptimization.test_guard_type_version_removed_inlined.<locals>.thing  s9    A?+VVVV , Hr&   c                       ] tR tRt^tRtR# )ITestUopsOptimization.test_guard_type_version_removed_inlined.<locals>.Fooi  r   Nrn  r   r&   r   ro  r~    rp  r&   ro  rq  Nrr  )r@   ri  ro  r	  r   rs  rt  ry  s   &      @r   'test_guard_type_version_removed_inlined<TestUopsOptimization.test_guard_type_version_removed_inlined  s    
			 	 **5#%8|B'(R o12#*==1F#G 115r&   c                  aa	 VV	3R  lp ! R R4      o	 ! R R4      oV P                  VS	! 4       4      w  r#\        \        V4      4      pV P                  V4       V P	                  V\
        ^,          ^,           4       VP                  R4      pVP                  R^ V4      pVP                  RV4      pV P	                  VRV P                  R4      ^4       V P	                  WEV P                  R	4      ^4       R# )
c                    < ^ p\        \        ^,          ^,           4       FK  pWP                  ,          p\        SS3V\        ^,           8H  ,          R^4       WP                  ,          pKM  	  V# )r   rh  )r   r   rh  setattr)r   rf   r   Barro  s   &  r   ri  PTestUopsOptimization.test_guard_type_version_removed_invalidation.<locals>.thing  s_    A?Q.23VV
 c
1!(;#;<faHVV 4 Hr&   c                       ] tR tRt^tRtR# )NTestUopsOptimization.test_guard_type_version_removed_invalidation.<locals>.Fooi  r   Nrn  r   r&   r   ro  r    rp  r&   ro  c                       ] tR tRtRtR# )NTestUopsOptimization.test_guard_type_version_removed_invalidation.<locals>.Bari  r   N)rX   rY   rZ   r[   r\   r   r&   r   r  r    s    r&   r  _CALL_BUILTIN_FAST$_LOAD_ATTR_NONDESCRIPTOR_WITH_VALUESNrq  _CHECK_VALIDITYr
  r$   r!   rL   r   r   indexr   )
r@   ri  r	  r   rs  callload_attr_topload_attr_bottomr  ro  s
   &       @@r   ,test_guard_type_version_removed_invalidationATestUopsOptimization.test_guard_type_version_removed_invalidation  s    
		 		 	 **5#%8|B'(R o1A56}}12&LaQUV"==)OQUV-0667LMqQ&67==>OPRSTr&   c                   R  p ! R R4      pV P                  W! 4       4      w  r4\        \        V4      4      pV P                  V4       V P	                  V\
        ^,          4       VP                  R4      pVP                  R^ V4      pVP                  RV4      pV P	                  VRV P                  R4      ^4       V P	                  WVV P                  R4      ^4       R# )c                     ^ p\        \        4       F2  pWP                  ,          p\        R4       WP                  ,          pK4  	  V# )r   None)r   r   rh  evalr   rf   r   s   &  r   ri  LTestUopsOptimization.test_guard_type_version_removed_escaping.<locals>.thing
  s:    A?+VVVVV	 ,
 Hr&   c                       ] tR tRt^tRtR# )JTestUopsOptimization.test_guard_type_version_removed_escaping.<locals>.Fooi  r   Nrn  r   r&   r   ro  r    rp  r&   ro   _CALL_BUILTIN_FAST_WITH_KEYWORDSr  Nrq  r  r  )	r@   ri  ro  r	  r   rs  r  r  r  s	   &        r   (test_guard_type_version_removed_escaping=TestUopsOptimization.test_guard_type_version_removed_escaping  s    		 	**5#%8|B'(R o12}}?@&LaQUV"==)OQUV-0667LMqQ&67==>OPRSTr&   c                   R p ! R R4      pV P                  W! 4       4      w  r4V P                  V\        ^,          4       V P                  V4       V P                  \	        \        V4      4      P                  R4      ^4       V P                  VP                  4       4       ^ Vn	        V P                  VP                  4       4       R# )z9
Verify that the executor is invalided on a type change.
c                 ~    ^ p\        \        4       F'  pWP                  ,          pWP                  ,          pK)  	  V# r   rg  r  s   &  r   ri  PTestUopsOptimization.test_guard_type_version_executor_invalidated.<locals>.thing$  rk  r&   c                       ] tR tRt^tRtR# )NTestUopsOptimization.test_guard_type_version_executor_invalidated.<locals>.Fooi+  r   Nrn  r   r&   r   ro  r  +  rp  r&   ro  rq  N)r
  r   r   rL   r$   r!   r   r;   r<   rh  r?   )r@   ri  ro  r	  r   s   &    r   ,test_guard_type_version_executor_invalidatedATestUopsOptimization.test_guard_type_version_executor_invalidated  s    
		 	 **5#%8o12R l2./556KLaP&'r&   c                :     ! R R4      pR pV! V! 4       4       R# )z]
Tests that setting a type version doesn't cause a segfault when later looking at the stack.
c                   ,   a  ] tR tRt o R tR tRtV tR# )ATestUopsOptimization.test_type_version_doesnt_segfault.<locals>.Ai=  c                    / V n         R # r   rh  r   s   &r   r   JTestUopsOptimization.test_type_version_doesnt_segfault.<locals>.A.__init__>  s	    	r&   c                $    R V P                   V&   R # r   r  )r@   r  s   &&r   methodHTestUopsOptimization.test_type_version_doesnt_segfault.<locals>.A.methodA  s    !%		#r&   r  N)rX   rY   rZ   r[   r   r  r\   r]   r^   s   @r   Ar  =  s     & &r&   r  c                 n    \        ^d4       F%  pR R 4        R V P                  R4      3 4        K'  	  R# )d   c              3   $   "   T F  qx  K  	  R # 5ir   r   r,   rD   s   & r   r.   UTestUopsOptimization.test_type_version_doesnt_segfault.<locals>.fn.<locals>.<genexpr>F  s     BqB   c              3   $   "   T F  qx  K  	  R # 5ir   r   r  s   & r   r.   r  G  s     -,q,r  Nr   )r   r  )r   rD   s   & r   ry  BTestUopsOptimization.test_type_version_doesnt_segfault.<locals>.fnD  s*    3ZB-QXXd^,-  r&   Nr   )r@   r  ry  s   &  r   !test_type_version_doesnt_segfault6TestUopsOptimization.test_type_version_doesnt_segfault6  s    	& 	&	.
 	13r&   c                   R  pV! \         4       \        V4      pV P                  V4       \        V4      pV P	                  RV4       V P	                  RV4       V P                  RV4       V P                  RV4       R# )c                 @    \        V 4       F  p\        V4       K  	  R # r   )r   global_identityr   s   & r   rg   JTestUopsOptimization.test_func_guards_removed_or_reduced.<locals>.testfuncL  s    1X" r&   r   _CHECK_FUNCTION_VERSION_INLINE_CHECK_FUNCTION_VERSION_CHECK_FUNCTION_EXACT_ARGSN)r   r   rL   r%   rm   r   rn   s   &   r   #test_func_guards_removed_or_reduced8TestUopsOptimization.test_func_guards_removed_or_reducedK  sq    	#
 	!)R 2mT*6=2D95t<r&   c                    ^R.,          . .,           pV P                  \        4      ;_uu_ 4        V Uu0 uF  q"kK  	   pRRR4       R# u upi   + '       g   i     R# ; i)zG
Tests that the correct number of pops are inserted into the
exit stub
N)r   	TypeError)r@   itemsr    s   &  r   test_jit_error_pops(TestUopsOptimization.test_jit_error_pops]  sP    
 dVrd"y))#$edTe$ *)$ *))s   A
AAAA!	c                J   \         P                  ! R 4      p. ROp\        P                  ! V^R7       FX  w  w  r4w  rVVP	                  W4WVR7      pV P                  W4WVR7      ;_uu_ 4        \        P                  ! RV4       RRR4       KZ  	  R#   + '       g   i     Ko  ; i)a  
            import _testinternalcapi

            L, R, X, Y = {l}, {r}, {x}, {y}

            def check(actual: complex, expected: complex) -> None:
                assert actual == expected, (actual, expected)
                assert type(actual) is type(expected), (actual, expected)

            def f(l: complex, r: complex) -> None:
                expected_local_local = pow(l, r) + pow(l, r)
                expected_const_local = pow(L, r) + pow(L, r)
                expected_local_const = pow(l, R) + pow(l, R)
                expected_const_const = pow(L, R) + pow(L, R)
                for _ in range(_testinternalcapi.TIER2_THRESHOLD):
                    # Narrow types:
                    l + l, r + r
                    # The powers produce results, and the addition is unguarded:
                    check(l ** r + l ** r, expected_local_local)
                    check(L ** r + L ** r, expected_const_local)
                    check(l ** R + l ** R, expected_local_const)
                    check(L ** R + L ** R, expected_const_const)

            # JIT for one pair of values...
            f(L, R)
            # ...then run with another:
            f(X, Y)
        )repeat)rb  rrf   r0  r[  N))r4   r4   )r4   )rf  r4   )r4   rf  )r        ?)rf  rf  )g      r  )r7   r8   	itertoolsproductformatsubTestr   assert_python_ok)r@   templateinterestingrb  r  rf   r0  rV  s   &       r   'test_power_type_depends_on_input_values<TestUopsOptimization.test_power_type_depends_on_input_valuesf  s    ?? $ 8
 (//AFNFQFQ!A3A!11..tQ7 21 G111s   +BB"c                   R  pV P                  V\        4      w  r#V P                  V^4       V P                  V4       \	        V4      pV P                  RV4       V P                  RV4       V P                  RV4       R# )c                 P    \        V 4       F  p^p^pW#3pVw  rVWV,           pK  	  X# r   r   )r-   rD   r   r   trf   r0  r  s   &       r   rg   GTestUopsOptimization.test_symbols_flow_through_tuples.<locals>.testfunc  s6    1XDE  Hr&   r   r  r  Nr
  r   r   rL   r%   rm   r   r:  s   &    r    test_symbols_flow_through_tuples5TestUopsOptimization.test_symbols_flow_through_tuples  su    	 **8_Ea R 2*D1)40)40r&   c                6   a  ! R  R4      oV3R lpV! 4        R# )c                   &   a  ] tR tRt o R tRtV tR# )CTestUopsOptimization.test_decref_escapes.<locals>.Convert9999ToNonei  c                    \         P                  ! ^4      P                  pVR,          \        P                  8X  d   RVR&   R# R# )r4   r   N)rS   r]  r^  r	   r   )r@   rA   s   & r   __del__KTestUopsOptimization.test_decref_escapes.<locals>.Convert9999ToNone.__del__  s8    ]]1%..c7/???"BsG @r&   r   N)rX   rY   rZ   r[   r  r\   r]   r^   s   @r   Convert9999ToNoner    s     # #r&   r  c                     <  \        \        P                  ^,           4       F  p S! 4       pW ,            RpW ,            K  	  R#   \         d     R# i ; i)r4   N)r   r	   r   r  )r   r-   r  s     r   crash_addition@TestUopsOptimization.test_decref_escapes.<locals>.crash_addition  sQ    0@@1DEA)+AEAEE	 F
  s   A A AANr   )r@   r  r  s   & @r   test_decref_escapes(TestUopsOptimization.test_decref_escapes  s    	# 	#	 	r&   c                   R  pV P                  V\        4      w  r#V P                  V\        R4      \        ,          4       V P	                  V4       \        V4      pV P                  VP                  R4      ^4       V P                  VP                  R4      ^ 4       V P                  VP                  R4      \        R4      4       R# )c                    . p\        V 4       F  pV\        8H  pVP                  R 4       V'       gf   VP                  R4       V'       g   VP                  R4       VP                  R4       V'       d   VP                  R4       VP                  R4       VP                  R4       V'       d   VP                  R4       VP                  R4       K  	  V# )r  BCDXEFGr   r   r   )r-   tracer   falses   &   r   r0   GTestUopsOptimization.test_narrow_type_to_constant_bool_false.<locals>.f  s    E1X_,S!LL% S)LL%S)LL%S!LL%S!   Lr&   ABCDEFGr   r   _CALL_LIST_APPENDNr
  r   r   r$   rL   r%   r   r   r@   r0   r  r   ro   s   &    r   'test_narrow_type_to_constant_bool_false<TestUopsOptimization.test_narrow_type_to_constant_bool_false      	( ,,Q@	Y/ ABR 2$9:A>$891=$78#i.Ir&   c                   R  pV P                  V\        4      w  r#V P                  V\        R4      \        ,          4       V P	                  V4       \        V4      pV P                  VP                  R4      ^ 4       V P                  VP                  R4      ^4       V P                  VP                  R4      \        R4      4       R# )c                    . p\        V 4       F  pV\        8g  pVP                  R 4       V'       df   VP                  R4       V'       g   VP                  R4       VP                  R4       V'       d   VP                  R4       VP                  R4       VP                  R4       V'       g   VP                  R4       VP                  R4       K  	  V# )r  r  r  r  r  r  r  r  r  )r-   r  r   trues   &   r   r0   FTestUopsOptimization.test_narrow_type_to_constant_bool_true.<locals>.f  s    E1XO+S!LL%S)LL%S)LL%S!LL%S!   Lr&   r  r   r   r  Nr  r  s   &    r   &test_narrow_type_to_constant_bool_true;TestUopsOptimization.test_narrow_type_to_constant_bool_true  r  r&   c                   R  pV P                  V\        4      w  r#V P                  V\        R4      \        ,          4       V P	                  V4       \        V4      pV P                  VP                  R4      ^4       V P                  VP                  R4      ^ 4       V P                  VP                  R4      \        R4      4       R# )c                    . p\        V 4       F  pV\        8H  pV^ ,           pVP                  R4       V'       gf   VP                  R4       V'       g   VP                  R4       VP                  R4       V'       d   VP                  R4       VP                  R4       VP                  R4       V'       d   VP                  R4       VP                  R4       K  	  V# )	r   r  r  r  r  r  r  r  r  r  )r-   r  r   r  zeros   &    r   r0   ETestUopsOptimization.test_narrow_type_to_constant_int_zero.<locals>.f  s    E1X_,qyS!LL%S)LL%S)LL%S!LL%S!! " Lr&   r  r   r   r  Nr  r  s   &    r   %test_narrow_type_to_constant_int_zero:TestUopsOptimization.test_narrow_type_to_constant_int_zero  s    	* ,,Q@	Y/ ABR 2$9:A>$891=$78#i.Ir&   c                   R  pV P                  V\        4      w  r#V P                  V\        R4      \        ,          4       V P	                  V4       \        V4      pV P                  VP                  R4      ^4       V P                  VP                  R4      ^ 4       V P                  VP                  R4      \        R4      4       R# )c                    . p\        V 4       F  pV\        8H  pR RV pVP                  R4       V'       gf   VP                  R4       V'       g   VP                  R4       VP                  R4       V'       d   VP                  R 4       VP                  R4       VP                  R4       V'       d   VP                  R 4       VP                  R4       K  	  V# )	r  Nr  r  r  r  r  r  r  r  )r-   r  r   r  emptys   &    r   r0   FTestUopsOptimization.test_narrow_type_to_constant_str_empty.<locals>.f  s    E1X _,FUS!LL% S)LL%S)LL%S!LL%S!# $ Lr&   r  r   r   r  Nr  r  s   &    r   &test_narrow_type_to_constant_str_empty;TestUopsOptimization.test_narrow_type_to_constant_str_empty  s    	, ,,Q@	Y/ ABR 2$9:A>$891=$78#i.Ir&   c                    R  pV P                  V\        4      w  r#V P                  V\        4       V P                  V4       \	        V4      pV P                  RV4       V P                  RV4       R# )c                 X    ^ p\        V 4       F  p^
p^
pW48X  g   K  V^,          pK  	  V# r   r   )r-   rf   rD   r   r   s   &    r   rg   TTestUopsOptimization.test_compare_pop_two_load_const_inline_borrow.<locals>.testfunc6  s4    A1X6FA	 
 Hr&   r  !_POP_TWO_LOAD_CONST_INLINE_BORROWNr?  r:  s   &    r   -test_compare_pop_two_load_const_inline_borrowBTestUopsOptimization.test_compare_pop_two_load_const_inline_borrow5  sf    	 **8_Eo.R 2*D1<dCr&   c                    R pV P                  V\        4      w  r#V P                  V\        4       V P                  V4       \	        V4      pV P                  RV4       V P                  RV4       R# )z]
Test that _TO_BOOL_BOOL is removed from code like:

res = foo in some_set
if res:
    ....

c                 h    ^ p0 Rmp\        V 4       F  p^pWB9   pV'       g   K  V^,          pK  	  V# )r   >   r4   r3   r2   r   )r-   rf   rV  rD   r   in_sets   &     r   rg   HTestUopsOptimization.test_to_bool_bool_contains_op_set.<locals>.testfuncO  s;    AA1X6FA	 
 Hr&   _CONTAINS_OP_SET_TO_BOOL_BOOLNr  r:  s   &    r   !test_to_bool_bool_contains_op_set6TestUopsOptimization.test_to_bool_bool_contains_op_setF  sc    	 **8_Eo.R 2($/$/r&   c                    R pV P                  V\        4      w  r#V P                  V\        4       V P                  V4       \	        V4      pV P                  RV4       V P                  RV4       R# )z^
Test that _TO_BOOL_BOOL is removed from code like:

res = foo in some_dict
if res:
    ....

c                 p    ^ p^^^^^^/p\        V 4       F  p^pWB9   pV'       g   K  V^,          pK  	  V# r   r   )r-   rf   rV  rD   r   in_dicts   &     r   rg   ITestUopsOptimization.test_to_bool_bool_contains_op_dict.<locals>.testfunci  sH    AAq!Q"A1X&7FA	 
 Hr&   _CONTAINS_OP_DICTr  Nr  r:  s   &    r   "test_to_bool_bool_contains_op_dict7TestUopsOptimization.test_to_bool_bool_contains_op_dict`  sc    	 **8_Eo.R 2)40$/r&   c                    R  pV P                  V\        4      w  r#V P                  V^ 4       V P                  V4       \	        V4      pV P                  RV4       V P                  RV4       R# )c                 n    \        V 4       F%  pV\        8H  pR RV pVR,          pV'       g   K$   ^# 	  ^ # )r  Nr  rQ   )r-   r   r  r  s   &   r   r0   DTestUopsOptimization.test_remove_guard_for_known_type_str.<locals>.f|  s;    1X_,FU5  r&   _TO_BOOL_STRr  Nr  r@   r0   r	  r   ro   s   &    r   $test_remove_guard_for_known_type_str9TestUopsOptimization.test_remove_guard_for_known_type_str{  sc    	 **1o>a R 2nd+-t4r&   c                f   R  pV P                  V\        4      w  r#V P                  V\        4       V P                  V4       \	        V4      pV P                  VP                  R4      ^ 4       V P                  VP                  R4      ^4       V P                  VP                  R4      ^4       R# )c                 Z    ^ p\        V 4       F  p/ p^VR&   WR,          ,          pK  	  V# )r   Spamr   )r-   rf   rD   r  s   &   r   r0   ETestUopsOptimization.test_remove_guard_for_known_type_dict.<locals>.f  s5    A1X&	vY  Hr&   _GUARD_NOS_DICT_STORE_SUBSCR_DICT_BINARY_OP_SUBSCR_DICTNr
  r   r   rL   r%   r   r(  s   &    r   %test_remove_guard_for_known_type_dict:TestUopsOptimization.test_remove_guard_for_known_type_dict  s    	 **1o>o.R 2$56:$891=$<=qAr&   c                :   R  pV P                  V\        4      w  r#V P                  V^\        ,          4       V P                  V4       \	        V4      pV P                  VP                  R4      ^ 4       V P                  VP                  R4      ^4       V P                  VP                  R4      ^ 4       V P                  VP                  R4      ^4       V P                  VP                  R4      ^4       V P                  VP                  R4      ^4       R# )c                     ^ p\        V 4       F1  p^ .p^V^ &   Vw  pV^ ,          pV'       g   K"  WV,           ,          pK3  	  V# r   r   )r-   rf   rD   rb  r   r   s   &     r   r0   ETestUopsOptimization.test_remove_guard_for_known_type_list.<locals>.f  sL    A1XC!aD1QJA  Hr&   _GUARD_NOS_LIST_STORE_SUBSCR_LIST_INT_GUARD_TOS_LIST_UNPACK_SEQUENCE_LIST_BINARY_OP_SUBSCR_LIST_INT_TO_BOOL_LISTNr2  r(  s   &    r   %test_remove_guard_for_known_type_list:TestUopsOptimization.test_remove_guard_for_known_type_list  s    		 **1o>a/12R 2$56:$<=qA$56:$;<a@$@A1EO4a8r&   c                    R  pV P                  V\        4      w  r#V P                  V\        4       V P                  V4       \	        V4      pV P                  RV4       V P                  RV4       R# )c                 F    ^ p\        V 4       F  pVRR9   ,          pK  	  V# )r   r-  >   r-  r   r-   rf   rD   s   &  r   r0   DTestUopsOptimization.test_remove_guard_for_known_type_set.<locals>.f  s)    A1XVx'' Hr&   _GUARD_TOS_ANY_SETr  Nr
  r   r   rL   r%   r   rm   r(  s   &    r   $test_remove_guard_for_known_type_set9TestUopsOptimization.test_remove_guard_for_known_type_set  sd    	 **1o>o.R 2-t4($/r&   c                b   R  pV P                  V\        4      w  r#V P                  V^
\        ,          4       V P                  V4       \	        V4      pV P                  RV4       V P                  RV4       V P                  RV4       V P                  RV4       V P                  RV4       R# )c                     ^ p\        V 4       F2  pRpVw  rEw  rgV^ ,          pWV,           V,           V,           ,          pK4  	  V# )r   )r4   r3   )r2   )r1   r   )	r-   rf   rD   r  t_0t_1t_2_0t_2_1t_2_1_0s	   &        r   r0   FTestUopsOptimization.test_remove_guard_for_known_type_tuple.<locals>.f  sL    A1X%+,(.5(3Y&00	 
 Hr&   _GUARD_TOS_TUPLE_UNPACK_SEQUENCE_TUPLE_UNPACK_SEQUENCE_TWO_TUPLE_GUARD_NOS_TUPLE_BINARY_OP_SUBSCR_TUPLE_INTNrE  r(  s   &    r   &test_remove_guard_for_known_type_tuple;TestUopsOptimization.test_remove_guard_for_known_type_tuple  s    	 **1o>b?23R 2+T2.52D9+T23T:r&   c                   R  pV P                  V\        4      w  r#V P                  VR.\        ,          4       V P                  V4       \	        V4      pV P                  RV4       V P                  RV4       V P                  RV4       R# )c                 x    . pR p\        V 4       F&  pV^ ,          pRV,           pVP                  V4       K(  	  V# )foobar)r   r   )r-   rf   rV  rD   r0  rD  s   &     r   rg   PTestUopsOptimization.test_binary_subcsr_str_int_narrows_to_str.<locals>.testfunc  s>    AA1XaDAI  Hr&   barf_BINARY_OP_SUBSCR_STR_INTr  r  Nr  r:  s   &    r   )test_binary_subcsr_str_int_narrows_to_str>TestUopsOptimization.test_binary_subcsr_str_int_narrows_to_str  s|    	 **8_Evh89R 2148 	-t4.5r&   c                   R  pV P                  V\        4      w  r#V P                  V\        4       V P                  V4       \	        V4      pV P                  RV4       V P                  RV4       V P                  RV4       R# )c                 ^    ^ p\        V 4       F  pV\        ^*4      \        J ,          pK  	  V# r   )r   r`  intrB  s   &  r   rg   7TestUopsOptimization.test_call_type_1.<locals>.testfunc  s,    A1XT"X_$ Hr&   _CALL_TYPE_1_GUARD_NOS_NULL_GUARD_CALLABLE_TYPE_1Nr  r:  s   &    r   test_call_type_1%TestUopsOptimization.test_call_type_1  st    	 **8_Eo.R 2nd+*D1148r&   c                    R  pV P                  V\        4      w  r#V P                  V\        4       V P                  V4       \	        V4      pV P                  RV4       V P                  RV4       R# )c                 b    ^ p\        V 4       F  p\        ^*4      pVf   K  V^,          pK  	  V# r   )r   r`  )r-   rf   rD   r  s   &   r   rg   GTestUopsOptimization.test_call_type_1_result_is_const.<locals>.testfunc  s3    A1XH=FA  Hr&   rd  r   Nr  r:  s   &    r    test_call_type_1_result_is_const5TestUopsOptimization.test_call_type_1_result_is_const  sc    	 **8_Eo.R 2nd+148r&   c                   R  pV P                  V\        4      w  r#V P                  V\        4       V P                  V4       \	        V4      pV P                  RV4       V P                  RV4       V P                  RV4       R# )c                 h    ^ p\        V 4       F   p\        ^*4      pVR8X  g   K  V^,          pK"  	  V# )r   42r   strr-   rf   rD   r0  s   &   r   rg   6TestUopsOptimization.test_call_str_1.<locals>.testfunc
  s5    A1XG9FA  Hr&   _CALL_STR_1re  _GUARD_CALLABLE_STR_1Nr  r:  s   &    r   test_call_str_1$TestUopsOptimization.test_call_str_1	  st    	 **8_Eo.R 2mT**D10$7r&   c                0   R  pV P                  V\        4      w  r#V P                  V\        4       V P                  V4       \	        V4      pV P                  RV4       V P                  RV4       V P                  RV4       V P                  RV4       R# )c                 v    ^ p\        V 4       F'  p\        ^*4      R,           pVR8X  g   K  V^,          pK)  	  V# )r   rY  42foorq  rs  s   &   r   rg   DTestUopsOptimization.test_call_str_1_result_is_str.<locals>.testfunc  s9    A1XGeO<FA  Hr&   ru  r  r  r  Nr  r:  s   &    r   test_call_str_1_result_is_str2TestUopsOptimization.test_call_str_1_result_is_str  s    	 **8_Eo.R 2mT*.5-t4-t4r&   c                   R  pV P                  V\        4      w  r#V P                  V\        4       V P                  V4       \	        V4      pV P                  RV4       V P                  RV4       V P                  RV4       R# )c                 j    ^ p\        V 4       F!  p\        R4      pV'       g   K  V^,          pK#  	  V# )r   rY  rq  rs  s   &   r   rg   TTestUopsOptimization.test_call_str_1_result_is_const_for_str_input.<locals>.testfunc1  s3    A1XJ1FA  Hr&   ru  r'  r   Nr  r:  s   &    r   -test_call_str_1_result_is_const_for_str_inputBTestUopsOptimization.test_call_str_1_result_is_const_for_str_input,  ss    
	 **8_Eo.R 2mT*.-t4r&   c                   R  pV P                  V\        4      w  r#V P                  V\        4       V P                  V4       \	        V4      pV P                  RV4       V P                  RV4       V P                  RV4       R# )c                 l    ^ p\        V 4       F"  p\        ^^.4      pVR8X  g   K  V^,          pK$  	  V# r   )r4   r3   r   r   rs  s   &   r   rg   8TestUopsOptimization.test_call_tuple_1.<locals>.testfuncB  s9    A1X1a&M;FA  Hr&   _CALL_TUPLE_1re  _GUARD_CALLABLE_TUPLE_1Nr  r:  s   &    r   test_call_tuple_1&TestUopsOptimization.test_call_tuple_1A  st    	 **8_Eo.R 2ot,*D12D9r&   c                   R  pV P                  V\        4      w  r#V P                  V\        4       V P                  V4       \	        V4      pV P                  RV4       V P                  RV4       V P                  RV4       R# )c                 z    ^ p\        V 4       F)  p\        ^^.4      pV^ ,          ^8X  g   K   V^,          pK+  	  V# r   r  rs  s   &   r   rg   HTestUopsOptimization.test_call_tuple_1_result_is_tuple.<locals>.testfuncS  s=    A1X1a&MQ419FA  Hr&   r  rT  rS  Nr  r:  s   &    r   !test_call_tuple_1_result_is_tuple6TestUopsOptimization.test_call_tuple_1_result_is_tupleR  sr    	 **8_Eo.R 2ot,3T:+T2r&   c                0   R  pV P                  V\        4      w  r#V P                  V\        4       V P                  V4       \	        V4      pV P                  RV4       V P                  RV4       V P                  RV4       V P                  RV4       R# )c                 p    ^ p\        V 4       F$  p\        R4      pVw  rBV^8X  g   K  V^,          pK&  	  V# r  r  )r-   rf   rD   r0  r   s   &    r   rg   ZTestUopsOptimization.test_call_tuple_1_result_propagates_for_tuple_input.<locals>.testfunch  s<    A1X&M6FA	 
 Hr&   r  rR  r  r   Nr  r:  s   &    r   3test_call_tuple_1_result_propagates_for_tuple_inputHTestUopsOptimization.test_call_tuple_1_result_propagates_for_tuple_inputc  s    
	 **8_Eo.R 2ot,2D9*D1-t4r&   c                   R  pV P                  V\        4      w  r#\        V4      pV P                  RV4       V P                  RV4       V P	                  RV4       V P                  RV4       V P                  RV4       R# )c                 V    . ROp\        V 4       F  p\        V4      ^,
          pK  	  R# )r4   N)r4   r3   r2   r1   )r   r   rg  s   &  r   rg   4TestUopsOptimization.test_call_len.<locals>.testfunc{  s"    A1XFQJ r&   re  _GUARD_CALLABLE_LEN	_CALL_LENr  r  N)r
  r   r%   r   rm   )r@   rg   rD   r   ro   s   &    r   test_call_len"TestUopsOptimization.test_call_lenz  sx    	
 ((?C2*D1.5k4()40)40r&   c                   R  pV P                  V\        4      w  r#V P                  V\        4       V P                  V4       \	        V4      pV P                  RV4       V P                  RV4       V P                  RV4       R# )c                 d    ^ p\        V 4       F  pRpV^ ,          ^8X  g   K  V^,          pK   	  V# r  r   rs  s   &   r   rg   FTestUopsOptimization.test_binary_op_subscr_tuple_int.<locals>.testfunc  s5    A1XQ419FA  Hr&   rT  r  r   Nr  r:  s   &    r   test_binary_op_subscr_tuple_int4TestUopsOptimization.test_binary_op_subscr_tuple_int  su    	 **8_Eo.R 23T:*D1-t4r&   c                \    \         P                  ! R \        P                  ! R4      4       R# )r[  a  
        import _testinternalcapi
        import _opcode
        import email

        def get_first_executor(func):
            code = func.__code__
            co_code = code.co_code
            for i in range(0, len(co_code), 2):
                try:
                    return _opcode.get_executor(code, i)
                except ValueError:
                    pass
            return None

        def testfunc(n):
            for _ in range(n):
                email.jit_testing = None
                prompt = email.jit_testing
                del email.jit_testing


        testfunc(_testinternalcapi.TIER2_THRESHOLD)
        ex = get_first_executor(testfunc)
        assert ex is not None
        N)r   r  r7   r8   r   s   &r   test_attr_promotion_failure0TestUopsOptimization.test_attr_promotion_failure  s$     	&&tX__ > . 	r&   r   N)KrX   rY   rZ   r[   r
  r  r#  r,  r2  r   r@  rG  rL  rX  ra  rr  rx  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r&  rE  rO  unittestskiprY  rc  ru  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r"  r)  r3  r>  rF  rU  r^  rg  rl  rw  r}  r  r  r  r  r  r  r  r\   r]   r^   s   @r   r  r    s    :&:.:.5 112*	5*.!2F4,9,9,6(1(/(/(1(/(>X8X<!XF"XH/
b;
zX:8
< ]]GH> I>
$6$64U<U.(.*=$%)8V1$&J>J>J@JBD"04065"B"9.0;(6(99 8"5$5*:"3"5.15" r&   r  c                     V # r   r   r   s   &r   r  r    s    Hr&   __main__) 
contextlibr  rS   r7   r  rV  osr   test.supportr   r   r   r   r   r   import_moduler	   r   contextmanagerr   r   r!   r%   skipIfTestCaser(   getenvrc   r  r  rX   mainr   r&   r   <module>r     s     
   	 	 & & "//0CD  -  
" 	"WX?x00 ?  Y ?D 	"WX	12c9;XYC'x   C' Z  Y C'L
 	"WX	12c9;XYp8,, p Z  Y pf/ zMMO r&   