File: //usr/local/lib/python3.10/test/__pycache__/test_peepholer.cpython-310.opt-2.pyc
o
�iO � @ s^ d dl Z d dlZd dlmZ dd� ZG dd� de�ZG dd� dej�Zed kr-e� � dS dS )
� N)�BytecodeTestCasec C s^ d}t �| �D ]}|j|kr|d7 }qt| d�r| j} | jD ]}t|d�r,|t||�7 }q|S )Nr � �__code__�co_code)�dis�get_instructions�opname�hasattrr � co_consts�count_instr_recursively)�fr �count�instr�c� r �0/usr/local/lib/python3.10/test/test_peepholer.pyr s
�
�r c @ s� e Zd Zdd� Zdd� Zdd� Zdd� Zd d
� Zdd� Zd
d� Z dd� Z
dd� Zdd� Zdd� Z
dd� Zdd� Zdd� Zdd� Zdd � Zd!d"� Zd#d$� Zd%d&� Zd'd(� Zd)d*� Zd+d,� Zd-d.� Zd/d0� Zd1d2� Zd3d4� Zd5d6� Zd7S )8�
TestTranformsc
C s� t t�|��}dd� |D �}|D ]b}d|jvrq||j }|jdv r6| �|j� d|j� d|j� d|j� �� |jdv rT|jdkrT| �|j� d|j� d|j� d|j� �� d|jv rrd |jv rr| �|j� d|j� d|j� d|j� �� qd S )
Nc S s i | ]}|j |�qS r )�offset��.0r r r r �
<dictcomp> s z4TestTranforms.check_jump_targets.<locals>.<dictcomp>ZJUMP_)�
JUMP_ABSOLUTE�JUMP_FORWARDz at z
jumps to �RETURN_VALUEZ_OR_POPZJUMP_IF_)�listr r r ZargvalZfailr )�self�codeZinstructions�targetsr Ztgtr r r �check_jump_targets s6
��
������z TestTranforms.check_jump_targetsc C s` t �|�}tt �|��}tdd� |D ��}tdd� |D ��}| �|d� | �|t|j �� d S )Nc s � � | ]}|d V qdS �r Nr �r �tr r r � <genexpr>1 � � z-TestTranforms.check_lnotab.<locals>.<genexpr>c s r r r r! r r r r# 2 r$ r )
r Z_get_code_objectr Zfindlinestarts�min�maxZassertGreaterEqualZ
assertLess�lenr )r r ZlnotabZmin_bytecodeZmax_bytecoder r r �check_lnotab+ s
zTestTranforms.check_lnotabc C s: dd� }| � |d� | � |d� | �|d� | �|� d S )Nc S s | dks~ d S d S )N� r ��xr r r �unot; s �z%TestTranforms.test_unot.<locals>.unotZ UNARY_NOT�POP_JUMP_IF_FALSE�POP_JUMP_IF_TRUE��assertNotInBytecode�assertInBytecoder( )r r, r r r � test_unot9 s
zTestTranforms.test_unotc C s8 dD ]\}}}t |dd�}| �|||� | �|� qd S )N))z
not a is b�IS_OPr )znot a is not br3 r )z
not a in b�CONTAINS_OPr )znot a not in br4 r � �single)�compiler1 r( )r �lineZcmp_op�invertr r r r �test_elim_inversion_of_is_or_inC s
�z-TestTranforms.test_elim_inversion_of_is_or_inc C s� dd� }dd� }dd� }|d f|df|dffD ]\}}| � |d � | �|d
|� | �|� qdd� }| � |d � | �|d
d � | �|� d S )Nc S s d } d } | S �Nr r* r r r r P s z0TestTranforms.test_global_as_constant.<locals>.fc S � d} | S )NTr r* r r r �gT � z0TestTranforms.test_global_as_constant.<locals>.gc S r<