
    X-Ph-                       U d Z ddlmZ ddlmZ ddlmZ ddlmZm	Z	m
Z
mZ ddlmZmZmZmZmZ ddlmZmZmZmZmZmZmZmZ ddlmZmZmZ dd	lm Z   G d
 d          Z! G d d          Z"d&dZ#dZ$de%d<   dZ&de%d<   dZ'de%d<    G d d          Z( G d d          Z) edg  e
g                     Z*de%d<   d'd#Z+d'd$Z,d%S )(z)Intermediate representation of functions.    )annotations)Sequence)Final)ARG_POSArgKindBlockFuncDef)BITMAP_BITSJsonDictbitmap_nameget_id_from_nameshort_id_from_name)AssignAssignMulti
BasicBlock	ControlOp	DeserMapsLoadAddressRegisterValue)RTypebitmap_rprimitivedeserialize_type)NameGeneratorc                  `    e Zd ZdZedfddZedd            ZddZddZ	e
dd            ZdS )
RuntimeArgzrDescription of a function argument in IR.

    Argument kind is one of ARG_* constants defined in mypy.nodes.
    Fnamestrtypr   kindr   pos_onlyboolreturnNonec                >    || _         || _        || _        || _        d S Nr   typer    r!   )selfr   r   r    r!   s        P/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/mypyc/ir/func_ir.py__init__zRuntimeArg.__init__   s$     			     c                4    | j                                         S r&   )r    is_optionalr)   s    r*   optionalzRuntimeArg.optional&   s    y$$&&&r,   c                Z    d                     | j        | j        | j        | j                  S )Nz:RuntimeArg(name={}, type={}, optional={!r}, pos_only={!r}))formatr   r(   r0   r!   r/   s    r*   __repr__zRuntimeArg.__repr__*   s+    KRRIty$-
 
 	
r,   r   c                    | j         | j                                        t          | j        j                  | j        dS )Nr'   )r   r(   	serializeintr    valuer!   r/   s    r*   r5   zRuntimeArg.serialize/   s;    II''))	((	
 
 	
r,   datactxr   c                    t          |d         t          |d         |          t          |d                   |d                   S )Nr   r(   r    r!   )r   r   r   clsr8   r9   s      r*   deserializezRuntimeArg.deserialize7   sC    LT&\3//DL!!	
 
 	
r,   N)
r   r   r   r   r    r   r!   r"   r#   r$   )r#   r"   r#   r   r#   r   )r8   r   r9   r   r#   r   )__name__
__module____qualname____doc__r   r+   propertyr0   r3   r5   classmethodr=    r,   r*   r   r      s          6=u! ! ! ! ! ' ' ' X'
 
 
 


 
 
 
 
 
 
 [
 
 
r,   r   c                  R    e Zd ZdZddZdd
ZddZddZddZe	dd            Z
dS )FuncSignaturezSignature of a function in IR.argsSequence[RuntimeArg]ret_typer   r#   r$   c                   t          |          | _        || _        t          | j                  | _        | j        rId t	          | j                  D             }| j        t          t          |                    z   | _        d S d S )Nc                V    g | ]&}t          t          |          t          d           'S )T)r!   )r   r   r   ).0is     r*   
<listcomp>z*FuncSignature.__init__.<locals>.<listcomp>M   s>        ;q>>+<tLLL  r,   )tuplerI   rK   num_bitmap_argsrangereversed)r)   rI   rK   extras       r*   r+   zFuncSignature.__init__F   s    $KK	   /ty99 	; t344  E 	E(5//$:$::DIII	; 	;r,   tuple[RuntimeArg, ...]c                H    | j         r| j        d| j                   S | j        S )z8Return arguments without any synthetic bitmap arguments.N)rR   rI   r/   s    r*   	real_argszFuncSignature.real_argsS   s.     	694 44455yr,   c                    | j         r(t          | j        d| j                   | j                  S t          | j        dd          | j                  S )N   )rR   rH   rI   rK   r/   s    r*   	bound_sigzFuncSignature.bound_sigY   sM     	? 10D/D+D!Et}UUU 122>>>r,   r   c                (    d| j         d| j        dS )NzFuncSignature(args=z, ret=)rI   rK   r/   s    r*   r3   zFuncSignature.__repr___   s    JTYJJJJJJr,   r   c                    | j         r| j        d | j                   }n| j        }d |D             | j                                        dS )Nc                6    g | ]}|                                 S rF   )r5   )rN   ts     r*   rP   z+FuncSignature.serialize.<locals>.<listcomp>g   s     5551555r,   r^   )rR   rI   rK   r5   )r)   rI   s     r*   r5   zFuncSignature.serializeb   sX     	94 4445DD9D555554=CZCZC\C\]]]r,   r8   r9   r   c                p    t          fd|d         D             t          |d                             S )Nc                F    g | ]}t                               |          S rF   )r   r=   )rN   argr9   s     r*   rP   z-FuncSignature.deserialize.<locals>.<listcomp>l   s)    FFF#Z##C--FFFr,   rI   rK   )rH   r   r;   s     `r*   r=   zFuncSignature.deserializei   sB    FFFFfFFFT*-s33
 
 	
r,   N)rI   rJ   rK   r   r#   r$   )r#   rV   r#   rH   r>   r?   )r8   r   r9   r   r#   rH   )r@   rA   rB   rC   r+   rX   r[   r3   r5   rE   r=   rF   r,   r*   rH   rH   A   s        ((; ; ; ;   ? ? ? ?K K K K^ ^ ^ ^ 
 
 
 [
 
 
r,   rH   rI   rV   r#   r6   c                    d}| D ],}|j         j        r|j                                        r|dz  }-|t          dz
  z   t          z  S )Nr   rZ   )r(   error_overlapr    r.   r
   )rI   nrd   s      r*   rR   rR   q   sV    	A  8! 	ch&:&:&<&< 	FAq!k11r,   r   FUNC_NORMALrZ   FUNC_STATICMETHOD   FUNC_CLASSMETHODc                      e Zd ZdZedddfd&dZed'd            Zej        d(d            Zed)d            Z	e
d*d            Zed)d            Zed)d            Zd+dZd,dZe
d-d             Zed.d$            Zd%S )/FuncDeclzDeclaration of a function in IR (without body or implementation).

    A function can be a regular module-level function, a method, a
    static method, a class method, or a property getter/setter.
    Fr   r   
class_name
str | Nonemodule_namesigrH   r    r6   is_prop_setterr"   is_prop_getterimplicitr#   r$   c	                    || _         || _        || _        || _        || _        || _        || _        |d | _        n,|t          k    r|| _        n|                                | _        || _	        d | _
        d S r&   )r   ro   rq   rr   r    rs   rt   r[   rj   ru   _line)	r)   r   ro   rq   rr   r    rs   rt   ru   s	            r*   r+   zFuncDecl.__init__   s     	$&	,,37DNN(((!$!$ ! "&


r,   c                "    | j         J | j         S r&   rw   r/   s    r*   linezFuncDecl.line   s    z%%%zr,   rz   c                    || _         d S r&   ry   )r)   rz   s     r*   rz   zFuncDecl.line   s    


r,   c                T    | j         J t          | j        | j        | j                   S r&   )rz   r   r   fullnamer/   s    r*   idzFuncDecl.id   s(    y$$$	4=$)DDDr,   c                    | r| dz   |z   n|S N.rF   ro   r   s     r*   compute_shortnamezFuncDecl.compute_shortname   s    *4>zC$&&$>r,   c                L    t                               | j        | j                  S r&   )rn   r   ro   r   r/   s    r*   	shortnamezFuncDecl.shortname   s    ))$/49EEEr,   c                &    | j         dz   | j        z   S r   )rq   r   r/   s    r*   r}   zFuncDecl.fullname   s    #%66r,   namesr   c                x    t          | j        | j        | j                  }|                    | j        |          S r&   )r   r   r   rw   private_namerq   )r)   r   partial_names      r*   cnamezFuncDecl.cname   s2    )$)T^TZPP!!$"2LAAAr,   r   c           	         | j         | j        | j        | j                                        | j        | j        | j        | j        dS )N)r   ro   rq   rr   r    rs   rt   ru   )	r   ro   rq   rr   r5   r    rs   rt   ru   r/   s    r*   r5   zFuncDecl.serialize   sH    I/+8%%''I"1"1	
 	
 		
r,   func_irc                    | d         }t                               |d         |d                   }|d         dz   |z   }t          |d         || d                   S )zCGet the id from the serialized FuncIR associated with this FuncDecldeclro   r   rq   r   rz   )rn   r   r   )r   r   r   r}   s       r*   get_id_from_jsonzFuncDecl.get_id_from_json   sY     v..tL/A4<PP	&,y8VhHHHr,   r8   r9   r   c                    t          |d         |d         |d         t                              |d         |          |d         |d         |d         |d                   S )	Nr   ro   rq   rr   r    rs   rt   ru   )rn   rH   r=   r;   s      r*   r=   zFuncDecl.deserialize   sc    L%%d5k377L!"!"	
 	
 		
r,   N)r   r   ro   rp   rq   r   rr   rH   r    r6   rs   r"   rt   r"   ru   r"   r#   r$   r#   r6   )rz   r6   r#   r$   r>   )ro   rp   r   r   r#   r   r   r   r#   r   r?   )r   r   r#   r   )r8   r   r9   r   r#   rn   )r@   rA   rB   rC   ri   r+   rD   rz   setterr~   staticmethodr   r   r}   r   r5   r   rE   r=   rF   r,   r*   rn   rn   ~   s          $$ &  &  &  &  &D    X 
[   [ E E E XE ? ? ? \? F F F XF 7 7 7 X7B B B B

 

 

 

 I I I \I 

 

 

 [

 

 

r,   rn   c                     e Zd ZdZ	 	 d'd(dZed)d            Zed*d            Zed+d            Zed,d            Z	ed-d            Z
ed.d            Zed.d            Zed.d            Zd/dZd.d Zd0d"Zed1d&            ZdS )2FuncIRzIntermediate representation of a function with contextual information.

    Unlike FuncDecl, this includes the IR of the body (basic blocks).
    Nr   rn   arg_regslist[Register]blockslist[BasicBlock]rz   r6   traceback_namerp   r#   r$   c                V    || _         || _        || _        || j         _        || _        d S r&   )r   r   r   rz   r   )r)   r   r   r   rz   r   s         r*   r+   zFuncIR.__init__   s2     	 	 -r,   c                    | j         j        S r&   )r   rz   r/   s    r*   rz   zFuncIR.line      y~r,   rJ   c                $    | j         j        j        S r&   )r   rr   rI   r/   s    r*   rI   zFuncIR.args  s    y}!!r,   r   c                $    | j         j        j        S r&   )r   rr   rK   r/   s    r*   rK   zFuncIR.ret_type
  s    y}%%r,   c                    | j         j        S r&   )r   ro   r/   s    r*   ro   zFuncIR.class_name  s    y##r,   rH   c                    | j         j        S r&   )r   rr   r/   s    r*   rr   z
FuncIR.sig  s    y}r,   r   c                    | j         j        S r&   )r   r   r/   s    r*   r   zFuncIR.name  r   r,   c                    | j         j        S r&   )r   r}   r/   s    r*   r}   zFuncIR.fullname  s    y!!r,   c                    | j         j        S r&   )r   r~   r/   s    r*   r~   z	FuncIR.id  s    y|r,   r   r   c                6    | j                             |          S r&   )r   r   )r)   r   s     r*   r   zFuncIR.cname"  s    yu%%%r,   c                L    | j         rd| j          d| j         dS d| j         dS )Nz<FuncIR r   >r   r/   s    r*   r3   zFuncIR.__repr__%  s<    ? 	+<do<<	<<<<*di****r,   r   c                P    | j                                         | j        | j        dS )N)r   rz   r   )r   r5   rz   r   r/   s    r*   r5   zFuncIR.serialize+  s/     I''))I"1
 
 	
r,   r8   r9   r   c                ~    t          t                              |d         |          g g |d         |d                   S )Nr   rz   r   )r   rn   r=   r;   s      r*   r=   zFuncIR.deserialize3  s=      fs33RT&\4P`Ka
 
 	
r,   )r   N)r   rn   r   r   r   r   rz   r6   r   rp   r#   r$   r   )r#   rJ   )r#   r   )r#   rp   re   r>   r   r?   )r8   r   r9   r   r#   r   )r@   rA   rB   rC   r+   rD   rz   rI   rK   ro   rr   r   r}   r~   r   r3   r5   rE   r=   rF   r,   r*   r   r      s         %)- - - - -(    X " " " X" & & & X& $ $ $ X$    X    X " " " X"    X& & & &+ + + +
 
 
 
 
 
 
 [
 
 
r,   r   z<INVALID_FUNC_DEF>INVALID_FUNC_DEFr   r   r   list[Value]c                T   t          |           }t          |           }|D ]}|j        D ]}t          |t                    st          |t
          t          f          r>|j        |vr4|                    |j                   |	                    |j                   q|j
        ryt          |t                    rWt          |j        t                    r=|j        |vr4|                    |j                   |	                    |j                   |                    |           |S )zvReturn the set of all values that may be initialized in the blocks.

    This omits registers that are only read.
    )listsetops
isinstancer   r   r   destappendaddis_voidr   srcr   )rI   r   valuesseen_registersblockops         r*   
all_valuesr   =  s(   
 t**FYYN & &) 	& 	&Bb),, &b6;"788 &wn44bg...&**27333Z & #2{333&rvx883 F.88bf---&**26222MM"%%%#	&& Mr,   c                ,   t          |           }t          |           }|D ]}|j        D ]}|                                D ]E}t	          |t
                    r.||vr*|                    |           |                    |           Ft	          |t                    swt	          |t          t          f          r>|j        |vr4|                    |j                   |                    |j                   |j        r|                    |           |S )z:Return set of all values that are initialized or accessed.)r   r   r   sourcesr   r   r   r   r   r   r   r   r   )rI   r   r   r   r   r   sources          r*   all_values_fullr   \  s!   t**FYYN & &) 	& 	&B**,, / / fh// /F.4P4PMM&)))"&&v...b),, &b6;"788 &wn44bg...&**27333Z &MM"%%%	&" Mr,   N)rI   rV   r#   r6   )rI   r   r   r   r#   r   )-rC   
__future__r   collections.abcr   typingr   
mypy.nodesr   r   r   r	   mypyc.commonr
   r   r   r   r   mypyc.ir.opsr   r   r   r   r   r   r   r   mypyc.ir.rtypesr   r   r   mypyc.namegenr   r   rH   rR   ri   __annotations__rj   rl   rn   r   r   r   r   rF   r,   r*   <module>r      s   / / / " " " " " " $ $ $ $ $ $       7 7 7 7 7 7 7 7 7 7 7 7 a a a a a a a a a a a a a a	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 G F F F F F F F F F ' ' ' ' ' '&
 &
 &
 &
 &
 &
 &
 &
R-
 -
 -
 -
 -
 -
 -
 -
`2 2 2 2               g
 g
 g
 g
 g
 g
 g
 g
TO
 O
 O
 O
 O
 O
 O
 O
d "'"6EE"IIFF  F F F F   >     r,   