+
    –°³jC(  ã                   óÄ  € R t ^ RIt^ RIt^ RIt^ RIt^ RIt^ RIHtHt ]'       d   ^RI	H
t
 ]P                  R,          ]P                  R,          ]P                  R,          0t]P                  ]P                  R,          4       ]P                  R 8¼  dF   ]P                  ]P                  R,          4       ]P                  ]P                  R,          4       M"]P                  ]P                  R	,          4       R!]P                  u;8:  d   R"8  d&   M M"]P                  ]P                  R
,          4       ]P                  R#8¼  d#   ]P                  ]P                  R,          4       ]! ]P                   ]P"                  ,           4      t] U u0 uF  p ]P&                  V ,          kK  	  up t]! ]P*                  4      t]! ]P.                  4      t]P2                  tR R ltR R ltR R ltR R ltR R lt]P>                   ! R R4      4       t R R lt!]P>                   ! R R4      4       t"]P>                   ! R R4      4       t#R R lt$R# u up i )$a¹  
This module provides utilities for analyzing and optimizing Python bytecode.
Key functionality includes:
- Dead code elimination
- Jump instruction optimization
- Stack size analysis and verification
- Live variable analysis
- Line number propagation and cleanup
- Exception table handling for Python 3.11+

The utilities in this module are used to analyze and transform bytecode
for better performance while maintaining correct semantics.
N)ÚAnyÚTYPE_CHECKING)ÚInstructionÚRETURN_VALUEÚJUMP_FORWARDÚRAISE_VARARGSÚRERAISEÚJUMP_BACKWARDÚJUMP_ABSOLUTEÚRETURN_CONSTÚJUMP_BACKWARD_NO_INTERRUPTc                óX   € V ^8„  d   QhR\         R,          R\        R\        3,          /# )é   Úinstsr   Úreturn)ÚlistÚdictÚint)Úformats   "Ú`/home/luca/screen-checking/.venv/lib/python3.14/site-packages/torch/_dynamo/bytecode_analysis.pyÚ__annotate__r   5   s)   € ÷ ñ ”t˜MÕ*ð ¬t°MÄ3Ð4FÕ/Gñ ó    c                ód   € / p\        V 4       F  w  r#W19   d   \        RV R24      hW!V&   K   	  V# )z–
Get a mapping from instruction memory address to index in instruction list.
Additionally checks that each instruction only appears once in the list.
zduplicate instruction at index z in instruction list)Ú	enumerateÚAssertionError)r   ÚindexofÚiÚinsts   &   r   Úget_indexofr   5   sI   € ð €GÜ˜UÖ#‰ˆØŒ?Ü Ø1°!°Ð4HÐIóð ð �‹ñ $ð €Nr   c                óL   € V ^8„  d   QhR\         R,          R\         R,          /# ©r   Úinstructionsr   r   ©r   )r   s   "r   r   r   E   s(   € ÷ 8Kñ 8K¤4¨Õ#6ð 8K¼4ÀÕ;Nñ 8Kr   c           
     ó„  a aaa€ \        S 4      o\        4       oR VVV V3R lloS! ^ 4       \        P                  R	8¼  EdQ   \	        S4      p\        S 4       EF5  w  r#VS9   g   K  VP                  '       g   K#  \        P                  ! VSVP                  P                  ,          4      pV\        V4      8¼  d   \        R4      h\        P                  ! VSVP                  P                  ,          4      ^,
          pV^ 8  d   \        R4      hW,          Tu;8:  d   W,          8:  g$   M \        RV RW,           RW,           R24      hS W,          ,          VP                  n	        S W,          ,          VP                  n        EK8  	  \        S 4       UUu. uF  w  r#VS9   g   K  VNK  	  upp# u uppi )
zDead code eliminationc                ó(   € V ^8„  d   QhR\         RR/# )r   Ústartr   N©r   )r   s   "r   r   Ú&remove_dead_code.<locals>.__annotate__J   s   € ÷ ñ œcð  dñ r   c                 óÌ  <€ \        V \        S4      4       FÉ  pVS9   d    R # SP                  V4       SV,          pVP                  '       d$   S! SVP                  P                  ,          4       VP
                  \        9   dA   VP                  f   \        RVP                   R24      hS! SVP                  ,          4       VP
                  \        9   g   KÈ   R # 	  R # )Nújump instruction ú has no target)
ÚrangeÚlenÚaddÚexn_tab_entryÚtargetÚopcodeÚJUMP_OPCODESr   ÚopnameÚTERMINAL_OPCODES)r%   r   r   Úfind_live_coder   r!   Ú	live_codes   &  €€€€r   r4   Ú(remove_dead_code.<locals>.find_live_codeJ   s³   ø€ Ü�uœc ,Ó/Ö0ˆAØ�IŒ~ÚØ�M‰M˜!ÔØ •?ˆDØ×!×!Ð!Ù˜w t×'9Ñ'9×'@Ñ'@ÕAÔBØ�{‰{œlÔ*Ø—;‘;Ò&Ü(Ø+¨D¯K©K¨=¸ÐGóð ñ ˜w t§{¡{Õ3Ô4Ø�{‰{Ô.Ö.Úó 1r   z9no live instruction found at or after exn_tab_entry startz8no live instruction found at or before exn_tab_entry endzinstruction z not within live range [z, Ú]©é   é   )r   ÚsetÚsysÚversion_infoÚsortedr   r.   ÚbisectÚbisect_leftr%   r,   r   Úbisect_rightÚend)	r!   Úlive_idxr   r   Ú	start_idxÚend_idxr4   r   r5   s	   f     @@@r   Úremove_dead_coderF   E   s’  û€ ä˜,Ó'€GÜ“€I÷ó ñ" �1Ôô ×Ñ˜7Õ"Ü˜)Ó$ˆÜ  ×.‰GˆAØ�IŽ~ $×"4×"4Ò"4ä"×.Ò.Ø˜g d×&8Ñ&8×&>Ñ&>Õ?ó�	ð ¤ H£Ô-Ü(ØSóð ô
 ×'Ò'¨°'¸$×:LÑ:L×:PÑ:PÕ2QÓRÐUVÕVð ð ˜Q”;Ü(ØRóð ð !Õ+¨qÖE°HÕ4EÖEÜ(Ø& q cð *Ø$Õ/Ð0°°8Õ3DÐ2EÀQðHóð ð ,8¸Õ8KÕ+L�×"Ñ"Ô(Ø)5°hÕ6GÕ)H�×"Ñ"×&ñ1 /ô4 !*¨,Ô 7ÔJÑ 7‘W�Q¸1À	¹>�DˆDÑ 7ÒJÐJùÓJs   Æ"F<Æ2F<c                óL   € V ^8„  d   QhR\         R,          R\         R,          /# r    r"   )r   s   "r   r   r   €   s(   € ÷ Nñ N¬¨mÕ)<ð NÄÀmÕATñ Nr   c                ó  € \         P                  ! V 4       UUu0 uF5  w  rVP                  R8X  g   K  VP                  VJ g   K*  \	        V4      kK7  	  pppV  Uu. uF  p\	        V4      V9  g   K  VNK  	  up# u uppi u upi )z'Eliminate jumps to the next instructionr
   )Ú	itertoolsÚpairwiser2   r/   Úid)r!   ÚaÚbÚpointless_jumpsr   s   &    r   Úremove_pointless_jumpsrO   €   s‚   € ô ×&Ò& |Ô4ôá4‰DˆAØ�8‰8�Ñ&ô 	à+,¯8©8°q¨=ô 	Œˆ1ŽÙ4ð ñ ñ
 *ÓM™\�T¬R°«X¸_Ñ-L�DˆD™\ÑMÐMùóùò
 Ns   šA<´A<ÁA<ÁBÁ3Bc                ó6   € V ^8„  d   QhR\         R,          RR/# ©r   r!   r   r   Nr"   )r   s   "r   r   r   Š   s   € ÷  ñ  ¤d¨=Õ&9ð  ¸dñ  r   c                ó@   a€ RoR V3R llpV  F  pV! V4       K  	  R# )zEEnsure every instruction has line number set in case some are removedNc                ó    € V ^8„  d   QhRRRR/# ©r   r   r   r   N© )r   s   "r   r   Ú)propagate_line_nums.<locals>.__annotate__Ž   s   € ÷ 'ñ ' ð '°$ñ 'r   c                 óR   <€ V P                   '       d   V P                   oSV n         R # ©N©Ústarts_line©r   Úcur_line_nos   &€r   Úpopulate_line_numÚ.propagate_line_nums.<locals>.populate_line_numŽ   s"   ø€ à××ÐØ×*Ñ*ˆKà&ˆÖr   rU   )r!   r]   r   r\   s   &  @r   Úpropagate_line_numsr_   Š   s&   ø€ à€K÷'ð 'ó ˆÙ˜$Öó r   c                ó6   € V ^8„  d   QhR\         R,          RR/# rQ   r"   )r   s   "r   r   r   ™   s   € ÷ ñ ¬¨mÕ)<ð Àñ r   c                ó@   a€ RoR V3R llpV  F  pV! V4       K  	  R# )z;Remove extra starts line properties before packing bytecodeNc                ó    € V ^8„  d   QhRRRR/# rT   rU   )r   s   "r   r   Ú,remove_extra_line_nums.<locals>.__annotate__ž   s   € ÷ +ñ +˜mð +°ñ +r   c                 ót   <€ V P                   f   R # V P                   S8X  d
   R V n         R # V P                   oR # rX   rY   r[   s   &€r   Úremove_line_numÚ/remove_extra_line_nums.<locals>.remove_line_numž   s3   ø€ à×ÑÒ#ÙØ×Ñ Ô,Ø#ˆDÖà×*Ñ*ŠKr   rU   )r!   re   r   r\   s   &  @r   Úremove_extra_line_numsrg   ™   s(   ø€ ð €K÷+ð +ó ˆÙ˜Öó r   c                   ó,   a € ] tR t^«t o V 3R ltRtV tR# )ÚReadsWritesc                ón   <€ V ^8„  d   Qh/ S[ S[,          ;R&   S[ S[,          ;R&   S[ S[,          ;R&   # )r   ÚreadsÚwritesÚvisited)r;   r   )r   Ú__classdict__s   "€r   r   ÚReadsWrites.__annotate__«   s5   ø‡ ‚ á‰s�8�Oñ ñ ‘�HÑñ ñ ‘�XÑò	 r   rU   N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__annotate_func__Ú__static_attributes__Ú__classdictcell__©rn   s   @r   ri   ri   «   s   ø‡ ‡ „ r   ri   c                óX   € V ^8„  d   QhR\         R,          RRR\        \        ,          /# )r   r!   r   Úinstructionr   )r   r;   r   )r   s   "r   r   r   ²   s-   € ÷ %"ñ %"Ü�}Õ%ð%"Ø4Að%"äŒ…Xñ%"r   c                 ó*  a aaaa€ \        S 4      o\        \        4       \        4       \        4       4      o\        \        4       \        4       \        4       4      oR  VV VVV3R lloS! SSV,          4       SP                  SP                  ,          # )c                ó4   € V ^8„  d   QhR\         R\        RR/# )r   Ústater%   r   N)ri   r   )r   s   "r   r   Ú'livevars_analysis.<locals>.__annotate__¹   s!   € ÷ ñ ”Kð ¬ð °ñ r   c                 óØ  <€ WP                   9   d   R # V P                   P                  V4       \        V\        S4      4       EF¡  pSV,          pVP                  \
        9   g   VP                  \        9   dÅ   RVP                  9   g   RVP                  9   dB   VP                  SP                  9  d&   V P                  P                  VP                  4       MaRVP                  9   d'   V P                  P                  VP                  4       M*VP                  R8X  d   M\        RVP                   24      hVP                  '       d%   S! SSVP                  P                  ,          4       VP                  \        9   dD   VP                  f   \        RVP                   R24      hS! SSVP                  ,          4       Sp VP                  \         9   g   EK¡   R # 	  R # )NÚLOADÚDELETEÚSTOREÚ	MAKE_CELLz
unhandled r)   r*   )rm   r-   r+   r,   r0   ÚHASLOCALÚHASFREEr2   Úargvalrl   rk   ÚNotImplementedErrorr.   r/   r1   r   r3   )	r|   r%   r   r   r   r!   ÚmayÚmustÚwalks	   &&  €€€€€r   r‰   Úlivevars_analysis.<locals>.walk¹   s_  ø€ Ø—M‘MÔ!ÙØ�‰×Ñ˜%Ô ä�uœc ,Ó/×0ˆAØ •?ˆDØ�{‰{œhÔ&¨$¯+©+¼Ô*@Ø˜TŸ[™[Ô(¨H¸¿¹Ô,CØ—{‘{¨$¯+©+Ô5ØŸ™Ÿ™¨¯©Ô4øØ §¡Ô+Ø—L‘L×$Ñ$ T§[¡[Õ1Ø—[‘[ KÔ/Øä-°
¸4¿;¹;¸-Ð.HÓIÐIØ×!×!Ð!Ù�S˜' $×"4Ñ"4×";Ñ";Õ<Ô=Ø�{‰{œlÔ*Ø—;‘;Ò&Ü(Ø+¨D¯K©K¨=¸ÐGóð ñ �S˜' $§+¡+Õ.Ô/Ø�Ø�{‰{Ô.×.Úó- 1r   )r   ri   r;   rk   )r!   ry   r   r‡   rˆ   r‰   s   f&@@@@r   Úlivevars_analysisr‹   ²   se   ü€ ô ˜,Ó'€GÜ”s“uœc›e¤S£UÓ+€DÜ
”c“eœS›U¤C£EÓ
*€C÷ô ñ: 	ˆˆw�{Õ#Ô$Ø�:‰:˜Ÿ	™	Õ!Ð!r   c                   ó0   a € ] tR t^Út o RtV 3R ltRtV tR# )ÚFixedPointBoxTc                ó&   <€ V ^8„  d   Qh/ S[ ;R&   # )r   Úvalue)Úbool)r   rn   s   "€r   r   ÚFixedPointBox.__annotate__Ú   s   ø‡ ‚ áÑò r   rU   N)rp   rq   rr   rs   r�   rt   ru   rv   rw   s   @r   r�   r�   Ú   s   ø‡ € à€E÷ ƒ r   r�   c                   ób   a € ] tR t^ßt o V 3R lR ltV 3R lR ltV 3R lR ltV 3R ltRtV t	R	# )
Ú	StackSizec                ó   <€ V ^8„  d   QhRR/# )r   r   NrU   )r   rn   s   "€r   r   ÚStackSize.__annotate__å   s   ø€ ÷ 'ñ '�dñ 'r   c                óD   € ^ V n         ^ V n        RV P                  n        R# )é    FN)ÚlowÚhighÚfixed_pointr�   )Úselfs   &r   ÚzeroÚStackSize.zeroå   s   € ØˆŒØˆŒ	Ø!&ˆ×ÑÖr   c                ó(   <€ V ^8„  d   QhRRRS[ RR/# )r   Úotherr“   Únr   Nr&   )r   rn   s   "€r   r   r•   ê   s"   ø€ ÷ +ñ +˜{ð +©sð +°tñ +r   c                óF  € V P                   V P                  3p\        V P                   VP                   V,           4      V n         \        V P                  VP                  V,           4      V n        V P                   V P                  3V8w  d   R V P                  n        R# R# ©FN©r˜   r™   ÚminÚmaxrš   r�   )r›   rŸ   r    Úpriors   &&& r   Ú	offset_ofÚStackSize.offset_ofê   sp   € Ø—‘˜4Ÿ9™9Ð%ˆÜ�t—x‘x §¡¨Q¥Ó/ˆŒÜ˜Ÿ	™	 5§:¡:°¥>Ó2ˆŒ	Ø�H‰H�d—i‘iÐ  EÔ)Ø%*ˆD×ÑÖ"ñ *r   c                ó$   <€ V ^8„  d   QhRS[ RR/# )r   Údepthr   Nr&   )r   rn   s   "€r   r   r•   ñ   s   ø€ ÷ +ñ +¡#ð +¨$ñ +r   c                ó  € V P                   V P                  3p\        V P                   V4      V n         \        V P                  V4      V n        V P                   V P                  3V8w  d   R V P                  n        R# R# r¢   r£   )r›   rª   r¦   s   && r   Úexn_tab_jumpÚStackSize.exn_tab_jumpñ   s`   € Ø—‘˜4Ÿ9™9Ð%ˆÜ�t—x‘x Ó'ˆŒÜ˜Ÿ	™	 5Ó)ˆŒ	Ø�H‰H�d—i‘iÐ  EÔ)Ø%*ˆD×ÑÖ"ñ *r   c                ó^   <€ V ^8„  d   Qh/ S[ S[,          ;R&   S[ S[,          ;R&   S[;R&   # )r   r˜   r™   rš   )r   Úfloatr�   )r   rn   s   "€r   r   r•   ß   s2   ø‡ ‚ á	‰u�Ññ ñ ‘�+Ññ ñ Ñò	 r   )r™   r˜   N)
rp   rq   rr   rs   rœ   r§   r¬   rt   ru   rv   rw   s   @r   r“   r“   ß   s*   ø‡ € ÷'ð '÷
+ð +÷+ð +÷% ƒ r   r“   c                óT   € V ^8„  d   QhR\         R,          R\        \        ,          /# r    )r   r   r¯   )r   s   "r   r   r   ù   s#   € ÷ )ñ )¤T¨-Õ%8ð )¼SÄ5½[ñ )r   c                 ó&  € V '       g   \        R 4      h\        4       pV  Uu/ uF#  pV\        \        R4      \        R4      V4      bK%  	  ppW0^ ,          ,          P	                  4        \        ^d4       EF   pVP                  '       d    EMŒRVn        \        W R,          R.,           4       EFa  w  r%W2,          pVP                  \        9  dL   Vf   \        RV 24      h\        VP                  VP                  RR7      pW5,          P                  Wg4       VP                  \        9   d_   VP                  f   \        R	V 24      hW2P                  ,          P                  V\        VP                  VP                  RR7      4       VP                  '       g   Kõ  VP                  P                   \#        VP                  P$                  4      ,           ^,           pW2P                  P                  ,          P'                  V4       EKd  	  EK£  	  \)        R
 VP+                  4        4       4      p	\-        R VP+                  4        4       4      p
VP                  '       g   \        R4      hV	^ 8  d   \        RV	 24      hV
# u upi )z#instructions list must not be emptyÚinfz-infT:é   NNNzmissing next inst: F)Újumpzmissing target: c              3   ó8   "  € T F  qP                   x € K  	  R # 5irX   )r˜   ©Ú.0Úxs   & r   Ú	<genexpr>Ú%stacksize_analysis.<locals>.<genexpr>  s   é € Ð2Ñ1˜�eŽeÓ1ùó   ‚c              3   ó8   "  € T F  qP                   x € K  	  R # 5irX   )r™   r¶   s   & r   r¹   rº     s   é € Ð4Ñ3˜!�vŽvÓ3ùr»   zfailed to reach fixed pointz1stack size analysis produced negative low value: )r   r�   r“   r¯   rœ   r+   r�   Úzipr0   r3   Ústack_effectÚargr§   r1   r/   r.   rª   r   Úlastir¬   r¤   Úvaluesr¥   )r!   rš   r   Ústack_sizesÚ_Ú	next_instÚ
stack_sizeÚeffrª   r˜   r™   s   &          r   Ústacksize_analysisrÇ   ù   s  € ßÜÐBÓCÐCÜ“/€Kñ !óá ˆDð 	Œiœ˜e›¤e¨F£m°[ÓAÒAÙ ð ð ð ˜Q•Õ ×%Ñ%Ô'ä�3�ZˆØ××ÐÚØ ˆÔä" <¸bÕ1AÀTÀFÕ1J×K‰OˆDØ$Õ*ˆJØ�{‰{Ô"2Ô2ØÒ$Ü(Ð+>¸t¸fÐ)EÓFÐFÜ" 4§;¡;°·±¸uÔE�ØÕ&×0Ñ0°ÔAØ�{‰{œlÔ*Ø—;‘;Ò&Ü(Ð+;¸D¸6Ð)BÓCÐCØŸK™KÕ(×2Ñ2Ø¤¨T¯[©[¸$¿(¹(ÈÔ Nôð ×!×!Ò!ð ×*Ñ*×0Ñ0´3°t×7IÑ7I×7OÑ7OÓ3PÕPÐSTÕT�Ø×.Ñ.×5Ñ5Õ6×CÑCÀE×Jô#  Lñ ô0 Ñ2˜[×/Ñ/Ô1Ó2Ó
2€CÜÑ4˜{×1Ñ1Ô3Ó4Ó4€Dà××ÐÜÐ:Ó;Ð;Ø
ˆQ„wÜÐPÐQTÐPUÐVÓWÐWØ€KùòKs   ¢)Jr8   )r9   é   )r9   é   )r9   é   )%Ú__doc__r?   ÚdataclassesÚdisrI   r<   Útypingr   r   Úbytecode_transformationr   Úopmapr3   r-   r=   r;   ÚhasjrelÚhasjabsr1   r2   ÚJUMP_OPNAMESÚhaslocalrƒ   Úhasfreer„   r¾   r   rF   rO   r_   rg   Ú	dataclassri   r‹   r�   r“   rÇ   )r0   s   0r   Ú<module>r×      sú  ðñó Û Û 
Û Û 
ß %÷ õ 5ð ‡I�IˆnÕØ‡I�IˆnÕØ‡I�IˆoÕðÐ ð × Ñ �S—Y‘Y˜yÕ)Ô *Ø×Ñ�wÔØ×Ñ˜Ÿ™ ?Õ3Ô4Ø×Ñ˜Ÿ™ >Õ2Õ3à×Ñ˜Ÿ™ ?Õ3Ô4à
ˆc×ÑÖ( ×(Ø×Ñ˜Ÿ™ >Õ2Ô3Ø×Ñ�wÔØ×Ñ˜Ÿ™Ð#?Õ@ÔAÙ�3—;‘; §¡Õ,Ó-€Ù1=Ó>± v�—
‘
˜6×"Ð"±Ñ>€Ùˆs�|‰|Ó€Ù
ˆc�k‰kÓ
€à×Ñ€õõ 8KõvNõ õð$ ×Ñ÷ð ó ðõ%"ðP ×Ñ÷ð ó ðð ×Ñ÷+ð +ó ð+÷2)ùòW ?s   ÆI