+
    Bi                        R t ^ RIt^ RIt^ RIt^ RIt ^ RIt]! 4       tR t	 ! R R]P                  4      t ! R R]P                  4      t]P                  ! ]RJ R4       ! R R	]4      4       t]P                  ! ]RJ R4       ! R
 R]4      4       t]P                  ! ]RJ R4       ! R R]4      4       tR#   ] d    Rt Li ; i)zGbytecode_helper - support tools for testing correct bytecode generationNc              #      "   T;'       g    \        R4      pV  FQ  pV\        VR4      3x  VP                  ;'       g    R F$  w  r4p\        V4       F  p\        VR4       K  	  K&  	  KS  	  R # 5i)N )iternext
cache_inforange)instrsco_positionsinstr_sizeis   &&    3/usr/lib/python3.14/test/support/bytecode_helper.pyinstructions_with_positionsr      sk     
  ++48LT,+++ ++11r1JAQ4[\2& ! 2 s   =A1 1A1c                   B   a  ] tR t^t o RtR t]3R lt]3R ltRt	V t
R# )BytecodeTestCasez1Custom assertion methods for inspecting bytecode.c                z    \         P                  ! 4       p\        P                  ! WR 7       VP                  4       # ))file)ioStringIOdisgetvalue)selfcoss   && r   get_disassembly_as_string*BytecodeTestCase.get_disassembly_as_string   s%    KKMzz|    c                h   V P                  V\        P                  4       \        P                  ! V4       F5  pVP                  V8X  g   K  V\
        J g   VP                  V8X  g   K3  Vu # 	  V P                  V4      pV\
        J d   V: RV: 2pMRpWbW53,          pV P                  V4       R# )zAReturns instr if opname is found, otherwise throws AssertionErrorz not found in bytecode:
z!(%s,%r) not found in bytecode:
%sN)	assertInr   opmapget_instructionsopname_UNSPECIFIEDargvalr   failr   xr"   r$   r
   disassemblymsgs   &&&&   r   assertInBytecode!BytecodeTestCase.assertInBytecode"   s    fcii())!,E||v%\)U\\V-C L - 44Q7\!5;[IC6C55C		#r   c                t   V P                  V\        P                  4       \        P                  ! V4       F}  pVP                  V8X  g   K  V P                  V4      pV\        J d   V: RV: 2pV P                  V4       KM  VP                  V8X  g   K`  RpWbW53,          pV P                  V4       K  	  R# )z(Throws AssertionError if opname is foundz occurs in bytecode:
z(%s,%r) occurs in bytecode:
%sN)	r   r   r    r!   r"   r   r#   r%   r$   r&   s   &&&&   r   assertNotInBytecode$BytecodeTestCase.assertNotInBytecode1   s    fcii())!,E||v%"<<Q?\):@+NCIIcN\\V+;C ==CIIcN -r   r   N)__name__
__module____qualname____firstlineno____doc__r   r#   r*   r-   __static_attributes____classdictcell____classdict__s   @r   r   r      s'     ;
 2>  5A # #r   r   c                      a  ] tR t^?t o ]! ]P                  4      t]! ]P                  ]P                  ,           ]P                  ,           4      t]P                  ]4      t ! R R4      tR tR tR tR tRtV tR# )	CompilationStepTestCasec                       ] tR t^EtRtR# )CompilationStepTestCase.Labelr   N)r/   r0   r1   r2   r4   r   r   r   Labelr;   E   s    r   r<   c                X   V P                  V\        4       VP                  4       pV P                  V4      P                  4       pV P	                  \        V4      \        V4      4       \        W24       F  w  rE\        V\        4      '       d   V P	                  WT4       K.  V P                  V\        4       V P                  V\        4       \        \        V4       Uu. uF  qf^,          R8w  g   K  V^ ,          NK  	  up4      pV P	                  VRV VRV 4       K  	  R# u upi )   N)assertIsInstancelistr!   seq_from_instsassertEquallenzip
isinstanceinttuplemax	enumerate)r   
actual_seqexpectedactualactexppidxs   &&&     r   assertInstructionsMatch/CompilationStepTestCase.assertInstructionsMatchH   s    
 	h-,,.&&x0AACVc(m4 F-HC#s##  *!!#u-!!#u-Ys^B^trztqtt^BCCS#YDS	2 . Cs   !D'
5D'
c                    ^ p. pV F@  p\        W@P                  4      '       d	   W$n        K&  V^,          pVP                  V4       KB  	  V#     )rF   r<   valueappend)r   instsrQ   resitems   &&   r   resolveAndRemoveLabels.CompilationStepTestCase.resolveAndRemoveLabels\   sF    D$

++ 
q

4   
r   c                   V Uu0 uF"  p\        W P                  4      '       g   K   VkK$  	  pp\        V4       F  w  rEWEn        K  	  \        P
                  ! 4       pV F  p\        W P                  4      '       d   VP                  VP                  4       K;  V^ ,          p\        V\        4      '       d   \        P                  V,          pVR,          vr\        WP                  4      '       d   VP                  pV	R.^\        V	4      ,
          ,          ,           p	VP                  ! Yx;'       g    ^ .V	O5!   K  	  V# u upi )rV   :r>   NNr?   )rF   r<   rJ   rW   _testinternalcapinew_instruction_sequence	use_labelstropcoder    rD   addop)
r   rY   r[   labelsr   lblseqoparglocs
   &&        r   rB   &CompilationStepTestCase.seq_from_instsi   s    #(I54JtZZ,H$$5I'FAI (  88:D$

++djj)!Wb#&&b)B H	c::..))CRDACL11		"hhQ--  
# Js
   EEc           	        V F  p\        W P                  4      '       d   K   Vvr4p\        V\        4      '       d   \        P                  V,          pV P                  V\        P                  9   VR JR\        P                  V,          : RV: 24       T P                  \        ;QJ d    R V 4       F  '       d   K   RM	  RM! R V 4       4      4       K  	  R # )Nzopcode.opname[op]=z arg=c              3   B   "   T F  p\        V\        4      x  K  	  R # 5iN)rF   rG   ).0ls   & r   	<genexpr>=CompilationStepTestCase.check_instructions.<locals>.<genexpr>   s     @Cq
1c 2 2Cs   FT)
rF   r<   rb   rc   r    rC   hasargr"   
assertTrueall)r   rY   instrh   ri   rj   s   &&    r   check_instructions*CompilationStepTestCase.check_instructions}   s    D$

++ MBc"c""\\"%R6==0 _ 2b 136SF;= OOCC@C@CCC@C@@A r   r   N)r/   r0   r1   r2   setr   rs   HAS_ARGhasjrelhasjabshasexc
HAS_TARGETunionHAS_ARG_OR_TARGETr<   rR   r\   rB   rw   r4   r5   r6   s   @r   r9   r9   ?   sf     #**oGS[[3;;.;<Jj1 3((
B 
Br   r9   zrequires _testinternalcapic                   &   a  ] tR t^t o R tRtV tR# )CodegenTestCasec                :    \         P                  ! VR ^ 4      w  r#V# )z
my_file.py)r_   compiler_codegen)r   astrY   r   s   &&  r   generate_codeCodegenTestCase.generate_code   s    $55c<Kr   r   N)r/   r0   r1   r2   r   r4   r5   r6   s   @r   r   r      s      r   r   c                   *   a  ] tR t^t o RR ltRtV tR# )CfgOptimizationTestCasec                6    \         P                  ! WV4      pWB3# rn   )r_   optimize_cfg)r   rg   constsnlocalsrY   s   &&&& r   get_optimized%CfgOptimizationTestCase.get_optimized   s    !..sGD}r   r   NrU   )r/   r0   r1   r2   r   r4   r5   r6   s   @r   r   r      s      r   r   c                   &   a  ] tR t^t o R tRtV tR# )AssemblerTestCasec                4    \         P                  ! WV4      pV# rn   )r_   assemble_code_object)r   filenamerY   metadatar   s   &&&& r   get_code_object!AssemblerTestCase.get_code_object   s    33HXN	r   r   N)r/   r0   r1   r2   r   r4   r5   r6   s   @r   r   r      s      r   r   )r3   unittestr   r   rc   r_   ImportErrorobjectr#   r   TestCaser   r9   skipIfr   r   r   r   r   r   <module>r      s    M  
 	  x
'##x(( ##JHBh// HBV 
"d*,HI-  J 
"d*,HI5  J 
"d*,HI/  Jc  s   B7 7	CC