
    IЦi"                     4   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   \R                  S   \R                  S   1r	\R                  S:  a  \	R                  \R                  S   5        \R                  S:  a=  \	R                  \R                  S	   5        \	R                  \R                  S   5        O\	R                  \R                  S
   5        \R                  S:  a  \	R                  \R                  S   5        \R                  S:  a  \	R                  \R                  S   5        \" \R                  \R                  -   5      r\ V s1 s H  n \R                   U    iM     sn r\" \R$                  5      r\" \R(                  5      r\R,                  rS rS rS rS rS r\R8                   " S S5      5       rS r\R8                   " S S5      5       r\R8                   " S S5      5       r S\\!\"4   4S jr#gs  sn f )    N)AnySetUnionRETURN_VALUEJUMP_FORWARDRAISE_VARARGS   	   RERAISEr
      JUMP_BACKWARDJUMP_ABSOLUTE)r
      RETURN_CONST)r
      JUMP_BACKWARD_NO_INTERRUPTc                 H    0 n[        U 5       H  u  p#X1;  d   eX!U'   M     U$ )z
Get a mapping from instruction memory address to index in instruction list.
Additionally checks that each instruction only appears once in the list.
)	enumerate)instsindexofiinsts       ^/var/www/html/ai-image-ml/venv/lib/python3.13/site-packages/torch/_dynamo/bytecode_analysis.pyget_indexofr   "   s4    
 GU#""" $ N    c                   ^ ^^^ [        T 5      m[        5       mUUU U4S jmT" S5        [        R                  S:  a  [	        T5      n[        T 5       H  u  p#UT;   d  M  UR                  (       d  M   [        R                  " UTUR                  R                     5      nU[        U5      :  d   e[        R                  " UTUR                  R                     5      S-
  nUS:  d   eX   Us=::  a	  X   ::  d   e   eT X      UR                  l	        T X      UR                  l        M     [        T 5       VVs/ s H  u  p#UT;   d  M  UPM     snn$ s  snnf )zDead code eliminationc                 X  > [        U [        T5      5       H  nUT;   a    g TR                  U5        TU   nUR                  (       a  T" TUR                  R                     5        UR
                  [        ;   a  T" TUR                     5        UR
                  [        ;   d  M    g    g N)rangelenaddexn_tab_entrytargetopcodeJUMP_OPCODESTERMINAL_OPCODES)startr   r   find_live_coder   instructions	live_codes      r   r*   (remove_dead_code.<locals>.find_live_code3   s    uc,/0AI~MM!?D!!wt'9'9'@'@AB{{l*wt{{34{{.. 1r   r   r      )r   setsysversion_infosortedr   r$   bisectbisect_leftr)   r"   bisect_rightend)	r+   live_idxr   r   	start_idxend_idxr*   r   r,   s	   `     @@@r   remove_dead_coder:   .   sO   ,'GI  1 7")$ .GAI~$"4"4"4"..gd&8&8&>&>?	 !3x=000 '''$:L:L:P:P2QRUVV  !|#|*aD83DDDDDD+78K+L""()5h6G)H""& /  !*, 7J 7WQ1	>D 7JJJs   EEc                     [        X SS 5       VVs1 s H3  u  pUR                  S:X  d  M  UR                  UL d  M(  [        U5      iM5     nnnU  Vs/ s H  n[        U5      U;  d  M  UPM     sn$ s  snnf s  snf )z'Eliminate jumps to the next instructionr.   Nr   )zipopnamer%   id)r+   abpointless_jumpsr   s        r   remove_pointless_jumpsrB   [   s     12&677DA88& 	+,88q= 	17  
 *M\TRX_-LD\MM
 Ns   A3A3A3A9*A9c                 8   ^ SmU4S jnU  H  nU" U5        M     g)zEEnsure every instruction has line number set in case some are removedNc                 N   > U R                   (       a  U R                   mTU l         g r    starts_liner   cur_line_nos    r   populate_line_num.propagate_line_nums.<locals>.populate_line_numi   s    **K&r    )r+   rI   r   rH   s      @r   propagate_line_numsrL   e   s!    K' $ r   c                 8   ^ SmU4S jnU  H  nU" U5        M     g)z;Remove extra starts line properties before packing bytecodeNc                 j   > U R                   c  g U R                   T:X  a  S U l         g U R                   mg r    rE   rG   s    r   remove_line_num/remove_extra_line_nums.<locals>.remove_line_numy   s3    #,#D**Kr   rK   )r+   rO   r   rH   s      @r   remove_extra_line_numsrQ   t   s#     K+  r   c                   F    \ rS rSr% \\   \S'   \\   \S'   \\   \S'   Srg)ReadsWrites   readswritesvisitedrK   N)__name__
__module____qualname____firstlineno__r   r   __annotations____static_attributes__rK   r   r   rS   rS      s    s8OHXr   rS   c                   ^ ^^^^ [        T 5      m[        [        5       [        5       [        5       5      m[        [        5       [        5       [        5       5      mUU UUU4S jmT" TTU   5        TR                  TR                  -  $ )Nc                 V  > XR                   ;   a  g U R                   R                  U5        [        U[        T5      5       GHc  nTU   nUR                  [
        ;   d  UR                  [        ;   a  SUR                  ;   d  SUR                  ;   a@  UR                  TR                  ;  a%  U R                  R                  UR                  5        O_SUR                  ;   a&  U R                  R                  UR                  5        O)UR                  S:X  a  O[        SUR                   35      eUR                  (       a   T" TTUR                  R                     5        UR                  [        ;   a  T" TTUR                     5        Tn UR                  [        ;   d  GMd    g    g )NLOADDELETESTORE	MAKE_CELLz
unhandled )rW   r#   r!   r"   r&   HASLOCALHASFREEr=   argvalrV   rU   NotImplementedErrorr$   r%   r'   r(   )	stater)   r   r   r   r+   maymustwalks	       r   rk   livevars_analysis.<locals>.walk   s3   MM!% uc,/0A?D{{h&$++*@T[[(H,C{{$++54+LL$$T[[1[[K/-
4;;-.HII!!S'$"4"4";";<={{l*S'$++./{{..% 1r   )r   rS   r/   rU   )r+   instructionr   ri   rj   rk   s   ` @@@@r   livevars_analysisrn      sc    ,'GsuceSU+D
ceSUCE
*C 2 	w{#$::		!!r   c                   $    \ rS rSr% Sr\\S'   Srg)FixedPointBox   TvaluerK   N)rX   rY   rZ   r[   rr   boolr\   r]   rK   r   r   rp   rp      s    E4r   rp   c                   Z    \ rS rSr% \\\4   \S'   \\\4   \S'   \\S'   S r	S r
S rSrg	)
	StackSize   lowhighfixed_pointc                 B    SU l         SU l        SU R                  l        g )Nr   F)rw   rx   ry   rr   )selfs    r   zeroStackSize.zero   s    	!&r   c                 0   U R                   U R                  4n[        U R                   UR                   U-   5      U l         [        U R                  UR                  U-   5      U l        U R                   U R                  4U:w  a  SU R                  l        g g NFrw   rx   minmaxry   rr   )r{   othernpriors       r   	offset_ofStackSize.offset_of   sp    499%txxQ/		5::>2	HHdii E)%*D" *r   c                     U R                   U R                  4n[        U R                   U5      U l         [        U R                  U5      U l        U R                   U R                  4U:w  a  SU R                  l        g g r   r   )r{   depthr   s      r   exn_tab_jumpStackSize.exn_tab_jump   s`    499%txx'		5)	HHdii E)%*D" *r   )rx   rw   N)rX   rY   rZ   r[   r   intfloatr\   rp   r|   r   r   r]   rK   r   r   ru   ru      s5    	sEz	
U

'
++r   ru   returnc                    U (       d   e[        5       nU  Vs0 s H#  nU[        [        S5      [        S5      U5      _M%     nnX0S      R                  5         [	        S5       GH  nUR
                  (       a    GOSUl        [        X SS  S /-   5       GHj  u  p%X2   n[        R                  S:  =(       a     UR                  [        R                  S   :H  nUR                  [        ;  aH  Uc
   S	U 35       eU(       a  SO[        UR                  UR                  S
S9nX5   R                  Xh5        UR                  [         ;   aB  U(       d;  X2R"                     R                  U[        UR                  UR                  SS95        UR$                  (       d  GM
  UR$                  R&                  [)        UR$                  R*                  5      -   S-   n	X2R$                  R"                     R-                  U	5        GMm     GM      [5        S UR7                  5        5       5      n
[9        S UR7                  5        5       5      nUR
                  (       d   S5       eU
S:  d   eU$ s  snf )Ninfz-infr   d   Tr.   r	   CALL_FINALLYzmissing next inst: F)jumpc              3   8   #    U  H  oR                   v   M     g 7fr    )rw   .0xs     r   	<genexpr>%stacksize_analysis.<locals>.<genexpr>   s     21ee1   c              3   8   #    U  H  oR                   v   M     g 7fr    )rx   r   s     r   r   r      s     43!vv3r   zfailed to reach fixed point)rp   ru   r   r|   r!   rr   r<   r0   r1   r&   disopmapr(   stack_effectargr   r'   r%   r$   r   r   lastir   printrw   rx   r   valuesr   )r+   ry   r   stack_sizes_	next_inst
stack_sizeis_call_finallyeffr   rw   rx   s               r   stacksize_analysisr      s*   </K ! D 	ieeFm[AA    Q %%'3Z "<ab1ATF1JKOD$*J   6)VdkkSYY~=V.V  {{"22 ,J0CD6.JJ, ' %dkk488%H 
 &00A{{l*?KK(22T[[$(( N !!! **003t7I7I7O7O3PPSTT..556CCEJ7  L D 
 2[//12
2C4{11344D;;;!8O8Kes   *I,)$r3   dataclassesr   r0   typingr   r   r   r   r(   r1   r#   r/   hasjrelhasjabsr'   r=   JUMP_OPNAMEShaslocalrd   hasfreere   r   r   r:   rB   rL   rQ   	dataclassrS   rn   rp   ru   r   r   r   )r&   s   0r   <module>r      s     
 
 " " IInIInIIo  v9-.w?34>23?34w>23w#?@A3;;,-1=>v

6">s||
ckk
	*KZN $   "D    + + +25c5j(9 5g ?s   H