
    2hh                     f   S SK r S SKrS SKrS SKrS SKrS SKrS SKrS SKJrJ	r	J
r
  \
R                  " S5      rS SKJr  \ R                  S 5       r\ R                  S 5       r\	\R"                  " \" \S5      S5       " S	 S
\R&                  5      5       5       rS rS rS r\	\R"                  " \" \S5      S5       " S S\R&                  5      5       5       r\	\R"                  " \" \S5      S5      \R2                  " \R4                  " S5      S:H  S5       " S S\R&                  5      5       5       5       r\	\R"                  " \" \S5      S5      \R2                  " \R4                  " S5      S:H  S5       " S S\R&                  5      5       5       5       r\S:X  a  \R<                  " 5         gg)    N)script_helperrequires_specializationimport_helper_testinternalcapi)TIER2_THRESHOLDc              #      #    [         R                  5       n[         R                  U 5         S v   [         R                  U5        g ! [         R                  U5        f = f7fN)r   get_optimizerset_optimizer)optold_opts     @/opt/python-3.13.8/usr/lib/python3.13/test/test_capi/test_opt.pytemporary_optimizerr      sF     --/G##C(1''0''0s   *A!A A!AA!c              #      #    U R                   R                  5       U l          S v   U R                   R                  5       U l         g ! U R                   R                  5       U l         f = f7fr	   )__code__replace)funcs    r   clear_executorsr      sK      MM))+DM0--/--/s    A+A  A+!A((A+r
   z!Requires optimizer infrastructurec                   2    \ rS rSrS rS rS rS rS rSr	g)	TestOptimizerAPI$   c                     S nU" 5         g )Nc                  ,    [         R                  5         g r	   )r   new_counter_optimizer     r   f>TestOptimizerAPI.test_new_counter_optimizer_dealloc.<locals>.f+   s    335r   r   )selfr   s     r   "test_new_counter_optimizer_dealloc3TestOptimizerAPI.test_new_counter_optimizer_dealloc)   s    	6 	
r   c                    [         R                  5       n[         R                  5       n [         R                  U5        U R	                  [         R                  5       U5        [         R                  S 5        U R	                  [         R                  5       S 5        [         R                  U5        g ! [         R                  U5        f = fr	   )r   r
   r   r   assertEqual)r   oldr   s      r   test_get_set_optimizer'TestOptimizerAPI.test_get_set_optimizer0   s    --/557	1++C0.<<>D++D1.<<>E++C0++C0s   A2B2 2C	c                    0 n[        [        R                  " S5      X5        US   n[        S5       H  n[        R                  5       n[        U5         U R                  UR                  5       S5        [        U5         U" 5         S S S 5        U R                  UR                  5       S[        -
  5        S S S 5        M     g ! , (       d  f       NB= f! , (       d  f       M  = f)Nz`
            def loop():
                for _ in range(1000):
                    pass
        loop   r     )exectextwrapdedentranger   r   r   r#   	get_countr   r   )r   nsr(   repeatr   s        r   test_counter_optimizer'TestOptimizerAPI.test_counter_optimizer<   s    X__   		
 &zAhF#99;C$S)  !4$T*F +   $2HI *)  +* *)s$   ,CC	/C
CC
C%	c                 `   0 n[        [        R                  " S5      X5        US   n[        R	                  5       n[        U5         U R                  UR                  5       S5        U" 5         U R                  UR                  5       S[        -
  5        S S S 5        g ! , (       d  f       g = f)Na  
            def nop():
                pass

            def long_loop():
                for _ in range(20):
                    nop(); nop(); nop(); nop(); nop(); nop(); nop(); nop();
                    nop(); nop(); nop(); nop(); nop(); nop(); nop(); nop();
                    nop(); nop(); nop(); nop(); nop(); nop(); nop(); nop();
                    nop(); nop(); nop(); nop(); nop(); nop(); nop(); nop();
                    nop(); nop(); nop(); nop(); nop(); nop(); nop(); nop();
                    nop(); nop(); nop(); nop(); nop(); nop(); nop(); nop();
                    nop(); nop(); nop(); nop(); nop(); nop(); nop(); nop();
        	long_loopr      )	r+   r,   r-   r   r   r   r#   r/   r   )r   r0   r5   r   s       r   test_long_loopTestOptimizerAPI.test_long_loopO   s     X__   	 {O	557 %S]]_a0KS]]_b?.BC &%%s   AB
B-c                 @   S n[         R                  5       n[        U5         U" S5        UR                  UR                  R	                  5       pCU R                  X45        U R                  [        U5      [        U5      5        S S S 5        g ! , (       d  f       g = f)Nc                 ,    SnX:  a  US-  nX:  a  M  g g Nr      r   xis     r   testfuncGTestOptimizerAPI.test_code_restore_for_ENTER_EXECUTOR.<locals>.testfunck       A%Q %r   r*   )r   r   r   r   r   r#   hash)r   r@   r   codereplace_codes        r   $test_code_restore_for_ENTER_EXECUTOR5TestOptimizerAPI.test_code_restore_for_ENTER_EXECUTORj   su    	
  557 %TN"*"3"3X5F5F5N5N5P,T0T$Zl);<	 &%%s   A#B
Br   N)
__name__
__module____qualname____firstlineno__r    r%   r2   r7   rF   __static_attributes__r   r   r   r   r   $   s    
	1J&D6=r   r   c                     U R                   nUR                  n[        S[        U5      S5       H  n [        R
                  " X5      s  $    g ! [         a     M,  f = fNr      )r   co_coder.   len_opcodeget_executor
ValueError)r   rD   rP   r?   s       r   get_first_executorrU   x   sZ    ==DllG1c'lA&	''00 '
   		s   A
AAc              #   ,   #    U  H
  nUS   v   M     g 7fNr   r   )exitems     r   iter_opnamesrZ      s     1g s   c                 *    [        [        U 5      5      $ r	   )listrZ   )rX   s    r   get_opnamesr]      s    R !!r   c                   2    \ rS rSrS rS rS rS rS rSr	g)	TestExecutorInvalidation   c                     [         R                  5       U l        [         R                  5       U l        [         R                  U R                  5        g r	   )r   r
   r$   r   r   r   r   s    r   setUpTestExecutorInvalidation.setUp   s4    $224$::<''1r   c                 B    [         R                  U R                  5        g r	   )r   r   r$   rb   s    r   tearDown!TestExecutorInvalidation.tearDown   s    ''1r   c                 Z   0 nSR                  S [        S5       5       5      n[        [        R                  " U5      X5        [        S5       Vs/ s H
  o1SU 3   PM     nn[        S5       Vs/ s H  n[        5       PM     nnU H
  nU" 5         M     U Vs/ s H  n[        U5      PM     nn[        U5       Hg  u  pU R                  U
R                  5       5        US U	S-     H  n[        R                  X5        M     U R                  U
R                  5       5        Mi     S Ho  n	[        R                  Xi   5        XS   H"  n
U R                  U
R                  5       5        M$     US U	  H"  n
U R                  U
R                  5       5        M$     Mq     g s  snf s  snf s  snf )N
c              3   .   #    U  H  nS U S3v   M     g7f)z
            def fzO():
                for _ in range(1000):
                    pass
            Nr   ).0ns     r   	<genexpr>BTestExecutorInvalidation.test_invalidate_object.<locals>.<genexpr>   s*      

 "A	  "s   r)   r   r<   )      rO   r<   r   )joinr.   r+   r,   r-   objectrU   	enumerate
assertTrueis_validr   add_executor_dependencyinvalidate_executorsassertFalse)r   r0   func_srcrl   funcs_objectsr   	executorsr?   exeobjs               r   test_invalidate_object/TestExecutorInvalidation.test_invalidate_object   sf   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1F#F(c                    0 n[        [        R                  " S5      X5        US   n[        R	                  5       n[        U5         U" 5         S S S 5        [        U5      nU R                  U5        U R                  UR                  5       5        [        R                  UR                  5        U R                  UR                  5       5        g ! , (       d  f       N= f)Nz]
            def f():
                for i in range(1000):
                    pass
        r   )r+   r,   r-   r   new_uop_optimizerr   rU   assertIsNotNonert   ru   rw   r   rx   )r   r0   r   r   r~   s        r   test_uop_optimizer_invalidation8TestExecutorInvalidation.test_uop_optimizer_invalidation   s    X__   		
 sG113 %C & #S!'..qzz:( &%s   C
Cc                    S n[         R                  5       n[        U5         U" 5         S S S 5        [        U5      nU R	                  U5        U R                  UR                  5       5        [        R                  " 5         U R                  UR                  5       5        [        U5      nU R                  U5        g ! , (       d  f       N= f)Nc                  (    [        S5       H  n M     g )Nr*   r.   )r{   s    r   r   CTestExecutorInvalidation.test_sys__clear_internal_caches.<locals>.f   s    4[ !r   )r   r   r   rU   r   rt   ru   sys_clear_internal_cachesrx   assertIsNone)r   r   r   r~   s       r   test_sys__clear_internal_caches8TestExecutorInvalidation.test_sys__clear_internal_caches   s    	  113 %C & #S!'""$( ## &%s   B??
C)r$   r   N)
rH   rI   rJ   rK   rc   rf   r   r   r   rL   r   r   r   r_   r_      s    
2
2 0D)$r   r_   PYTHON_UOPS_OPTIMIZE0zNeeds uop optimizer to run.c                   z    \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 rS rS rS rS rS rS rS rS rSrg)TestUops   c                 "   S n[         R                  5       n[        U5         U" S5        S S S 5        [        U5      nU R	                  U5        [        U5      nU R                  SU5        U R                  SU5        g ! , (       d  f       NZ= f)Nc                 ,    SnX:  a  US-  nX:  a  M  g g r;   r   r=   s     r   r@   *TestUops.test_basic_loop.<locals>.testfunc   rB   r   r*   _JUMP_TO_TOP_LOAD_FAST_0r   r   r   rU   r   r]   assertInr   r@   r   rX   uopss        r   test_basic_loopTestUops.test_basic_loop   ss    	
  113 %TN &  )R 2nd+nd+ &%   	B  
Bc                    0 n[        [        R                  " S5      X5        US   n[        R	                  5       n[        U5         [        U5      nU R                  U5        U" 5         S S S 5        [        U5      nU R                  U5        U R                  [        S [        U5       5       5      5        g ! , (       d  f       NU= f)Na  
            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 = 42
                while z9 > 0:
                    z9 = z9 - 1
        	many_varsc              3   6   #    U  H  u  pp4XU4S :H  v   M     g7f))
_LOAD_FASTi  r   Nr   )rk   opcodeopargr{   operands        r   rm   -TestUops.test_extended_arg.<locals>.<genexpr>   s(      G=E 9q $G48NN=Es   )r+   r,   r-   r   r   r   rU   r   r   rt   anyr\   )r   r0   r   r   rX   s        r   test_extended_argTestUops.test_extended_arg   s    X__  > ?	@ {O	113 %#I.Bb!K &
  	*R  G=A"XG G 	H &%s   $B::
Cc                     S n[         R                  5       n[        U5         U" S5        S S S 5        [        U5      nU R	                  U5        [        U5      nU R                  SU5        g ! , (       d  f       NH= f)Nc                 `    SnX:  a  US-  nSSS.u  p#X:  a  M  SnX:  a  US-  nX:  a  M  g g )Nr   r<   rO   rp   )r<   rp   r   )r>   r?   abs       r   r@   4TestUops.test_unspecialized_unpack.<locals>.testfunc%  sC    A%Q| % A%Q %r   r6   _UNPACK_SEQUENCEr   r   s        r   test_unspecialized_unpack"TestUops.test_unspecialized_unpack#  sf    	  113 %RL &  )R 2($/ &%   	A..
A<c                     S n[         R                  5       n[        U5         U" S5        S S S 5        [        U5      nU R	                  U5        [        U5      nU R                  SU5        g ! , (       d  f       NH= f)Nc                 ,    SnX:  a  US-  nX:  a  M  g g r;   r   rl   r?   s     r   r@   1TestUops.test_pop_jump_if_false.<locals>.testfunc:  rB   r   r6   _GUARD_IS_TRUE_POPr   r   s        r   test_pop_jump_if_falseTestUops.test_pop_jump_if_false9  sf    	
  113 %RL &  )R 2*D1 &%r   c                 4   S n[         R                  5       n[        U5         U" [        S5      5        S S S 5        [	        U5      nU R                  U5        [        U5      nU R                  SU5        U R                  SU5        g ! , (       d  f       NZ= f)Nc                 $    U  H
  nUb  M  SnM     g rW   r   r   r>   s     r   r@   0TestUops.test_pop_jump_if_none.<locals>.testfuncI  s    9A r   r6   _GUARD_IS_NONE_POP_GUARD_IS_NOT_NONE_POPr   r   r   r.   rU   r   r]   assertNotInr   s        r   test_pop_jump_if_noneTestUops.test_pop_jump_if_noneH  s~    	
  113 %U2Y &  )R 2-t4148 &%   B		
Bc                 4   S n[         R                  5       n[        U5         U" [        S5      5        S S S 5        [	        U5      nU R                  U5        [        U5      nU R                  SU5        U R                  SU5        g ! , (       d  f       NZ= f)Nc                 (    U  H  nS nUc  M
  SnM     g rW   r   r   s     r   r@   4TestUops.test_pop_jump_if_not_none.<locals>.testfuncY  s    =A r   r6   r   r   r   r   s        r   test_pop_jump_if_not_none"TestUops.test_pop_jump_if_not_noneX  s~    	  113 %U2Y &  )R 2-t4148 &%r   c                     S n[         R                  5       n[        U5         U" S5        S S S 5        [        U5      nU R	                  U5        [        U5      nU R                  SU5        g ! , (       d  f       NH= f)Nc                 ,    SnX:  d  US-  nX:  d  M  g g r;   r   r   s     r   r@   0TestUops.test_pop_jump_if_true.<locals>.testfuncj  s    AfQ fr   r6   _GUARD_IS_FALSE_POPr   r   s        r   test_pop_jump_if_trueTestUops.test_pop_jump_if_truei  sf    	
  113 %RL &  )R 2+T2 &%r   c                     S n[         R                  5       n[        U5         U" S5        S S S 5        [        U5      nU R	                  U5        [        U5      nU R                  SU5        g ! , (       d  f       NH= f)Nc                 ,    SnX:  a  US-  nX:  a  M  g g r;   r   r   s     r   r@   -TestUops.test_jump_backward.<locals>.testfuncy  rB   r   r6   r   r   r   s        r   test_jump_backwardTestUops.test_jump_backwardx  se    	
  113 %RL &  )R 2nd+ &%r   c                     S n[         R                  5       n[        U5         U" S5        S S S 5        [        U5      nU R	                  U5        [        U5      nU R                  SU5        g ! , (       d  f       NH= f)Nc                 F    SnX:  a  US:  a  U* nOU7nUS-  nX:  a  M  U$ r;   r   )rl   r   s     r   r@   ,TestUops.test_jump_forward.<locals>.testfunc  s8    A%q5AAQ % Hr   r6   _BINARY_OP_ADD_INTr   r   s        r   test_jump_forwardTestUops.test_jump_forward  sh    	  113 %RL &  )R 2 	*D1 &%r   c                 "   S n[         R                  5       n[        U5         U" S5      nU R                  US5        S S S 5        [	        U5      nU R                  U5        [        U5      nU R                  SU5        g ! , (       d  f       NH= f)Nc                 6    Sn[        U 5       H  nX-  nM	     U$ rW   r   )rl   totalr?   s      r   r@   .TestUops.test_for_iter_range.<locals>.testfunc  s!    E1X
 Lr   r6      _GUARD_NOT_EXHAUSTED_RANGE)r   r   r   r#   rU   r   r]   r   )r   r@   r   r   rX   r   s         r   test_for_iter_rangeTestUops.test_for_iter_range  sz    	  113 %RLEUC( &  )R  22D9 &%s   B  
Bc                 J   S n[         R                  5       n[        U5         [        [	        S5      5      nU" U5      nU R                  US5        S S S 5        [        U5      nU R                  U5        [        U5      nU R                  SU5        g ! , (       d  f       NH= f)Nc                 $    SnU  H  nX-  nM	     U$ rW   r   r   r   r?   s      r   r@   -TestUops.test_for_iter_list.<locals>.testfunc      E
 Lr   r6   r   _GUARD_NOT_EXHAUSTED_LIST)
r   r   r   r\   r.   r#   rU   r   r]   r   r   r@   r   r   r   rX   r   s          r   test_for_iter_listTestUops.test_for_iter_list  s    	  113 %U2YAQKEUC( &
  )R  2148 &%   /B
B"c                 J   S n[         R                  5       n[        U5         [        [	        S5      5      nU" U5      nU R                  US5        S S S 5        [        U5      nU R                  U5        [        U5      nU R                  SU5        g ! , (       d  f       NH= f)Nc                 $    SnU  H  nX-  nM	     U$ rW   r   r   s      r   r@   .TestUops.test_for_iter_tuple.<locals>.testfunc  r   r   r6   r   _GUARD_NOT_EXHAUSTED_TUPLE)
r   r   r   tupler.   r#   rU   r   r]   r   r   s          r   test_for_iter_tupleTestUops.test_for_iter_tuple  s    	  113 %eBi AQKEUC( &
  )R  22D9 &%r   c                 @   S n[         R                  5       n[        U5         / SQn[        U5      nU" U5        UR	                  S5        U R                  [        5         [        U5        S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)Nc                     U  H  nM     g r	   r   )itr>   s     r   r@   .TestUops.test_list_edge_case.<locals>.testfunc  s     r   )r<   rO   rp   ro   )r   r   r   iterappendassertRaisesStopIterationnext)r   r@   r   r   r   s        r   test_list_edge_caseTestUops.test_list_edge_case  ss    	  113 %AaBRLHHQK""=1R 2 &%
 21 &%s#   >B!A>-B>
B	B
Bc                 "   S n[         R                  5       n[        U5         U" S5        S S S 5        [        U5      nU R	                  U5        [        U5      nU R                  SU5        U R                  SU5        g ! , (       d  f       NZ= f)Nc                 >    S n[        U 5       H  nU" U5        M     g )Nc                     U S-   $ Nr<   r   r>   s    r   dummyATestUops.test_call_py_exact_args.<locals>.testfunc.<locals>.dummy      s
r   r   rl   r  r?   s      r   r@   2TestUops.test_call_py_exact_args.<locals>.testfunc      1Xa r   r6   _PUSH_FRAMEr   r   r   s        r   test_call_py_exact_args TestUops.test_call_py_exact_args  st    	  113 %RL &  )R 2mT**D1 &%r   c                     S n[         R                  5       n[        U5         U" S5        S S S 5        [        U5      nU R	                  U5        [        U5      nU R                  SU5        g ! , (       d  f       NH= f)Nc                 @    [        U 5       H  nUS:  a  SnM  SnM     g r;   r   r   s     r   r@   ,TestUops.test_branch_taken.<locals>.testfunc  s!    1Xq5AA	 r   r6   r   r   r   s        r   test_branch_takenTestUops.test_branch_taken  sf    	  113 %RL &  )R 2+T2 &%r   c                 j  ^  " S S5      mU4S jn[         R                  5       n[        U5         U" SS5      nS S S 5        U R                  W[	        [        S5      5      S-  5        [        U5      nU R                  U5        [        U5      nU R                  SU5        g ! , (       d  f       No= f)Nc                   &    \ rS rSrS rS rS rSrg)/TestUops.test_for_iter_tier_two.<locals>.MyIteri  c                     Xl         g r	   rl   )r   rl   s     r   __init__8TestUops.test_for_iter_tier_two.<locals>.MyIter.__init__  s    r   c                     U $ r	   r   rb   s    r   __iter__8TestUops.test_for_iter_tier_two.<locals>.MyIter.__iter__  s    r   c                 p    U =R                   S-  sl         U R                   S:  a  [        eU R                   $ )Nr<   r   )rl   r   rb   s    r   __next__8TestUops.test_for_iter_tier_two.<locals>.MyIter.__next__  s)    !66A:''vvr   r  N)rH   rI   rJ   rK   r  r  r  rL   r   r   r   MyIterr    s    r   r!  c                 d   > Sn[        U5       H  nT" U 5       H  nUSU-  U-   -  nM     M     U$ )Nr   r*   r   )rl   mr>   r?   jr!  s        r   r@   1TestUops.test_for_iter_tier_two.<locals>.testfunc  s<    A1XAa!OA #  Hr   
   i'  _FOR_ITER_TIER_TWO)
r   r   r   r#   sumr.   rU   r   r]   r   )r   r@   r   r>   rX   r   r!  s         @r   test_for_iter_tier_twoTestUops.test_for_iter_tier_two  s    		 			  113 %R A & 	Cb	NU23)R 2*D1 &%s   
B$$
B2c                 z   S n[         R                  5       n[        U5         U" S5      nS S S 5        U R                  WS5        [	        U5      nU R                  U5        [        [        U5      5      nUR                  S5      UR                  S5      -   nU R                  US5        g ! , (       d  f       N= f)Nc                     Sn[        U 5       H_  nUS-  (       a  US-  nUS-  (       a  US-  nUS-  (       a  US-  nUS-  (       a  US-  nUS-  (       a  US-  nUS-  (       d  MZ  US-  nMa     U$ )Nr   r<   rO   ro             r   )rl   bitsr?   s      r   r@   0TestUops.test_confidence_score.<locals>.testfunc-  s~    D1Xt8AIDt8AIDT6AIDT6AIDT6AIDT66AID  Kr   r6   (   r   r   rO   )
r   r   r   r#   rU   r   r\   rZ   countassertLessEqual)r   r@   r   r>   rX   opsr3  s          r   test_confidence_scoreTestUops.test_confidence_score,  s    	"  113 %A & 	B)R <#$		./#))<Q2RRUA& &%s   	B,,
B:r   N)rH   rI   rJ   rK   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r)  r6  rL   r   r   r   r   r      sY    , .H`0,29 9"3,2,:*9,:,2"3"2<'r   r   c                       \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS r S r!S  r"S! r#S"r$g#)$TestUopsOptimizationiK  c                     S n[         R                  5       n[        U5         U" U5      nS S S 5        [        U5      nX54$ ! , (       d  f       N= fr	   )r   r   r   rU   )r   r@   argresr   rX   s         r   _run_with_optimizer(TestUopsOptimization._run_with_optimizerQ  sG    113 %3-C &  )w	 &%s   	A
Ac                    S nU R                  US5      u  p#U R                  U5        U R                  US5        [        U5       Vs/ s H  oDS:X  d  M
  UPM     nn[        U5       Vs/ s H  oDS:X  d  M
  UPM     nnU R	                  [        U5      S5        U R                  [        U5      S5        g s  snf s  snf )Nc                 J    Sn[        U 5       H  nX-   nUS-   nUS-  nM     W$ r;   r   )loopsnumr?   r>   r   s        r   r@   @TestUopsOptimization.test_int_type_propagation.<locals>.testfunc\  s5    C5\IEq " Hr   r/  ?   r   _GUARD_BOTH_INTrp   r<   )r=  r   r#   rZ   assertGreaterEqualrQ   r4  )r   r@   r<  rX   opnamebinop_countguard_both_int_counts          r   test_int_type_propagation.TestUopsOptimization.test_int_type_propagation[  s    	 **8R8R b!,8,<_,<&J^@^v,<_5A"5Ee5E6SdId5EeK 0!4S!56: `es   	B6B6*	B;7B;c                   ^ S mU4S jn[         R                  5       nS n[        U5         U" S5      nS S S 5        [        U5      nU R	                  U5        U R                  US5        [        U5       Vs/ s H  oUS:X  d  M
  UPM     nn[        U5       Vs/ s H  oUS:X  d  M
  UPM     nnU R                  [        U5      S5        U R                  [        U5      S5        g ! , (       d  f       N= fs  snf s  snf )	Nc                 
    X -   $ r	   r   r  s    r   doubleLTestUopsOptimization.test_int_type_propagation_through_frame.<locals>.doublem  	    5Lr   c                 R   > Sn[        U 5       H  nX-   nT" U5      nUS-  nM     W$ r;   r   )rA  rB  r?   r>   r   rN  s        r   r@   NTestUopsOptimization.test_int_type_propagation_through_frame.<locals>.testfunco  s6    C5\I1Iq " Hr   r/  |   r   rE  rp   r<   
r   r   r   rU   r   r#   rZ   rF  rQ   r4  	r   r@   r   r<  rX   rG  rH  rI  rN  s	           @r   'test_int_type_propagation_through_frame<TestUopsOptimization.test_int_type_propagation_through_framel      		  113 %2,C &  )R c",8,<_,<&J^@^v,<_5A"5Ee5E6SdId5EeK 0!4S!56: &% `e#   	C&8	C7C7	C<'C<&
C4c                   ^ S mU4S jn[         R                  5       nS n[        U5         U" S5      nS S S 5        [        U5      nU R	                  U5        U R                  US5        [        U5       Vs/ s H  oUS:X  d  M
  UPM     nn[        U5       Vs/ s H  oUS:X  d  M
  UPM     nnU R                  [        U5      S5        U R                  [        U5      S5        g ! , (       d  f       N= fs  snf s  snf )	Nc                 
    X -   $ r	   r   r  s    r   rN  ITestUopsOptimization.test_int_type_propagation_from_frame.<locals>.double  rP  r   c                 R   > Sn[        U 5       H  nT" U5      nX3-   nUS-  nM     W$ r;   r   )rA  rB  r?   r   r>   rN  s        r   r@   KTestUopsOptimization.test_int_type_propagation_from_frame.<locals>.testfunc  s6    C5\3KEq " Hr   r/  rS  r   rE  rp   r<   rT  rU  s	           @r   $test_int_type_propagation_from_frame9TestUopsOptimization.test_int_type_propagation_from_frame  rX  rY  c                     S nU R                  US5      u  p#U R                  U5        [        U5       Vs/ s H  oDS:X  d  M
  UPM     nnU R                  [	        U5      S5        g s  snf )Nc                 J    SnX:  a  X-   nSnUS-    X#-   nUS-  nX:  a  M  W$ )Nr   r<   rO   r   )rA  rB  r>   yr   s        r   r@   =TestUopsOptimization.test_int_impure_region.<locals>.testfunc  s=    C+IQEq + Hr   @   r   rp   )r=  r   rZ   rF  rQ   )r   r@   r<  rX   rG  rH  s         r   test_int_impure_region+TestUopsOptimization.test_int_impure_region  sg    	 **8R8R ,8,<_,<&J^@^v,<_K 0!4 `s   	A'A'c                     S nU R                  US5      u  p#U R                  U5        [        U5      nU R                  SU5        U R                  SU5        U R	                  SU5        g )Nc                 >    S n[        U 5       H  nU" U5        M     g )Nc                     U S-   $ r  r   r  s    r   r  MTestUopsOptimization.test_call_py_exact_args.<locals>.testfunc.<locals>.dummy  r  r   r   r	  s      r   r@   >TestUopsOptimization.test_call_py_exact_args.<locals>.testfunc  r  r   r/  r  r   _CHECK_PEP_523)r=  r   r]   r   r   r   r@   r<  rX   r   s        r   r  ,TestUopsOptimization.test_call_py_exact_args  sb    	 **8R8R 2mT**D1)40r   c                     S nU R                  US5      u  p#U R                  US5        U R                  U5        [        U5      nU R	                  SU5        g )Nc                 2    [        U 5       H  nX-   nM	     W$ r	   r   )rl   r?   r>   s      r   r@   LTestUopsOptimization.test_int_type_propagate_through_range.<locals>.testfunc  s    1XE Hr   r/  >   rE  )r=  r#   r   r]   r   rn  s        r   %test_int_type_propagate_through_range:TestUopsOptimization.test_int_type_propagate_through_range  sU    	 **8R8b!R 2*D1r   c                 6   S nU R                  US5      u  p#U R                  US5        U R                  U5        [        U5      nU R	                  SU5        [        U5       Vs/ s H  oUS:X  d  M
  UPM     nnU R                  [        U5      S5        g s  snf )Nc                 R    Sn[        U 5       H  nUnUnUnUnX4-   U-   U-   nM     W$ r  r   )rl   rc  r?   r>   zr   r   r<  s           r   r@   ?TestUopsOptimization.test_int_value_numbering.<locals>.testfunc  s?    A1Xeai!m  Jr   r/  ro   rE  r<   )r=  r#   r   r]   r   rZ   rQ   )r   r@   r<  rX   r   rG  guard_counts          r   test_int_value_numbering-TestUopsOptimization.test_int_value_numbering  s    		 **8R8a R 2'.,8,<\,<&J[@[v,<\[)1- ]s   %	B2Bc                     S nU R                  US5      u  p#U R                  U[        [        S5      5      5        U R	                  U5        [        U5      nU R                  SU5        g )Nc                 h    [        U 5       H  n[        U 5       Vs/ s H  o"PM     sns  $    g s  snf r	   r   )rl   r{   r?   s      r   r@   9TestUopsOptimization.test_comprehension.<locals>.testfunc  s,    1X#(8,8a8,, ,s   /r/  r   )r=  r#   r\   r.   r   r]   r   rn  s        r   test_comprehension'TestUopsOptimization.test_comprehension  s]    	- **8R8d59o.R 2-t4r   c                    ^ S mU4S jn[         R                  5       nU" S5        [        U5         @[        R                  " 5         S mU" S5        S S S 5        [        U5      ng ! , (       d  f       N= f)Nc                     U S-   $ r  r   r  s    r   r  HTestUopsOptimization.test_call_py_exact_args_disappearing.<locals>.dummy  s    Q3Jr   c                 :   > [        U 5       H  nT" U5        M     g r	   r   )rl   r?   r  s     r   r@   KTestUopsOptimization.test_call_py_exact_args_disappearing.<locals>.testfunc  s    1Xa r   r-  c                     U S-   $ NrO   r   r  s    r   r  r    s    1ur   r/  )r   r   r   gccollectrU   )r   r@   r   rX   r  s       @r   $test_call_py_exact_args_disappearing9TestUopsOptimization.test_call_py_exact_args_disappearing  s^    		  113 %JJLRL &  ) &%s   "A((
A6c                     [         R                  " S[        R                  " S5      5      nU R	                  US   R
                  SU5        g )Nz-ca  
        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

        opt = _testinternalcapi.new_uop_optimizer()
        _testinternalcapi.set_optimizer(opt)
        testfunc(64)

        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_WITH_NULL" in uops
        r   )r   run_python_until_endr,   r-   r#   rc)r   results     r   !test_promote_globals_to_constants6TestUopsOptimization.test_promote_globals_to_constants  sB    33D(//  K  ;  B 	q&1r   c                 6   S nU R                  US5      u  p#U R                  US5        U R                  U5        [        U5      n[	        U5       Vs/ s H  oUS:X  d  M
  UPM     nnU R                  [        U5      S5        U R                  SU5        g s  snf )Nc                 V    Sn[        U 5       H  nUS-   nUS-   nUS-   nUS-   nM     U$ N      ?g      ?r   rl   r   r{   s      r   r@   JTestUopsOptimization.test_float_add_constant_propagation.<locals>.testfunc%  @    A1XHHHH	 
 Hr   r/  g     @@_GUARD_BOTH_FLOATr<   _BINARY_OP_ADD_FLOATr=  assertAlmostEqualr   r]   rZ   r4  rQ   r   r   r@   r<  rX   r   rG  guard_both_float_counts          r   #test_float_add_constant_propagation8TestUopsOptimization.test_float_add_constant_propagation$  s    	 **8R8sD)R 27CB7G!i7GVUhKh&7G!iS!78!< 	,d3	 "j   	B Bc                 6   S nU R                  US5      u  p#U R                  US5        U R                  U5        [        U5      n[	        U5       Vs/ s H  oUS:X  d  M
  UPM     nnU R                  [        U5      S5        U R                  SU5        g s  snf )Nc                 V    Sn[        U 5       H  nUS-
  nUS-
  nUS-
  nUS-
  nM     U$ r  r   r  s      r   r@   OTestUopsOptimization.test_float_subtract_constant_propagation.<locals>.testfunc9  r  r   r/  g      ?r  r<   _BINARY_OP_SUBTRACT_FLOATr  r  s          r   (test_float_subtract_constant_propagation=TestUopsOptimization.test_float_subtract_constant_propagation8  s    	 **8R8sE*R 27CB7G!i7GVUhKh&7G!iS!78!< 	148	 "jr  c                 6   S nU R                  US5      u  p#U R                  US5        U R                  U5        [        U5      n[	        U5       Vs/ s H  oUS:X  d  M
  UPM     nnU R                  [        U5      S5        U R                  SU5        g s  snf )Nc                 V    Sn[        U 5       H  nUS-  nUS-  nUS-  nUS-  nM     U$ Nr  r   r  s      r   r@   OTestUopsOptimization.test_float_multiply_constant_propagation.<locals>.testfuncM  s@    A1XGGGG	 
 Hr   r/  r  r  r<   _BINARY_OP_MULTIPLY_FLOATr  r  s          r   (test_float_multiply_constant_propagation=TestUopsOptimization.test_float_multiply_constant_propagationL  s    	 **8R8sC(R 27CB7G!i7GVUhKh&7G!iS!78!< 	148	 "jr  c                 6   S nU R                  US5      u  p#U R                  US5        U R                  U5        [        U5      n[	        U5       Vs/ s H  oUS:X  d  M
  UPM     nnU R                  [        U5      S5        U R                  SU5        g s  snf )Nc                 N    Sn[        U 5       H  nX-     X-     X-     X-     M     U$ N r   r  s      r   r@   CTestUopsOptimization.test_add_unicode_propagation.<locals>.testfunca  s0    A1X	 
 Hr   r/  r  _GUARD_BOTH_UNICODEr<   _BINARY_OP_ADD_UNICODEr=  r#   r   r]   rZ   r4  rQ   r   )r   r@   r<  rX   r   rG  guard_both_unicode_counts          r   test_add_unicode_propagation1TestUopsOptimization.test_add_unicode_propagation`  s    	 **8R8b!R 29Eb9I#m9IvWlMlF9I #mS!9:A>.5 $nr  c                 4   S nU R                  US5      u  p#U R                  U5        U R                  U5        [        U5      n[	        U5       Vs/ s H  oUS:X  d  M
  UPM     nnU R                  [        U5      S5        U R                  SU5        g s  snf )Nc                 N    Sn[        U 5       H  nX:H  nX:H  nX:H  nX:H  nM     W$ r  r   rl   r   r{   r>   s       r   r@   MTestUopsOptimization.test_compare_op_type_propagation_float.<locals>.testfuncs  s8    A1XFFFF	 
 Hr   r/  r  r<   _COMPARE_OP_FLOATr=  rt   r   r]   rZ   r4  rQ   r   r  s          r   &test_compare_op_type_propagation_float;TestUopsOptimization.test_compare_op_type_propagation_floatr  s    	 **8R8R 27CB7G!i7GVUhKh&7G!iS!78!<)40 "j   	BBc                 4   S nU R                  US5      u  p#U R                  U5        U R                  U5        [        U5      n[	        U5       Vs/ s H  oUS:X  d  M
  UPM     nnU R                  [        U5      S5        U R                  SU5        g s  snf )Nc                 N    Sn[        U 5       H  nX:H  nX:H  nX:H  nX:H  nM     W$ r  r   r  s       r   r@   KTestUopsOptimization.test_compare_op_type_propagation_int.<locals>.testfunc  s8    A1XFFFF	 
 Hr   r/  rE  r<   _COMPARE_OP_INTr  )r   r@   r<  rX   r   rG  rI  s          r   $test_compare_op_type_propagation_int9TestUopsOptimization.test_compare_op_type_propagation_int  s    	 **8R8R 25A"5Ee5E6SdId5EeS!56:'.  fr  c                    S nU R                  US5      u  p#U R                  US5        U R                  U5        [        U5      n[	        U5       Vs/ s H  oUS:X  d  M
  UPM     nn[	        U5       Vs/ s H  oUS:X  d  M
  UPM     nnU R                  [        U5      S5        U R                  [        U5      S5        U R                  SU5        g s  snf s  snf )Nc                 R    Sn[        U 5       H  nUS:  a  SnUS:  d  M  SnM     W$ )Nr<   rO   r   r   r  s       r   r@   STestUopsOptimization.test_compare_op_type_propagation_int_partial.<locals>.testfunc  s4    A1Xq5Aq5A	 
 Hr   r/  r<   _GUARD_NOS_INTrE  r   r  r  )r   r@   r<  rX   r   rG  guard_left_int_countrI  s           r   ,test_compare_op_type_propagation_int_partialATestUopsOptimization.test_compare_op_type_propagation_int_partial  s    	 **8R8a R 25A"5Ed5E6ScIc5Ed5A"5Ee5E6SdId5EeS!56:12A6'.	  ee   	C C5	CCc                    S nU R                  US5      u  p#U R                  US5        U R                  U5        [        U5      n[	        U5       Vs/ s H  oUS:X  d  M
  UPM     nn[	        U5       Vs/ s H  oUS:X  d  M
  UPM     nnU R                  [        U5      S5        U R                  [        U5      S5        U R                  SU5        g s  snf s  snf )Nc                 R    Sn[        U 5       H  nUS:  a  SnUS:  d  M  SnM     W$ )Nr  g       @r   r<   r   r  s       r   r@   UTestUopsOptimization.test_compare_op_type_propagation_float_partial.<locals>.testfunc  s4    A1Xs7As7A	 
 Hr   r/  r<   _GUARD_NOS_FLOATr  r   r  r  )r   r@   r<  rX   r   rG  guard_left_float_countr  s           r   .test_compare_op_type_propagation_float_partialCTestUopsOptimization.test_compare_op_type_propagation_float_partial  s    	 **8R8a R 27CB7G!h7GVUgKg&7G!h7CB7G!i7GVUhKh&7G!iS!78!<34a8)40	 "i!ir  c                 4   S nU R                  US5      u  p#U R                  U5        U R                  U5        [        U5      n[	        U5       Vs/ s H  oUS:X  d  M
  UPM     nnU R                  [        U5      S5        U R                  SU5        g s  snf )Nc                 N    Sn[        U 5       H  nX:H  nX:H  nX:H  nX:H  nM     W$ r  r   r  s       r   r@   OTestUopsOptimization.test_compare_op_type_propagation_unicode.<locals>.testfunc  s8    A1XFFFF	 
 Hr   r/  r  r<   _COMPARE_OP_STRr  r  s          r   (test_compare_op_type_propagation_unicode=TestUopsOptimization.test_compare_op_type_propagation_unicode  s    	 **8R8R 27CB7G!k7GVUjKj&7G!kS!78!<'. "lr  c                 J   0 n[         R                  " S5      n[        X!U5        US   nSUS'   U R                  U[        5      u  pEU R                  U5        SUS'   U R                  U[        5      u  pEU R                  U5        [        U5      nU R                  SU5        U R                  SU5        0 n[        X!U5        US   nSUS'   U R                  U[        5      u  pEU R                  U5        SUS'   U R                  U[        5      u  pEU R                  U5        g )	Nz}
            def testfunc(n):
                for i in range(n):
                    x = _test_global + _test_global
        r@   r   _test_globalr<   rE  r   gQ	@)
r,   r-   r+   r=  r   r   r   r]   r   r   )r   r0   srcr@   r{   rX   r   s          r   test_type_inconsistency,TestUopsOptimization.test_type_inconsistency  s"   oo  
 	Sbj>>((?C">((?CR 2*D1*D1 Sbj>>((?C"!>((?C"r   c           	      t  ^^ S mS mUU4S jnU R                  US5      u  p#U R                  US5        U R                  U5        U VVVs/ s H
  u  n  pVXF4PM     nnnnU Vs/ s H  oS   PM	     n	nU R                  U	R                  S5      S5        U R                  U	R                  S	5      S5        U R                  U	R                  S
5      S5        U R                  U	R                  S5      S5        [        R                  TR                  5      n
U R                  SU
4U5        g s  snnnf s  snf )Nc                     U S-
  $ r  r   r  s    r   dummy12PTestUopsOptimization.test_combine_stack_space_checks_sequential.<locals>.dummy12      q5Lr   c                     U S-   nX4$ r  r   rc  rx  s     r   dummy13PTestUopsOptimization.test_combine_stack_space_checks_sequential.<locals>.dummy13      AA4Kr   c                 h   > Sn[        U 5       H  nT" S5      nT" S5      u  pEXU-   U-   -  nM!     U$ )Nr      	   r   )rl   r   r{   r   cdr  r  s         r   r@   QTestUopsOptimization.test_combine_stack_space_checks_sequential.<locals>.testfunc  s@    A1XAJqzUQY  Hr   r/  i@  r   r  rO   
_POP_FRAME_CHECK_STACK_SPACE_CHECK_STACK_SPACE_OPERANDr<   r=  r#   r   r3  r   get_co_framesizer   r   )r   r@   r<  rX   r   r{   r   uops_and_operandsuop	uop_nameslargest_stackr  r  s              @@r   *test_combine_stack_space_checks_sequential?TestUopsOptimization.test_combine_stack_space_checks_sequential  s   			 **8R8c"R LNOB3H61af.BO'89'8V'8	97;6:)=>B)EFJ)::7;K;KL3]CEVW P9s   D.&D5c           	        ^^ S mU4S jmU4S jnU R                  US5      u  p#U R                  US5        U R                  U5        U VVVs/ s H
  u  n  pVXF4PM     nnnnU Vs/ s H  oS   PM	     n	nU R                  U	R                  S5      S5        U R                  U	R                  S	5      S5        U R                  U	R                  S
5      S5        U R                  U	R                  S5      S5        [        R                  TR                  5      [        R                  TR                  5      -   n
U R                  SU
4U5        g s  snnnf s  snf )Nc                     U S-   $ Nrp   r   r  s    r   r  LTestUopsOptimization.test_combine_stack_space_checks_nested.<locals>.dummy12  r  r   c                    > T" U 5      nX4$ r	   r   )rc  rx  r  s     r   dummy15LTestUopsOptimization.test_combine_stack_space_checks_nested.<locals>.dummy15  s    
A4Kr   c                 R   > Sn[        U 5       H  nT" S5      u  p4XU-   -  nM     U$ rN   r   )rl   r   r{   r   r  r  s        r   r@   MTestUopsOptimization.test_combine_stack_space_checks_nested.<locals>.testfunc  s3    A1XqzU
  Hr   r/     r   r  rO   r  r  r  r<   r  )r   r@   r<  rX   r   r{   r   r  r  r  r  r  r  s              @@r   &test_combine_stack_space_checks_nested;TestUopsOptimization.test_combine_stack_space_checks_nested
  s8   			 **8R8c"R LNOB3H61af.BO'89'8V'8	97;6:)=>B)EFJ ..w/?/?@..w/?/?@A 	 	3]CEVW P9s   E(Ec           	        ^^^ S mS mUU4S jmUU4S jnU R                  US5      u  p#U R                  US5        U R                  U5        U VVVs/ s H
  u  n  pVXF4PM     nnnnU Vs/ s H  oS   PM	     n	nU R                  U	R                  S5      S	5        U R                  U	R                  S
5      S	5        U R                  U	R                  S5      S5        U R                  U	R                  S5      S5        [        R                  TR                  5      [        R                  TR                  5      -   n
U R                  SU
4U5        g s  snnnf s  snf )Nc                     U S-   $ r  r   r  s    r   r  STestUopsOptimization.test_combine_stack_space_checks_several_calls.<locals>.dummy12)  r  r   c                     U S-   nX4$ r  r   r  s     r   r  STestUopsOptimization.test_combine_stack_space_checks_several_calls.<locals>.dummy13+  r  r   c                 0   > T" U 5      nT" U5      u  p#XU4$ r	   r   rc  rx  r>   wr  r  s       r   dummy18STestUopsOptimization.test_combine_stack_space_checks_several_calls.<locals>.dummy18.       
A1:DA7Nr   c                 p   > Sn[        U 5       H#  nT" S5      nT" S5      u  pEnXU-   U-   U-   -  nM%     U$ )Nr   r)   rO   r   )	rl   r   r{   r   r  r  er  r  s	          r   r@   TTestUopsOptimization.test_combine_stack_space_checks_several_calls.<locals>.testfunc2  sG    A1XAJ!!*aUQY]"  Hr   r/     r   r  ro   r  r  r  r<   r  r   r@   r<  rX   r   r{   r   r  r  r  r  r  r  r  s              @@@r   -test_combine_stack_space_checks_several_callsBTestUopsOptimization.test_combine_stack_space_checks_several_calls(  s=   				 **8R8c"R LNOB3H61af.BO'89'8V'8	97;6:)=>B)EFJ ..w/?/?@..w/?/?@A 	 	3]CEVW P9   E.Ec           	        ^^^ S mS mUU4S jmUU4S jnU R                  US5      u  p#U R                  US5        U R                  U5        U VVVs/ s H
  u  n  pVXF4PM     nnnnU Vs/ s H  oS   PM	     n	nU R                  U	R                  S5      S	5        U R                  U	R                  S
5      S	5        U R                  U	R                  S5      S5        U R                  U	R                  S5      S5        [        R                  TR                  5      [        R                  TR                  5      -   n
U R                  SU
4U5        g s  snnnf s  snf )Nc                     U S-   $ r  r   r  s    r   r  cTestUopsOptimization.test_combine_stack_space_checks_several_calls_different_order.<locals>.dummy12M  r  r   c                     U S-   nX4$ r  r   r  s     r   r  cTestUopsOptimization.test_combine_stack_space_checks_several_calls_different_order.<locals>.dummy13O  r  r   c                 0   > T" U 5      nT" U5      u  p#XU4$ r	   r   r  s       r   r  cTestUopsOptimization.test_combine_stack_space_checks_several_calls_different_order.<locals>.dummy18R  r  r   c                 p   > Sn[        U 5       H#  nT" S5      u  p4nT" S5      nXU-   U-   U-   -  nM%     U$ )Nr   rO   r)   r   )	rl   r   r{   r  r  r  r   r  r  s	          r   r@   dTestUopsOptimization.test_combine_stack_space_checks_several_calls_different_order.<locals>.testfuncV  sG    A1X!!*aAJUQY]"  Hr   r/  r  r   r  ro   r  r  r  r<   r  r  s              @@@r   =test_combine_stack_space_checks_several_calls_different_orderRTestUopsOptimization.test_combine_stack_space_checks_several_calls_different_orderK  s=   				 **8R8c"R LNOB3H61af.BO'89'8V'8	97;6:)=>B)EFJ ..w/?/?@..w/?/?@A 	 	3]CEVW P9r  c           	        ^^^^^^^ S mU4S jmU4S jmU4S jmUU4S jmU4S jmUUU4S jmUUU4S jnU R                  US	5      u  p#U R                  US
5        U R                  U5        U VVVs/ s H
  u  n  pVXF4PM     nnnnU Vs/ s H  oS   PM	     n	nU R                  U	R                  S5      S5        U R                  U	R                  S5      S5        U R                  U	R                  S5      S5        U R                  U	R                  S5      S5        [        R                  TR                  5      [        R                  TR                  5      -   [        R                  TR                  5      -   [        R                  TR                  5      -   [        R                  TR                  5      -   n
U R                  SU
4U5        g s  snnnf s  snf )Nc                     U $ r	   r   r  s    r   dummy0ETestUopsOptimization.test_combine_stack_space_complex.<locals>.dummy0p      Hr   c                    > T" U 5      $ r	   r   r>   r+  s    r   dummy1ETestUopsOptimization.test_combine_stack_space_complex.<locals>.dummy1r      !9r   c                    > T" U 5      $ r	   r   )r>   r0  s    r   dummy2ETestUopsOptimization.test_combine_stack_space_complex.<locals>.dummy2t  r2  r   c                    > T" U 5      $ r	   r   r/  s    r   dummy3ETestUopsOptimization.test_combine_stack_space_complex.<locals>.dummy3v  r2  r   c                 $   > T" U 5      nT" U5      $ r	   r   )r>   rc  r+  r7  s     r   dummy4ETestUopsOptimization.test_combine_stack_space_complex.<locals>.dummy4x  s    q	A!9r   c                    > T" U 5      $ r	   r   )r>   r4  s    r   dummy5ETestUopsOptimization.test_combine_stack_space_complex.<locals>.dummy5{  r2  r   c                 4   > T" U 5      nT" U5      nT" U5      $ r	   r   )r>   rc  rx  r+  r:  r=  s      r   dummy6ETestUopsOptimization.test_combine_stack_space_complex.<locals>.dummy6}  s    q	Aq	A!9r   c                 t   > Sn[        S5       H%  nT" S5      nT" S5      nT" S5      nXU-   U-   -  nM'     U$ )Nr   r/  r<   r   )	rl   r   r{   r   r  r  r+  r=  r@  s	         r   r@   GTestUopsOptimization.test_combine_stack_space_complex.<locals>.testfunc  sG    A2Y1I1I1IUQY	 
 Hr   r/  `   r   r     r  r  r  r<   r  )r   r@   r<  rX   r   r{   r   r  r  r  r  r+  r0  r4  r7  r:  r=  r@  s              @@@@@@@r    test_combine_stack_space_complex5TestUopsOptimization.test_combine_stack_space_complexo  s   								 **8R8b!R LNOB3H61af.BO'89'8V'8	97<6;)=>B)EFJ..v?..v?@..v?@ ..v?@ ..v?	@ 	 	)=9;L	
 P9s   7GGc           
        ^^ Sn0 nSnSR                  [        U5       Vs/ s H  nSUS-    SU S3PM     sn5      nSUS-
   S	3n[        [        R                  " X5-   U-   5      X"5        US
   mU4S jmU4S jnU R                  US5      u  pU R                  USUS-   -  5        U R                  U	5        U	 V
VVs/ s H
  u  n
  pX4PM     nnn
nU Vs/ s H  oS   PM	     nnU R                  UR                  S5      S5        U R                  UR                  S5      S5        U R                  UR                  S5      SS/5        UR                  S5      S:X  a@  [        R                  TR                  5      [        R                  TR                  5      -   nO[        R                  TR                  5      nU R                  SU4U5        g s  snf s  snnn
f s  snf )Ni'  z*
            def dummy_large(a0):
        r  z
                ar<   z = az + 1
        z
                return az	
        dummy_largec                    > T" U 5      nUS-   $ r  r   )rx  rc  rI  s     r   r  UTestUopsOptimization.test_combine_stack_space_checks_large_framesize.<locals>.dummy15  s    AAq5Lr   c                 F   > Sn[        U 5       H  nUT" S5      -  nM     U$ )Nr   r  r   )rl   r   r{   r  s      r   r@   VTestUopsOptimization.test_combine_stack_space_checks_large_framesize.<locals>.testfunc  (    A1XWQZ Hr   r/  r  r   r  rO   r  r  )rq   r.   r+   r,   r-   r=  r#   r   r3  r   r   r  r   )r   repetitionsr0   headerrl   bodyreturn_r@   r<  rX   r   r{   r   r  r  r  r  r  rI  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>'		 **8R8bK!O45R LNOB3H61af.BO'89'8V'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   G GG#c           	      p  ^ U4S jmU4S jnU R                  US5      u  p#U R                  US5        U R                  U5        U VVVs/ s H
  u  n  pVXF4PM     nnnnU Vs/ s H  oS   PM	     n	nU R                  U	R                  S5      S5        U R                  U	R                  S5      S5        U R                  U	R                  S	5      S
5        U R                  U	R                  S5      S
5        [        R                  TR                  5      n
U R                  SU
4U5        g s  snnnf s  snf )Nc                 (   > U S:  a  T" U S-
  5      $ g)Nr   r<   *   r   )r>   r  s    r   r  OTestUopsOptimization.test_combine_stack_space_checks_recursion.<locals>.dummy15  s    a%q1u~%r   c                 F   > Sn[        U 5       H  nUT" U 5      -  nM     U$ rW   r   )rl   r   r{   r  s      r   r@   PTestUopsOptimization.test_combine_stack_space_checks_recursion.<locals>.testfunc  rN  r   r/  i@  r   r  rO   r  r  r<   r  r  )r   r@   r<  rX   r   r{   r   r  r  r  r  r  s              @r   )test_combine_stack_space_checks_recursion>TestUopsOptimization.test_combine_stack_space_checks_recursion  s   		 **8R8g&R LNOB3H61af.BO'89'8V'8	97;6:)=>B)EFJ)::7;K;KL3]CEVW P9s   D,$D3c                    ^^^^^^	^
^ S mU4S jmU4S jmU4S jmU4S jmU4S jm	U	4S jm
U
4S jmU4S	 jnU R                  US
5      u  p#U R                  US5        U R                  U5        g )Nc                     U $ r	   r   r  s    r   dummy_a6TestUopsOptimization.test_many_nested.<locals>.dummy_a  r-  r   c                    > T" U 5      $ r	   r   )r>   r_  s    r   dummy_b6TestUopsOptimization.test_many_nested.<locals>.dummy_b      1:r   c                    > T" U 5      $ r	   r   )r>   rb  s    r   dummy_c6TestUopsOptimization.test_many_nested.<locals>.dummy_c  rd  r   c                    > T" U 5      $ r	   r   )r>   rf  s    r   dummy_d6TestUopsOptimization.test_many_nested.<locals>.dummy_d  rd  r   c                    > T" U 5      $ r	   r   )r>   ri  s    r   dummy_e6TestUopsOptimization.test_many_nested.<locals>.dummy_e  rd  r   c                    > T" U 5      $ r	   r   )r>   rl  s    r   dummy_f6TestUopsOptimization.test_many_nested.<locals>.dummy_f  rd  r   c                    > T" U 5      $ r	   r   )r>   ro  s    r   dummy_g6TestUopsOptimization.test_many_nested.<locals>.dummy_g  rd  r   c                    > T" U 5      $ r	   r   )r>   rr  s    r   dummy_h6TestUopsOptimization.test_many_nested.<locals>.dummy_h  rd  r   c                 F   > Sn[        U 5       H  nUT" U 5      -  nM     U$ rW   r   )rl   r   r{   ru  s      r   r@   7TestUopsOptimization.test_many_nested.<locals>.testfunc  rN  r   r/     )r=  r#   r   )r   r@   r<  rX   r_  rb  rf  ri  rl  ro  rr  ru  s       @@@@@@@@r   test_many_nested%TestUopsOptimization.test_many_nested  sd    									 **8R8g&"r   c                    ^ S mU4S jnU R                  US5      u  p#U R                  US5        U R                  U5        U R                  S[	        U5      5        g )Nc               3      #    S v   g 7fr	   r   r   r   r   gen7TestUopsOptimization.test_return_generator.<locals>.gen  s
     Js   c                 :   > [        U 5       H
  nT" 5         M     W$ r	   r   )rl   r?   r~  s     r   r@   <TestUopsOptimization.test_return_generator.<locals>.testfunc  s    1X Hr   r6      _RETURN_GENERATORr=  r#   r   r   r]   r   r@   r<  rX   r~  s       @r   test_return_generator*TestUopsOptimization.test_return_generator  sT    		 **8R8b!R );r?;r   c                    ^ S mU4S jnU R                  US5      u  p#U R                  US5        U R                  U5        U R                  S[	        U5      5        g )Nc              3   8   #    [        U 5       H  nUv   M	     g 7fr	   r   r   s     r   r~  3TestUopsOptimization.test_for_iter_gen.<locals>.gen  s     1X s   c                 6   > T" U 5      nSnU H  nX#-  nM	     U$ rW   r   )rl   gsr?   r~  s       r   r@   8TestUopsOptimization.test_for_iter_gen.<locals>.testfunc!  s'    AAA Hr   r6   r   _FOR_ITER_GEN_FRAMEr  r  s       @r   test_for_iter_gen&TestUopsOptimization.test_for_iter_gen  sT    		 **8R8c"R +[_=r   c                 4   [         R                  " 5       R                  nSnSn[        S5       H  nX"-     SUSUS-	     '   X2-  nM     U R	                  [        U5      [        5        U R	                  [        U5      [        5        U R                  US5        g )Nr<   r   ry  r  xar  g      @)r   	_getframef_localsr.   assertIstypefloatr#   )r   lr   r  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   r   N)%rH   rI   rJ   rK   r=  rJ  rV  r_  rf  r  rt  r{  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r	  r  r'  rF  rS  r[  rz  r  r  r  rL   r   r   r   r9  r9  K  s    ;";0;05 12.(	5*2#2J4(9(9(6$1$/$/(1(/$<X8X<!XF"XH/
b;
zX08
<>
$r   r9  __main__)
contextlibr   r,   unittestr  osrR   test.supportr   r   r   import_moduler   r   contextmanagerr   r   
skipUnlesshasattrTestCaser   rU   rZ   r]   r_   skipIfgetenvr   r9  rH   mainr   r   r   <module>r     s    
   	 	  N N!//0CD  -1 1 0 0 	W.@8:N=x(( N=: N=b
" 	W.@8:Kx00 K: K\ 	W.@8:	12c9;XYg'x   g' Z: g'T 	W.@8:	12c9;XYg$8,, g$ Z: g$T zMMO r   