Ë
    pPêjþ  ã                  óæ   — 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mZmZmZmZmZmZmZmZmZmZmZ ddlmZ ddlmZ ddlmZ dd	lmZ dd
lm Z  dd„Z!dd„Z"h d£Z#de$d<    G d„ de «      Z%y)aE  This optional pass adds logging of various executed operations.

Some subset of the executed operations are logged to the mypyc_trace.txt file.

This is useful for performance analysis. For example, it's possible
to identify how frequently various primitive functions are called,
and in which code locations they are called.
é    )Úannotations)ÚFinal)ÚFuncIR)ÚBoxÚCallÚCallCÚCastÚCStringÚDecRefÚGetAttrÚIncRefÚLoadLiteralÚ
LoadStaticÚOpÚPrimitiveOpÚSetAttrÚUnboxÚValue)Únone_rprimitive)ÚLowLevelIRBuilder)ÚCompilerOptions)Úlog_trace_event)ÚIRTransformc                ó´   — t        d |«      }t        || j                  j                  «      }|j	                  | j
                  «       |j
                  | _        y ©N)r   ÚLogTraceEventTransformÚdeclÚfullnameÚtransform_blocksÚblocks)ÚfnÚoptionsÚbuilderÚ	transforms       ú^/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/mypyc/transform/log_trace.pyÚinsert_event_trace_loggingr&   '   sA   € Ü  gÓ.€GÜ& w°·±×0@Ñ0@ÓA€IØ×Ñ˜rŸy™yÔ)Ø—‘€B…Ió    c                ó  — | j                   }|dk(  r|| j                  d   }t        |t        «      r]|j                  dk(  rN|j
                  dk(  r?t        | j                  d   t        «      r"t        | j                  d   j                  «      S y )NÚCPyDict_GetItemr   ÚstaticÚglobalsé   )	Úfunction_nameÚargsÚ
isinstancer   Ú	namespaceÚ
identifierr   ÚstrÚvalue)ÚopÚnameÚargs      r%   Úget_load_global_namer7   .   ss   € Ø×Ñ€DØÐ Ò Ø�g‰g�a‰jˆä�sœJÔ'Ø—‘ Ò)Ø—‘ )Ò+Ü˜2Ÿ7™7 1™:¤{Ô3ä�r—w‘w˜q‘z×'Ñ'Ó(Ð(Ør'   >   r)   ÚCPyList_GetItemÚCPyList_PopLastÚCPyDict_GetWithNoneÚCPyList_GetItemShortÚlist_get_item_unsafer   Úprimitives_that_inc_refc                  óˆ   ‡ — e Zd Zdˆ fd„Zdd„Zdd„Zdd„Zdd„Zdd„Zdd„Z	dd„Z
dd	„Zdd
„Zdd„Zdd„Zdd„Zdd„Zˆ xZS )r   c                óP   •— t         ‰| �  |«       |j                  d«      | _        y )Núutf-8)ÚsuperÚ__init__Úencoder   )Úselfr#   r   Ú	__class__s      €r%   rB   zLogTraceEventTransform.__init__I   s    ø€ Ü‰Ñ˜Ô!Ø Ÿ™¨Ó0ˆ�r'   c                óP   — | j                  |d|j                  j                  «      S )NÚcall)Úlogr!   r   ©rD   r4   s     r%   Ú
visit_callz!LogTraceEventTransform.visit_callM   s   € à�x‰x˜˜F B§E¡E§N¡NÓ3Ð3r'   c                ó®   — | j                  |d|j                  j                  «      }|j                  j                  t        v r| j	                  |«       |S )NÚprimitive_op)rH   Údescr5   r=   Úlog_inc_ref©rD   r4   r3   s      r%   Úvisit_primitive_opz)LogTraceEventTransform.visit_primitive_opQ   s@   € Ø—‘˜˜^¨R¯W©W¯\©\Ó:ˆØ�7‰7�<‰<Ô2Ñ2Ø×Ñ˜UÔ#Øˆr'   c                ó¨  — t        |«      x}r| j                  |d|«      S |j                  }|dk(  rJt        |j                  d   t
        «      r-t        |j                  d   «      x}r½| j                  |d|«      S |dk(  rPt        |j                  d   t        «      r3| j                  |dt        |j                  d   j                  «      «      S |dk(  rPt        |j                  d   t        «      r3| j                  |d	t        |j                  d   j                  «      «      S | j                  |d
|«      }|t        v r| j                  |«       |S )NÚglobals_dict_get_itemÚPyObject_Vectorcallr   Úpython_call_globalÚCPyObject_GetAttrr,   Úpython_get_attrÚPyObject_VectorcallMethodÚpython_call_methodÚcall_c)r7   rH   r-   r/   r.   r   r   r2   r3   r=   rN   )rD   r4   Úglobal_nameÚ	func_namer3   s        r%   Úvisit_call_cz#LogTraceEventTransform.visit_call_cW   s(  € Ü.¨rÓ2Ð2ˆ;Ð2Ø—8‘8˜BÐ 7¸ÓEÐEà×$Ñ$ˆ	ØÐ-Ò-´*¸R¿W¹WÀQ¹ZÌÔ2OÜ2°2·7±7¸1±:Ó>Ð>ˆ{Ð>Ø—x‘x Ð$8¸+ÓFÐFØÐ-Ò-´*¸R¿W¹WÀQ¹ZÌÔ2UØ—8‘8˜BÐ 1´3°r·w±w¸q±z×7GÑ7GÓ3HÓIÐIØÐ5Ò5¼*ÀRÇWÁWÈQÁZÔQ\Ô:]Ø—8‘8˜BÐ 4´c¸"¿'¹'À!¹*×:JÑ:JÓ6KÓLÐLà—‘˜˜X yÓ1ˆØÔ/Ñ/Ø×Ñ˜UÔ#Øˆr'   c                óØ   — | j                  |d|j                  j                  › d|j                  › �«      }|j                  s'|j
                  j                  r| j                  |«       |S )NÚget_attrú.)rH   Ú
class_typer5   ÚattrÚis_borrowedÚtypeÚis_refcountedrN   rO   s      r%   Úvisit_get_attrz%LogTraceEventTransform.visit_get_attri   sT   € Ø—‘˜˜Z¨B¯M©M×,>Ñ,>Ð+?¸qÀÇÁÀ	Ð)JÓKˆØ�~Š~ "§'¡'×"7Ò"7Ø×Ñ˜RÔ Øˆr'   c                óŽ   — |j                   sdnd}| j                  |||j                  j                  › d|j                  › �«      S )NÚset_attrÚset_attr_initr_   )Úis_initrH   r`   r5   ra   )rD   r4   r5   s      r%   Úvisit_set_attrz%LogTraceEventTransform.visit_set_attro   s<   € Ø!#§¢‰z°ˆØ�x‰x˜˜D R§]¡]×%7Ñ%7Ð$8¸¸"¿'¹'¸Ð"CÓDÐDr'   c                ó¼   — |j                   j                  t        u r| j                  |«      S | j	                  |dt        |j                   j                  «      «      S )NÚbox)Úsrcrc   r   ÚaddrH   r2   rI   s     r%   Ú	visit_boxz LogTraceEventTransform.visit_boxs   s@   € Ø�6‰6�;‰;œ/Ñ)à—8‘8˜B“<Ðà—8‘8˜B ¤s¨2¯6©6¯;©;Ó'7Ó8Ð8r'   c                óN   — | j                  |dt        |j                  «      «      S )NÚunbox)rH   r2   rc   rI   s     r%   Úvisit_unboxz"LogTraceEventTransform.visit_unboxz   s   € Ø�x‰x˜˜G¤S¨¯©£\Ó2Ð2r'   c                óŒ   — | j                  |dt        |j                  «      «      }|j                  s| j	                  |«       |S )NÚcast)rH   r2   rc   rb   rN   rO   s      r%   Ú
visit_castz!LogTraceEventTransform.visit_cast}   s6   € Ø—‘˜˜V¤S¨¯©£\Ó2ˆØ�~Š~Ø×Ñ˜UÔ#Øˆr'   c                ób   — | j                  |dt        |j                  j                  «      «      S ©NÚinc_ref©rH   r2   rm   rc   rI   s     r%   Úvisit_inc_refz$LogTraceEventTransform.visit_inc_refƒ   ó"   € Ø�x‰x˜˜I¤s¨2¯6©6¯;©;Ó'7Ó8Ð8r'   c                ób   — | j                  |dt        |j                  j                  «      «      S )NÚdec_refry   rI   s     r%   Úvisit_dec_refz$LogTraceEventTransform.visit_dec_ref†   r{   r'   c                ód   — | j                  dt        |j                  «      |j                  «       y rw   )Ú	log_eventr2   rc   Úline)rD   r3   s     r%   rN   z"LogTraceEventTransform.log_inc_ref‰   s   € Ø�‰�y¤# e§j¡j£/°5·:±:Õ>r'   c                ó^   — | j                  |||j                  «       | j                  |«      S r   )r€   r�   rn   )rD   r4   r5   Údetailss       r%   rH   zLogTraceEventTransform.logŒ   s$   € Ø�‰�t˜W b§g¡gÔ.Ø�x‰x˜‹|Ðr'   c                ó*  — |dk\  rt        |«      }nd}| j                  j                  t        t	        | j
                  «      t	        |j                  d«      «      t	        |j                  d«      «      t	        |j                  d«      «      g|«       y )Nr   Ú Úasciir@   )r2   r#   rL   r   r
   r   rC   )rD   r5   rƒ   r�   Úline_strs        r%   r€   z LogTraceEventTransform.log_event�   su   € Ø�1Š9Ü˜4“y‰HàˆHØ�‰×!Ñ!Üä˜Ÿ™Ó&Ü˜Ÿ™¨Ó0Ó1Ü˜Ÿ™ GÓ,Ó-Ü˜Ÿ™ wÓ/Ó0ð	ð õ		
r'   )r#   r   r   r2   ÚreturnÚNone)r4   r   rˆ   r   )r4   r   rˆ   r   )r4   r   rˆ   r   )r4   r   rˆ   r   )r4   r   rˆ   r   )r4   r   rˆ   r   )r4   r   rˆ   r   )r4   r	   rˆ   zValue | None)r4   r   rˆ   r   )r4   r   rˆ   r   )r3   r   rˆ   r‰   )r4   r   r5   r2   rƒ   r2   rˆ   r   )r5   r2   rƒ   r2   r�   Úintrˆ   r‰   )Ú__name__Ú
__module__Ú__qualname__rB   rJ   rP   r\   re   rj   ro   rr   ru   rz   r~   rN   rH   r€   Ú__classcell__)rE   s   @r%   r   r   H   sJ   ø„ õ1ó4óóó$óEó9ó3óó9ó9ó?ó÷
r'   r   N)r!   r   r"   r   rˆ   r‰   )r4   r   rˆ   z
str | None)&Ú__doc__Ú
__future__r   Útypingr   Úmypyc.ir.func_irr   Úmypyc.ir.opsr   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   Úmypyc.ir.rtypesr   Úmypyc.irbuild.ll_builderr   Úmypyc.optionsr   Úmypyc.primitives.misc_opsr   Úmypyc.transform.ir_transformr   r&   r7   r=   Ú__annotations__r   © r'   r%   ú<module>r›      sf   ðòõ #å å #÷÷ ÷ ÷ ñ õ" ,Ý 6Ý )Ý 5Ý 4óóò "Ð ˜ó ôV
˜[õ V
r'   