403Webshell
Server IP : 217.160.0.135  /  Your IP : 216.73.217.25
Web Server : Apache
System : Linux www 6.18.52-i1-ampere #1203 SMP Mon Sep 14 18:29:59 CEST 2026 aarch64
User : sws1074145052 ( 1074145052)
PHP Version : 8.3.32
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : OFF  |  Sudo : OFF  |  Pkexec : OFF
Directory :  /lib/python3/dist-packages/pythran/transformations/__pycache__/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /lib/python3/dist-packages/pythran/transformations/__pycache__/normalize_static_if.cpython-311.pyc
�

cR�a�@���dZddlmZmZmZmZmZmZmZm	Z	m
Z
mZddlm
Z
ddlmZddlZddlmZed��\ZZZZd�ZGd	�d
ej��ZGd�dej��ZGd
�de
��ZGd�de
��ZdS)z3 NormalizeStaticIf adds support for static guards. �)
�ImportedIds�	HasReturn�
IsAssigned�CFG�HasBreak�HasContinue�DefUseChains�	Ancestors�StaticExpressions�HasStaticExpression)�Transformation)�PythranSyntaxErrorN)�deepcopy�c	�<�tjd�|D��gdggdg��}t|tj��r:|r
Jd���tj||tj|��ggdd��}�n#tj|||gdd��}|�tjtjd�|D��tj��������|r-t|d|p|��}	|	�
|��|s|r�|sVtjtjtd��|dj
gtj����|d_
t|d��}
|
�
|��|S)Nc�^�g|]*}tj|tj��dd����+S�N)�ast�Name�Param��.0�fps  �M/usr/lib/python3/dist-packages/pythran/transformations/normalize_static_if.py�
<listcomp>zoutline.<locals>.<listcomp>s.��K�K�K�2���"�c�i�k�k�4��	.�	.�K�K�K�zno out parameters with exprc�^�g|]*}tj|tj��dd����+Sr�rr�Loadrs  rrzoutline.<locals>.<listcomp>*s>��/�/�/���X�b�#�(�*�*�d�D�9�9�/�/�/r���)r�	arguments�
isinstance�expr�FunctionDef�Return�append�Tupler�PatchReturn�visit�Constant�	LOOP_NONE�value�PatchBreakContinue)�name�formal_parameters�out_parameters�stmts�
has_return�	has_break�has_cont�args�fdef�pr�pbcs           r�outliner9s����=�K�K�9J�K�K�K�
�D�"�b�$��$�$�D��%���"�"�$�!�@�@�#@�@�@�@���t�T�C�J�u�,=�,=�+>��D�$�O�O�����t�T�5�"�d�D�A�A��	����J��	�/�/�-�/�/�/��H�J�J���
�
�	
�	
�	
��	��U�2�Y�	�(=�X�>�>�B��H�H�T�N�N�N��	��	��
8�"%�)�S�\�)�T�-J�-J�-2�2�Y�_�->�,/�H�J�J�#8�#8��b�	��%�U�2�Y�/�/�C��I�I�d�O�O�O��Krc��eZdZd�Zd�ZdS)r(c�"�||_||_dSr)�guard�has_break_or_cont)�selfr<r=s   r�__init__zPatchReturn.__init__As����
�!2����rc��||jurd}nd}|j}tjtjtjtjtjdtj��dd��dtj����|tj����|r|gntjdd��gg����S)N�StaticIfNoReturn�StaticIfReturn�builtins�pythran)	r<r,rr%�Call�	Attributerrr*)r>�node�holderr,s    r�visit_ReturnzPatchReturn.visit_ReturnEs����4�:���'�F�F�%�F��
���z��H��
��M����S�X�Z�Z��t�D�D�!���
�
�$�$���H�J�J�
 � �!�@����s�|�D�$�'?�'?�&@��	
�	
�
�
�
	rN)�__name__�
__module__�__qualname__r?rI�rrr(r(?s2������3�3�3�����rr(c�2�eZdZd�Zd�Zd�Zd�Zd�Zd�ZdS)r-c��||_dSr)r<)r>r<s  rr?zPatchBreakContinue.__init__\s
����
�
�
rc��dSrrM�r>�_s  r�	visit_ForzPatchBreakContinue.visit_For_����rc��dSrrMrQs  r�visit_WhilezPatchBreakContinue.visit_WhilebrTrc���t|j��}|j}t|tj��r%|tkr
d|j_n$d|j_n||jj	d_|S)N�
StaticIfBreak�StaticIfContr)
rr<r,r"rrE�
LOOP_BREAK�func�attr�elts)r>rG�flag�new_node�ret_vals     r�
patch_Controlz PatchBreakContinue.patch_Controlesh���D�J�'�'���.���g�s�x�(�(�	0��z�!�!�$3���!�!�$2���!�!�+/�H�N���"�(��rc�8�|�|t��Sr)rarZ�r>rGs  r�visit_BreakzPatchBreakContinue.visit_Breakqs���!�!�$�
�3�3�3rc�8�|�|t��Sr)ra�	LOOP_CONTrcs  r�visit_Continuez!PatchBreakContinue.visit_Continuets���!�!�$�	�2�2�2rN)	rJrKrLr?rSrVrardrgrMrrr-r-Zsn���������
�
�
�
�
�
�
�
�
�4�4�4�3�3�3�3�3rr-c�z��eZdZ�fd�Zd�Zd�Zed���Zed���Zd�Z	d�Z
d�Zd	�Zd
�Z
d�Z�xZS)�NormalizeStaticIfc�z��tt|���ttt
��dSr)�superrir?rr
r	�r>�	__class__s �rr?zNormalizeStaticIf.__init__zs8���
���&�&�/�/�0A�9�0<�	>�	>�	>�	>�	>rc��g|_g|_g|_|�|��|j�|j��|Sr)�
new_functions�funcs�cfgs�
generic_visit�body�extendrcs  r�visit_ModulezNormalizeStaticIf.visit_Module~sJ�������
���	����4� � � ��	����+�,�,�,��rc�P�|�t|�|����}t��}|D]f}|jj|}|���D]=}||j|jvr'|�	|�
�����>�g|S)z>gather sets of identifiers defined in stmts and used out of it)�gatherr�	make_fake�set�def_use_chains�chains�users�	ancestorsrG�addr.)r>�
scope_stmtr1�assigned_nodes�escaping�
assigned_node�head�users        r�escaping_idszNormalizeStaticIf.escaping_ids�s������Z�����1F�1F�G�G���5�5��+�	.�	.�M��&�-�m�<�D��
�
���
.�
.���T�^�D�I�%>�>�>��L�L������-�-�-��
.��rc�T�tjtjdd��|g��S�Nr)r�Ifr*)r1s rrxzNormalizeStaticIf.make_fake�s"���v�c�l�1�d�+�+�U�B�7�7�7rc��|tj|jtj��dd��tj|jtj��dd��g}tjtjtjtjdtj��dd��dtj����dtj����|g��}tj|d�|D��g��}|S)NrCrD�	static_ifc�^�g|]*}tj|tj��dd����+Srr�r�iis  rrz5NormalizeStaticIf.make_dispatcher.<locals>.<listcomp>�s.��I�I�I�b�S�X�b�#�(�*�*�d�D�
1�
1�I�I�Ir)rrr.rrErF)�static_expr�	func_true�
func_false�imported_ids�dispatcher_args�
dispatcher�actual_calls       r�make_dispatcherz!NormalizeStaticIf.make_dispatcher�s���'��8�I�N�C�H�J�J��d�K�K��8�J�O�S�X�Z�Z��t�L�L�N���X��M��
��H�Z�����T�4�@�@���H�J�J� � ����
�
�

�
�
�R�!�!�
��h��I�I�L�I�I�I�����
�rc�V�d�t|j��dz��S)N�$isstatic{}r��format�lenro�r>s r�	true_namezNormalizeStaticIf.true_name��&���#�#�C��(:�$;�$;�a�$?�@�@�@rc�V�d�t|j��dz��S)Nr��r�r�s r�
false_namezNormalizeStaticIf.false_name�r�rc�.�|j�|�t|����|j�|��|�|��}|j���|j���|Sr)rqr&rwrrprr�pop)r>rG�onodes   r�visit_FunctionDefz#NormalizeStaticIf.visit_FunctionDef�su���	������S�$�/�/�0�0�0��
���$�����"�"�4�(�(���
�������	�
�
�����rc	���|�|��|j|jvr|St|�t
|����}t
|���|g|jddd��}t
|�	��|g|j
ddd��}|j�||f��|�
|j|||��}|S)NF)rr�test�static_expressions�sortedrwrr9r�rsr��orelserortr�)r>rGr�r�r�r�s      r�visit_IfExpzNormalizeStaticIf.visit_IfExp�s������4� � � ��9�D�3�3�3��K��d�k�k�+�t�<�<�=�=���D�N�N�,�,�l�B� �I�u�e�U�<�<�	��T�_�_�.�.��b�!�[�%���?�?�
���!�!�9�j�"9�:�:�:��*�*�4�9�i�+5�|�E�E���rc	�d�|retjtj|tj����gtj|tj��dd��d��gx}}ngx}}|r�tjtj|tj��dd��tj��gtjtd��g��}tj
|t|��tj��gz|��g}|r�tjtj|tj��dd��tj��gtjtd��g��}tj
|t|��tj��gz|��g}|S)z�
        Create the statements in charge of gathering control flow information
        for the static_if result, and executes the expected control flow
        instruction
        N)r�Assignr'�Storerr�Compare�Eqr*rfr�r�ContinuerZ�Break)	r>�cont_n�status_n�expected_returnr4r3�assign�cont_ass�cmprs	         r�make_control_flow_handlersz,NormalizeStaticIf.make_control_flow_handlers�s|���	#�!$����?�C�I�K�K�8�8�9��������T�4�8�8�$�"@�"@�!A�
A�F�X�X�!#�"�F�X��	*��;�s�x��#�(�*�*�d�D�I�I� #����z�C�L��D�,I�,I�+J�L�L�D���t�'��/�/�3�<�>�>�2B�B�'�)�)�*�H��	*��;�s�x��#�(�*�*�d�D�I�I� #����z�C�L��T�,J�,J�+K�M�M�D���t�'��/�/�3�9�;�;�-�?�'�)�)�*�H��rc�
���|j|jvr|�|��S|�t|��}|�||j���|�||j��������}|�	�fd��D����|�	�fd��D����t|��}t|��}|�|j��}|�t|��}|�t|��}|�t|��}|�|j��}	|�t|	��}
|�t|	��}|�t|	��}|p|
}
|p|}|p|}|�|��t|���|||j|
||��}t|���|||j|
||��}|j�||f��|�|j|||��}d�|D��}d|_	t+|j��}d�|��}d�|��}d�|��}|
�r+|jd}t1d	�||D����}||o|
z}t3j|t3j��dd��t3j|t3j��dd��t3j|t3j��dd��g}|rut3jt3j|t3j����g|d��t3jt3j|t3j��dd����gS|� |||||��}t3j!t3j|t3j��dd��t3j"��gt3j#tHd��g��}t3jt3j|t3j����g|d��t3j%|t3jt3j|t3j��dd����g|��gS|s|r�|� |||||��}t3j|t3j��dd��t3j|t3j��dd��g}t3jt3j|t3j����g|d��g|zS|r;t3jt3j|t3j����g|d��St3j&|��S)
Nc3�$�K�|]
}|�v�|V��dSrrM)r�i�assigned_ids_rights  �r�	<genexpr>z-NormalizeStaticIf.visit_If.<locals>.<genexpr>�s:�����<�<�!� �(:�:�:��:�:�:�:�<�<rc3�$�K�|]
}|�v�|V��dSrrM)rr��assigned_ids_lefts  �rr�z-NormalizeStaticIf.visit_If.<locals>.<genexpr>�s:�����;�;�!� �(9�9�9��9�9�9�9�;�;rc�^�g|]*}tj|tj��dd����+Sr)rrr�r�s  rrz.NormalizeStaticIf.visit_If.<locals>.<listcomp>s>��3�3�3�!��8�B��	���T�4�@�@�3�3�3rTz	$status{}z	$return{}z$cont{}r c3�bK�|]*}t|tjtjf��V��+dSr)r"rr%�Yield)r�xs  rr�z-NormalizeStaticIf.visit_If.<locals>.<genexpr>#sI���� 4� 4�$%�!+�1�s�z�3�9�.E� F� F� 4� 4� 4� 4� 4� 4r)'r�r�rrrwrr�rsr��union�updater�rxrrrr9r�r�rortr�r�r�rq�allrrr�r�r'r%rr�r�r�r*�	EARLY_RETr��Expr)r>rGr��assigned_ids_both�assigned_ids�fbody�true_has_return�true_has_break�
true_has_cont�felse�false_has_return�false_has_break�false_has_contr2r3r4r�r�r�r��nr��return_nr��cfg�
always_return�fast_returnr�r�r�r�s                             @@r�visit_IfzNormalizeStaticIf.visit_If�s������9�D�3�3�3��%�%�d�+�+�+��{�{�;��5�5�� �-�-�d�D�I�>�>��!�.�.�t�T�[�A�A��-�3�3�4F�G�G�����<�<�<�<�'8�<�<�<�	<�	<�	<����;�;�;�;�'9�;�;�;�	;�	;�	;��l�+�+���/�0�0�����t�y�)�)���+�+�i��7�7�����X�u�5�5�����K��7�7�
����t�{�+�+���;�;�y�%�8�8���+�+�h��6�6�����[�%�8�8��$�8�(8�
�"�5�o�	� �2�N�����4� � � ��D�N�N�,�,�l�L� �I�z�9�h�H�H�	��T�_�_�.�.��l�!�[�*�i��K�K�
���!�!�9�j�"9�:�:�:��*�*�4�9�+4�j�,�P�P��3�3�%1�3�3�3�����
��"�#�#���%�%�a�(�(���%�%�a�(�(���!�!�!�$�$���(	)��)�B�-�C�� 4� 4�),�T�� 4� 4� 4�4�4�M��_�A�1A�A�M��8�H�c�i�k�k�4��F�F��8�H�c�i�k�k�4��F�F��8�F�C�I�K�K��t�D�D�F�K��
*��
�C�I�k�3�9�;�;�$G�$G�#H�#.��6�6��
�3�8�H�c�h�j�j�$��#M�#M�N�N�P�P� �:�:�6�8�;J�;C�Y�P�P���{�3�8�H�c�h�j�j�$��#M�#M�$'�F�H�H�:���Y��0M�0M�/N�P�P���
�C�I�k�3�9�;�;�$G�$G�#H�#.��6�6���t� #�
�3�8�H�c�h�j�j�48�$�,@�,@�!A�!A� B�'�)�)�*�*��
	)�(�
	)��6�6�v�x�7F�7?��L�L�H��8�H�c�i�k�k�4��F�F��8�F�C�I�K�K��t�D�D�F�K��J��	�+�s�y�{�{� C� C�D�*�D�2�2�3�5=�>�
>�
�	)��:�s�y��#�)�+�+�F�F�G�)�4�1�1�
1��8�K�(�(�(r)rJrKrLr?rur��staticmethodrxr�r�r�r�r�r�r��
__classcell__�rms@rririxs��������>�>�>�>�>����	�	�	��8�8��\�8�����\��.A�A�A�A�A�A�������&���8_)�_)�_)�_)�_)�_)�_)rric�,��eZdZ�fd�Zd�ZexZZ�xZS)�SplitStaticExpressionc�b��tt|���t��dSr)rkr�r?rrls �rr?zSplitStaticExpression.__init__Ns)���
�#�T�*�*�3�3�4E�F�F�F�F�Frc���t|��}|tjurd�}d�}nd�}d�}��t|j��}|s��|��S|j�jvr��|��St|jtj	��s��|��Sgg}}|jj
|jjg}�fd�}	|rK|	|d��s:|�|�
����|r|	|d���:|rK|	|d��r:|�|�
����|r|	|d���:tt|����}
|ddd��}|r"t!|��dksJ�|d	|_|ddd��}|ro|d	|_t!|��dkrO|
rCt!|
��dksJ�tj	|d|jj|
d	��g}
n
|dd�}
|ddd��}
|
r"t!|
��dksJ�|
d	|
_t|jjtj��r�|
r>t'|j��|
_t'|j��|
_||
��}
nt'|j��}
|r,|
|_t'|j��|_||��}n|
}|r||_|j|_|}n�||��}n�t|jjtj��r�|
r>t'|j��|
_t'|j��|
_||
��}
nt'|j��}
|r,t'|j��|_|
|_||��}n|
}|r#t'|j��|_||_|}n||��}nt/d
|���d�_��|��S)a
        generic expression splitting algorithm. Should work for ifexp and if
        using W(rap) and U(n)W(rap) to manage difference between expr and stmt

        The idea is to split a BinOp in three expressions:
            1. a (possibly empty) non-static expr
            2. an expr containing a static expr
            3. a (possibly empty) non-static expr
        Once split, the if body is refactored to keep the semantic,
        and then recursively split again, until all static expr are alone in a
        test condition
        c��|SrrM�r�s r�Wz+SplitStaticExpression.visit_Cond.<locals>.W`����rc��|SrrMr�s r�UWz,SplitStaticExpression.visit_Cond.<locals>.UWcr�rc��|gSrrMr�s rr�z+SplitStaticExpression.visit_Cond.<locals>.Wfs	���s�
rc��|dSr�rMr�s rr�z,SplitStaticExpression.visit_Cond.<locals>.UWis����t�rc�:����t|��Sr)rwr)r�r>s �r�has_static_expressionz?SplitStaticExpression.visit_Cond.<locals>.has_static_expressionzs����;�;�2�A�6�6�6rr Nr�rz%operator not supported in a static ifT)�typer�IfExprwrr�rrr�r"�BinOp�right�leftr&r��list�reversedr��op�BitAndrrsr��BitOrrr�)r>rG�NodeTyr�r��has_static_expr�before�static�valuesr��after�test_before�test_static�
test_afters`             r�
visit_Condz SplitStaticExpression.visit_CondQs�����d�����S�Y���
�
�
�
�
�
�
�
�
�
�
�
�
��+�+�&9�4�9�E�E���	,��%�%�d�+�+�+��9��/�/�/��%�%�d�+�+�+��$�)�S�Y�/�/�	,��%�%�d�+�+�+��R����)�/�4�9�>�2��	7�	7�	7�	7�	7��	(�2�2�6�"�:�>�>�	(��M�M�&�*�*�,�,�'�'�'��	(�2�2�6�"�:�>�>�	(��	(�.�.�v�b�z�:�:�	(��M�M�&�*�*�,�,�'�'�'��	(�.�.�v�b�z�:�:�	(��X�f�%�%�&�&���f�T�4��.�.���	)��v�;�;�!�#�#�#�#�%�a�y�K���f�T�4��.�.���	'�%�a�y�K���6�{�{�Q����'��u�:�:��?�?�?�?� �Y�v�a�y�$�)�,��a��I�I�J�E�E�"�1�2�2�J�E��V�D�$��-�-�
��	'��u�:�:��?�?�?�?�#�A�h�J�O��d�i�l�C�J�/�/�-	+��
1�"*�4�9�"5�"5�
��$,�T�[�$9�$9�
�!��Q�z�]�]�
�
�%�d�i�0�0�
��
)�#-�� �%-�d�k�%:�%:��"��a��n�n���(���
'�#.�� �%)�[��"�"����r�+�����
��	��c�i�
0�
0�	+��
3�"*�4�9�"5�"5�
��$,�T�[�$9�$9�
�!��Q�z�]�]�
�
�%�d�k�2�2�
��
)�#+�D�I�#6�#6�� �%/��"��a��n�n���(���
'�#+�D�I�#6�#6�� �%0��"�"����r�+�����$�%L�%)�+�+�
+�����!�!�$�'�'�'r)rJrKrLr?r�r�r�r�r�s@rr�r�LsP�������G�G�G�G�G�x(�x(�x(�t(�'�H�{�{�{�{�{rr�)�__doc__�pythran.analysesrrrrrrr	r
rr�pythran.passmanagerr
�pythran.syntaxr�gastr�copyr�ranger+r�rZrfr9�NodeTransformerr(r-rir�rMrr�<module>rs���9�9�F�F�F�F�F�F�F�F�F�F�F�F�F�F�F�F�F�F�F�F�F�F�F�F�/�.�.�.�.�.�-�-�-�-�-�-�����������.3�e�A�h�h�+�	�9�j�)�-�-�-�`�����#�%����63�3�3�3�3��,�3�3�3�<Q)�Q)�Q)�Q)�Q)��Q)�Q)�Q)�h(�(�(�(�(�N�(�(�(�(�(r

Youez - 2016 - github.com/yon3zu
LinuXploit