
\K]c           @` s   d  d l  m Z m Z m Z d  d l Z d  d l m Z d  d l Z d  d l Z d  d l m	 Z	 d d l
 m Z d d l m Z d e f d	     YZ d
 e f d     YZ d e f d     YZ d e f d     YZ d S(   i    (   t   print_functiont   divisiont   absolute_importN(   t   pprint(   t   utilsi   (   t   UnsupportedError(   t   Loct   DataFlowAnalysisc           B` s  e  Z d  Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z	 d   Z
 d	   Z d
   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z  d   Z! d    Z" d!   Z# d"   Z$ d#   Z% d$   Z& d%   Z' e( j) dZ k  rd(   Z* d)   Z+ d*   Z, n d+   Z+ d,   Z- d-   Z. d.   Z/ d/   Z0 d0   Z1 d1   Z2 d2   Z3 d3   Z4 d4   Z5 e5 Z6 e5 Z7 e5 Z8 e5 Z9 d5   Z: e: Z; e: Z< e: Z= e: Z> e: Z? e: Z@ e: ZA e: ZB e: ZC e: ZD e: ZE e: ZF e: ZG e: ZH e: ZI e: ZJ e: ZK e: ZL e: ZM e: ZN e: ZO e: ZP e: ZQ e: ZR e: ZS e: ZT e: ZU e: ZV e: ZW d6   ZX d7   ZY d8   ZZ d9   Z[ d:   Z\ d;   Z] d<   Z^ d=   Z_ d>   Z` d?   Za d@   Zb dA   Zc dB   Zd dC   Ze dD   Zf dE   Zg dF   Zh eh Zi eg Zj dG   Zk dH   Zl dI   Zm dJ   Zn dK   Zo dL   Zp dM   Zq dN   Zr dO   Zs dP   Zt dQ   Zu dR   Zv dS   Zw ex dT  Zy dU   Zz dV   Z{ dW   Z| dX   Z} dY   Z~ RS([   s   
    Perform stack2reg

    This is necessary to resolve blocks that propagates stack value.
    This would allow the use of `and` and `or` and python2.6 jumps.
    c         C` s+   | |  _  | j |  _ i  |  _ i  |  _ d  S(   N(   t   cfat   bytecodet   infost   edge_process(   t   selfR   (    (    s-   lib/python2.7/site-packages/numba/dataflow.pyt   __init__   s    		c         C` s7   x0 |  j  j   D] } |  j |  |  j | j <q Wd  S(   N(   R   t   iterliveblockst   run_on_blockR
   t   offset(   R   t   blk(    (    s-   lib/python2.7/site-packages/numba/dataflow.pyt   run   s    c         C` s#  g  } t  | | j |  } g  } x|  j j |  D]q\ } } | j | j k rX q4 n  |  j | j } | j |  | j | j f |  j k r | j |  j | j | j f  n  | j d  k	 s t	 |   | j | j
 | } | d k  rt d |   n  | j d  k r| | _ n& | j | k rBt j d | t  n  | j d  k	 s]t	 |   | j d  k r|| j | _ q4 | j | j k r4 t j d | t  q4 q4 W| j d  k rd | _ g  | _ n  d | _
 x | D] } | |  qWx+ | D]# }	 |  j |	 }
 |  j | |
  qW| S(   Ni    s%   computed negative stack offset for %ss    inconsistent stack offset for %ss'   inconsistent entry syntax blocks for %s(   t	   BlockInfoR   R   t   incoming_blocksR
   t   appendR   t   stack_offsett   Nonet   AssertionErrort   stack_effectt   RuntimeErrort   warningst   warnt   RuntimeWarningt   syntax_blocksR	   t   dispatch(   R   R   R   t   infot   edge_callbackst   ibt   popst
   new_offsett   callbackR   t   inst(    (    s-   lib/python2.7/site-packages/numba/dataflow.pyR       sH    #
		c         C` s+   x$ t  j |  j  D] } | j   q Wd  S(   N(   R   t
   itervaluesR
   t   dump(   R   R   (    (    s-   lib/python2.7/site-packages/numba/dataflow.pyR(   S   s    c         C` s?   d | j  j d d  } t |  | |  j  } | | |  d  S(   Ns   op_%st   +t   _(   t   opnamet   replacet   getattrt   handle_unknown_opcode(   R   R    R&   t   fnamet   fn(    (    s-   lib/python2.7/site-packages/numba/dataflow.pyR   W   s    c         C` s=   t  d j | j  d t d |  j j j d | j   d  S(   Ns   Use of unknown opcode '{}'t   loct   filenamet   line(   R   t   formatR+   R   R	   t   func_idR2   t   lineno(   R   R    R&   (    (    s-   lib/python2.7/site-packages/numba/dataflow.pyR.   \   s    c         C` s   g  t  |  D] } | j   ^ q } | j   g  t  |  D] } | j   ^ q< } | j | d | d | x | D] } | j |  qt Wx | D] } | j |  q Wd  S(   Nt   origt   duped(   t   ranget   popt   reverset	   make_tempR   t   push(   R   R    R&   t   countR*   R7   R8   t   val(    (    s-   lib/python2.7/site-packages/numba/dataflow.pyt   dup_topxc   s    %
%c         C` s    | j  | _  | j j |  d S(   s,   
        Add an inner syntax block.
        N(   R   R   R   (   R   R    t   block(    (    s-   lib/python2.7/site-packages/numba/dataflow.pyt   add_syntax_blocko   s    c         C` s[   | j  j   } | j | j k s' t  x- | j | j | j k rV | j d t  q* W| S(   sM   
        Pop the innermost syntax block and revert its stack effect.
        t   discard(   R   R:   R   R   R   t   True(   R   R    RA   (    (    s-   lib/python2.7/site-packages/numba/dataflow.pyt   pop_syntax_blockv   s
    c         C` sH   | j  } d | k o  d k n s1 t d   |  j | | |  d  S(   Ni   i   s   Invalid DUP_TOPX count(   t   argR   R@   (   R   R    R&   R>   (    (    s-   lib/python2.7/site-packages/numba/dataflow.pyt   op_DUP_TOPX   s    	(c         C` s   |  j  | | d d d  S(   NR>   i   (   R@   (   R   R    R&   (    (    s-   lib/python2.7/site-packages/numba/dataflow.pyt
   op_DUP_TOP   s    c         C` s   |  j  | | d d d  S(   NR>   i   (   R@   (   R   R    R&   (    (    s-   lib/python2.7/site-packages/numba/dataflow.pyt   op_DUP_TOP_TWO   s    c         C` s6   | j    } | j    } | j |  | j |  d  S(   N(   R:   R=   (   R   R    R&   t   firstt   second(    (    s-   lib/python2.7/site-packages/numba/dataflow.pyt
   op_ROT_TWO   s    c         C` sO   | j    } | j    } | j    } | j |  | j |  | j |  d  S(   N(   R:   R=   (   R   R    R&   RJ   RK   t   third(    (    s-   lib/python2.7/site-packages/numba/dataflow.pyt   op_ROT_THREE   s    c         C` sh   | j    } | j    } | j    } | j    } | j |  | j |  | j |  | j |  d  S(   N(   R:   R=   (   R   R    R&   RJ   RK   RM   t   forth(    (    s-   lib/python2.7/site-packages/numba/dataflow.pyt   op_ROT_FOUR   s    c   	      C` s   | j  } | j   } g  t |  D] } | j   ^ q" } | j   } | j | d | d | d | x! t |  D] } | j |  qr Wd  S(   Nt   iterablet   storest   tupleobj(   RF   R:   R9   R<   R   t   reversedR=   (	   R   R    R&   R>   RQ   R*   RR   RS   t   st(    (    s-   lib/python2.7/site-packages/numba/dataflow.pyt   op_UNPACK_SEQUENCE   s    	%c         C` sp   | j  } t t g  t |  D] } | j   ^ q   } | j   } | j | d | d | | j |  d  S(   Nt   itemst   res(   RF   t   listRT   R9   R:   R<   R   R=   (   R   R    R&   R>   R*   RW   t   tup(    (    s-   lib/python2.7/site-packages/numba/dataflow.pyt   op_BUILD_TUPLE   s
    	1c         C` sp   | j  } t t g  t |  D] } | j   ^ q   } | j   } | j | d | d | | j |  d  S(   NRW   RX   (   RF   RY   RT   R9   R:   R<   R   R=   (   R   R    R&   R>   R*   RW   t   lst(    (    s-   lib/python2.7/site-packages/numba/dataflow.pyt   op_BUILD_LIST   s
    	1c      
   C` s   | j    } t j d  d k r. | j    } n | j } | j |  } | j   } | j   } | j | d | d | d | d | d  S(   Ni   i   t   targett   valuet	   appendvarRX   (   i   i   (   R:   t   syst   version_infoRF   t   peekR<   R   (   R   R    R&   R_   R^   t   indexR`   RX   (    (    s-   lib/python2.7/site-packages/numba/dataflow.pyt   op_LIST_APPEND   s    	c   	      C` s   | j    } | j } g  } t j d k rp xC t |  D]2 } | j   | j   } } | j | | f  q7 Wn  | j | d | d  d  d  d | d | | j |  d  S(   Ni   i   RW   it   sizeRX   (   i   i   (   R<   RF   Ra   Rb   R9   R:   R   R=   (	   R   R    R&   t   dctR>   RW   t   it   vt   k(    (    s-   lib/python2.7/site-packages/numba/dataflow.pyt   op_BUILD_MAP   s    	,c         C` sp   | j  } t t g  t |  D] } | j   ^ q   } | j   } | j | d | d | | j |  d  S(   NRW   RX   (   RF   RY   RT   R9   R:   R<   R   R=   (   R   R    R&   R>   R*   RW   RX   (    (    s-   lib/python2.7/site-packages/numba/dataflow.pyt   op_BUILD_SET   s
    	1c         C` s   | j  d t  d  S(   NRC   (   R:   RD   (   R   R    R&   (    (    s-   lib/python2.7/site-packages/numba/dataflow.pyt
   op_POP_TOP   s    c         C` s5   | j    } | j    } | j | d | d | d  S(   NR^   R_   (   R:   R   (   R   R    R&   R^   R_   (    (    s-   lib/python2.7/site-packages/numba/dataflow.pyt   op_STORE_ATTR   s    c         C` s#   | j    } | j | d | d  S(   NR^   (   R:   R   (   R   R    R&   R^   (    (    s-   lib/python2.7/site-packages/numba/dataflow.pyt   op_DELETE_ATTR   s    c         C` s#   | j    } | j | d | d  S(   NR_   (   R:   R   (   R   R    R&   R_   (    (    s-   lib/python2.7/site-packages/numba/dataflow.pyt   op_STORE_FAST   s    c         C` sD   | j    } | j    } | j } | j | d | d | d | d  S(   NRg   t   keyR_   (   R:   t   tosR   (   R   R    R&   Rq   R_   Rg   (    (    s-   lib/python2.7/site-packages/numba/dataflow.pyt   op_STORE_MAP   s    	c         C` s#   | j    } | j | d | d  S(   NR_   (   R:   R   (   R   R    R&   R_   (    (    s-   lib/python2.7/site-packages/numba/dataflow.pyt   op_STORE_DEREF   s    c         C` sF   |  j  j | j } | j |  } | j | d | | j |  d  S(   NRX   (   R	   t   co_varnamesRF   R<   R   R=   (   R   R    R&   t   nameRX   (    (    s-   lib/python2.7/site-packages/numba/dataflow.pyt   op_LOAD_FAST   s    c         C` s3   | j  d  } | j | d | | j |  d  S(   Nt   constRX   (   R<   R   R=   (   R   R    R&   RX   (    (    s-   lib/python2.7/site-packages/numba/dataflow.pyt   op_LOAD_CONST   s    c         C` s0   | j    } | j | d | | j |  d  S(   NRX   (   R<   R   R=   (   R   R    R&   RX   (    (    s-   lib/python2.7/site-packages/numba/dataflow.pyt   op_LOAD_GLOBAL   s    c         C` s0   | j    } | j | d | | j |  d  S(   NRX   (   R<   R   R=   (   R   R    R&   RX   (    (    s-   lib/python2.7/site-packages/numba/dataflow.pyt   op_LOAD_DEREF  s    c         C` sB   | j    } | j   } | j | d | d | | j |  d  S(   Nt   itemRX   (   R:   R<   R   R=   (   R   R    R&   R|   RX   (    (    s-   lib/python2.7/site-packages/numba/dataflow.pyt   op_LOAD_ATTR	  s    c         C` sT   | j    } | j    } | j   } | j | d | d | d | | j |  d  S(   NRd   R^   RX   (   R:   R<   R   R=   (   R   R    R&   Rd   R^   RX   (    (    s-   lib/python2.7/site-packages/numba/dataflow.pyt   op_BINARY_SUBSCR  s
    c         C` sG   | j    } | j    } | j    } | j | d | d | d | d  S(   NR^   Rd   R_   (   R:   R   (   R   R    R&   Rd   R^   R_   (    (    s-   lib/python2.7/site-packages/numba/dataflow.pyt   op_STORE_SUBSCR  s    c         C` s5   | j    } | j    } | j | d | d | d  S(   NR^   Rd   (   R:   R   (   R   R    R&   Rd   R^   (    (    s-   lib/python2.7/site-packages/numba/dataflow.pyt   op_DELETE_SUBSCR  s    c         C` sB   | j    } | j   } | j | d | d | | j |  d  S(   NR_   RX   (   R:   R<   R   R=   (   R   R    R&   R_   RX   (    (    s-   lib/python2.7/site-packages/numba/dataflow.pyt   op_GET_ITER!  s    c      
   C` s   | j  } | j   } | j   } | j   } | j | d | d | d | d | | j |  d   } | |  j | j j | j   f <d  S(   Nt   iteratort   pairt   indvalt   predc         S` s   |  j    |  j    d  S(   N(   R:   (   R    (    (    s-   lib/python2.7/site-packages/numba/dataflow.pyt   pop_info/  s    
(   Rr   R<   R   R=   R   RA   R   t   get_jump_target(   R   R    R&   R   R   R   R   R   (    (    s-   lib/python2.7/site-packages/numba/dataflow.pyt   op_FOR_ITER'  s    	%	i   i   c         ` s   | j  d @} | j  d ?d @}   f d   } | r?   j   n d  } t t g  t |  D] } |   ^ qX   }	 t t g  t |  D] }   j   ^ q   }
   j   }   j   }   j | d | d |
 d |	 d | d |   j |  d  S(	   Ni   i   c          ` s"     j    }    j    } | |  f S(   N(   R:   (   R?   Rq   (   R    (    s-   lib/python2.7/site-packages/numba/dataflow.pyt   pop_kws:  s    t   funct   argst   kwsRX   t   vararg(	   RF   R:   R   RY   RT   R9   R<   R   R=   (   R   R    R&   t
   has_varargt   nargt   nkwsR   R   R*   R   R   R   RX   (    (   R    s-   lib/python2.7/site-packages/numba/dataflow.pyt   _op_call_function6  s    .1$c         C` s   |  j  | | d t d  S(   NR   (   R   t   False(   R   R    R&   (    (    s-   lib/python2.7/site-packages/numba/dataflow.pyt   op_CALL_FUNCTIONI  s    c         C` s   |  j  | | d t d  S(   NR   (   R   RD   (   R   R    R&   (    (    s-   lib/python2.7/site-packages/numba/dataflow.pyt   op_CALL_FUNCTION_VARL  s    c         C` s   | j  } t t g  t |  D] } | j   ^ q   } | j   } | j   } | j | d | d | d | | j |  d  S(   NR   R   RX   (   RF   RY   RT   R9   R:   R<   R   R=   (   R   R    R&   R   R*   R   R   RX   (    (    s-   lib/python2.7/site-packages/numba/dataflow.pyR   P  s    	1c   	   
   C` s   | j  } | j   } t t g  t |  D] } | j   ^ q(   } | j   } | j   } | j | d | d | d | d | | j |  d  S(   NR   R   t   namesRX   (   RF   R:   RY   RT   R9   R<   R   R=   (	   R   R    R&   R   R   R*   R   R   RX   (    (    s-   lib/python2.7/site-packages/numba/dataflow.pyt   op_CALL_FUNCTION_KWY  s    	1%c         C` sv   | j  d @r" d } t |   n  | j   } | j   } | j   } | j | d | d | d | | j |  d  S(   Ni   s,   CALL_FUNCTION_EX with **kwargs not supportedR   R   RX   (   RF   t   NotImplementedErrorR:   R<   R   R=   (   R   R    R&   t   errmsgR   R   RX   (    (    s-   lib/python2.7/site-packages/numba/dataflow.pyt   op_CALL_FUNCTION_EXc  s    c         C` s   t  t g  t | j  D] } | j   ^ q   } g  t t |  d  D] } | j   ^ qK } | j | d | d | | j | d  d  S(   Ni   t   tuplest   tempsi(	   RY   RT   R9   RF   R:   t   lenR<   R   R=   (   R   R    R&   R*   R   R   (    (    s-   lib/python2.7/site-packages/numba/dataflow.pyt   _build_tuple_unpackm  s    4/c         C` s   |  j  | |  d  S(   N(   R   (   R   R    R&   (    (    s-   lib/python2.7/site-packages/numba/dataflow.pyt   op_BUILD_TUPLE_UNPACK_WITH_CALLu  s    c         C` s   |  j  | |  d  S(   N(   R   (   R   R    R&   (    (    s-   lib/python2.7/site-packages/numba/dataflow.pyt   op_BUILD_TUPLE_UNPACKy  s    c      
   C` s   | j    } t t g  t | j  D] } | j    ^ q"   } g  t | j  D] } | j   ^ qP } | j   } | j | d | d | d | d | | j |  d  S(   Nt   keyst   keytmpst   valuesRX   (   R:   RY   RT   R9   RF   R<   R   R=   (   R   R    R&   R   R*   t   valsR   RX   (    (    s-   lib/python2.7/site-packages/numba/dataflow.pyt   op_BUILD_CONST_KEY_MAP|  s    4(%c         C` sW   t  j d t  | j   } | j   } | j   } | j | d | d | d | d  S(   NsI   Python2 style print partially supported.  Please use Python3 style print.R|   t   printvarRX   (   R   R   R   R:   R<   R   (   R   R    R&   R|   R   RX   (    (    s-   lib/python2.7/site-packages/numba/dataflow.pyt   op_PRINT_ITEM  s    	c         C` s5   | j    } | j    } | j | d | d | d  S(   NR   RX   (   R<   R   (   R   R    R&   R   RX   (    (    s-   lib/python2.7/site-packages/numba/dataflow.pyt   op_PRINT_NEWLINE  s    c         C` sB   | j    } | j   } | j | d | d | | j |  d  S(   NR_   RX   (   R:   R<   R   R=   (   R   R    R&   R?   RX   (    (    s-   lib/python2.7/site-packages/numba/dataflow.pyt   _unaryop  s    c         C` sT   | j    } | j    } | j   } | j | d | d | d | | j |  d  S(   Nt   lhst   rhsRX   (   R:   R<   R   R=   (   R   R    R&   R   R   RX   (    (    s-   lib/python2.7/site-packages/numba/dataflow.pyt	   _binaryop  s
    c         C` sx   | j    } | j   } | j   } | j   } | j   } | j | d | d | d | d | d | | j |  d S(   s   
        TOS = TOS[:]
        t   baseRX   t   slicevart   indexvart   nonevarN(   R:   R<   R   R=   (   R   R    R&   Rr   RX   R   R   R   (    (    s-   lib/python2.7/site-packages/numba/dataflow.pyt
   op_SLICE_0  s    c   	      C` s   | j    } | j    } | j   } | j   } | j   } | j   } | j | d | d | d | d | d | d | | j |  d S(   s"   
        TOS = TOS1[TOS:]
        R   t   startRX   R   R   R   N(   R:   R<   R   R=   (	   R   R    R&   Rr   t   tos1RX   R   R   R   (    (    s-   lib/python2.7/site-packages/numba/dataflow.pyt
   op_SLICE_1  s    $c   	      C` s   | j    } | j    } | j   } | j   } | j   } | j   } | j | d | d | d | d | d | d | | j |  d S(   s"   
        TOS = TOS1[:TOS]
        R   t   stopRX   R   R   R   N(   R:   R<   R   R=   (	   R   R    R&   Rr   R   RX   R   R   R   (    (    s-   lib/python2.7/site-packages/numba/dataflow.pyt
   op_SLICE_2  s    $c   	      C` s   | j    } | j    } | j    } | j   } | j   } | j   } | j | d | d | d | d | d | d | | j |  d S(   s&   
        TOS = TOS2[TOS1:TOS]
        R   R   R   RX   R   R   N(   R:   R<   R   R=   (	   R   R    R&   Rr   R   t   tos2RX   R   R   (    (    s-   lib/python2.7/site-packages/numba/dataflow.pyt
   op_SLICE_3  s    $c         C` sk   | j    } | j    } | j   } | j   } | j   } | j | d | d | d | d | d | d S(   s   
        TOS[:] = TOS1
        R   R_   R   R   R   N(   R:   R<   R   (   R   R    R&   Rr   R_   R   R   R   (    (    s-   lib/python2.7/site-packages/numba/dataflow.pyt   op_STORE_SLICE_0  s    c   	      C` s}   | j    } | j    } | j    } | j   } | j   } | j   } | j | d | d | d | d | d | d | d S(   s#   
        TOS1[TOS:] = TOS2
        R   R   R   R_   R   R   N(   R:   R<   R   (	   R   R    R&   Rr   R   R_   R   R   R   (    (    s-   lib/python2.7/site-packages/numba/dataflow.pyt   op_STORE_SLICE_1  s    c   	      C` s}   | j    } | j    } | j    } | j   } | j   } | j   } | j | d | d | d | d | d | d | d S(   s#   
        TOS1[:TOS] = TOS2
        R   R   R_   R   R   R   N(   R:   R<   R   (	   R   R    R&   Rr   R   R_   R   R   R   (    (    s-   lib/python2.7/site-packages/numba/dataflow.pyt   op_STORE_SLICE_2  s    $c   	      C` s}   | j    } | j    } | j    } | j    } | j   } | j   } | j | d | d | d | d | d | d | d S(   s'   
        TOS2[TOS1:TOS] = TOS3
        R   R   R   R_   R   R   N(   R:   R<   R   (	   R   R    R&   Rr   R   R   R_   R   R   (    (    s-   lib/python2.7/site-packages/numba/dataflow.pyt   op_STORE_SLICE_3"  s    $c      
   C` sY   | j    } | j   } | j   } | j   } | j | d | d | d | d | d S(   s   
        del TOS[:]
        R   R   R   R   N(   R:   R<   R   (   R   R    R&   Rr   R   R   R   (    (    s-   lib/python2.7/site-packages/numba/dataflow.pyt   op_DELETE_SLICE_0/  s    c         C` sk   | j    } | j    } | j   } | j   } | j   } | j | d | d | d | d | d | d S(   s    
        del TOS1[TOS:]
        R   R   R   R   R   N(   R:   R<   R   (   R   R    R&   Rr   R   R   R   R   (    (    s-   lib/python2.7/site-packages/numba/dataflow.pyt   op_DELETE_SLICE_1:  s    c         C` sk   | j    } | j    } | j   } | j   } | j   } | j | d | d | d | d | d | d S(   s    
        del TOS1[:TOS]
        R   R   R   R   R   N(   R:   R<   R   (   R   R    R&   Rr   R   R   R   R   (    (    s-   lib/python2.7/site-packages/numba/dataflow.pyt   op_DELETE_SLICE_2F  s    c         C` sk   | j    } | j    } | j    } | j   } | j   } | j | d | d | d | d | d | d S(   s$   
        del TOS2[TOS1:TOS]
        R   R   R   R   R   N(   R:   R<   R   (   R   R    R&   Rr   R   R   R   R   (    (    s-   lib/python2.7/site-packages/numba/dataflow.pyt   op_DELETE_SLICE_3R  s    c         C` s   | j  } | d k rB | j   } | j   } | } | } d	 } nQ | d k r | j   } | j   } | j   }	 |	 } | } | } n t d   | j   }
 | j   } | j | d | d | d | d | d |
 | j |  d	 S(
   s<   
        slice(TOS1, TOS) or slice(TOS2, TOS1, TOS)
        i   i   t   unreachableR   R   t   stepRX   R   N(   RF   R:   R   t	   ExceptionR<   R   R=   (   R   R    R&   t   argcRr   R   R   R   R   R   R   RX   (    (    s-   lib/python2.7/site-packages/numba/dataflow.pyt   op_BUILD_SLICE^  s(    			$c         C` s,   | j    } | j | d | | | _ d  S(   NR   (   R:   R   t
   terminator(   R   R    R&   R   (    (    s-   lib/python2.7/site-packages/numba/dataflow.pyt   op_POP_JUMP_IF_TRUEx  s    c         C` s,   | j    } | j | d | | | _ d  S(   NR   (   R:   R   R   (   R   R    R&   R   (    (    s-   lib/python2.7/site-packages/numba/dataflow.pyt   op_POP_JUMP_IF_FALSE}  s    c         C` s)   | j  } | j | d | | | _ d  S(   NR   (   Rr   R   R   (   R   R    R&   R   (    (    s-   lib/python2.7/site-packages/numba/dataflow.pyt   op_JUMP_IF_TRUE  s    	c         C` s)   | j  } | j | d | | | _ d  S(   NR   (   Rr   R   R   (   R   R    R&   R   (    (    s-   lib/python2.7/site-packages/numba/dataflow.pyt   op_JUMP_IF_FALSE  s    	c         C` s   | j  |  | | _ d  S(   N(   R   R   (   R   R    R&   (    (    s-   lib/python2.7/site-packages/numba/dataflow.pyt   op_JUMP_ABSOLUTE  s    c         C` s   | j  |  | | _ d  S(   N(   R   R   (   R   R    R&   (    (    s-   lib/python2.7/site-packages/numba/dataflow.pyt   op_JUMP_FORWARD  s    c         C` s'   |  j  |  | j |  | | _ d  S(   N(   RE   R   R   (   R   R    R&   (    (    s-   lib/python2.7/site-packages/numba/dataflow.pyt   op_BREAK_LOOP  s    c         C` s2   | j  | d | j   d | j   | | _ d  S(   Nt   retvalt   castval(   R   R:   R<   R   (   R   R    R&   (    (    s-   lib/python2.7/site-packages/numba/dataflow.pyt   op_RETURN_VALUE  s    %c         C` sB   | j    } | j   } | j | d | d | | j |  d  S(   NR_   RX   (   R:   R<   R   R=   (   R   R    R&   R?   RX   (    (    s-   lib/python2.7/site-packages/numba/dataflow.pyt   op_YIELD_VALUE  s    c         C` s$   |  j  | t    | j |  d  S(   N(   RB   t	   LoopBlockR   (   R   R    R&   (    (    s-   lib/python2.7/site-packages/numba/dataflow.pyt   op_SETUP_LOOP  s    c         C` sO   | j    } |  j | t    | j   } | j |  | j | d | d  S(   Nt   contextmanager(   R:   RB   t	   WithBlockR<   R=   R   (   R   R    R&   t   cmt   yielded(    (    s-   lib/python2.7/site-packages/numba/dataflow.pyt   op_SETUP_WITH  s
    c         C` s   | j    | j |  d S(   s'   
        Note: py2 only opcode
        N(   R:   R   (   R   R    R&   (    (    s-   lib/python2.7/site-packages/numba/dataflow.pyt   op_WITH_CLEANUP  s    
c         C` s   | j    | j |  d  S(   N(   R:   R   (   R   R    R&   (    (    s-   lib/python2.7/site-packages/numba/dataflow.pyt   op_WITH_CLEANUP_START  s    
c         C` s   | j  |  d  S(   N(   R   (   R   R    R&   (    (    s-   lib/python2.7/site-packages/numba/dataflow.pyt   op_WITH_CLEANUP_FINISH  s    c         C` s   | j  |  d  S(   N(   R   (   R   R    R&   (    (    s-   lib/python2.7/site-packages/numba/dataflow.pyt   op_END_FINALLY  s    c         C` s    |  j  |  } | j |  d  S(   N(   RE   R   (   R   R    R&   RA   (    (    s-   lib/python2.7/site-packages/numba/dataflow.pyt   op_POP_BLOCK  s    c         C` sY   | j  d k r d  } n* | j  d k r6 | j   } n t d   | j | d | d  S(   Ni    i   s)   Multiple argument raise is not supported.t   exc(   RF   R   R:   t
   ValueErrorR   (   R   R    R&   R   (    (    s-   lib/python2.7/site-packages/numba/dataflow.pyt   op_RAISE_VARARGS  s    	c         C` s  t  j d k r d  } n | j   } | j   } d  } } } }	 t  j d k  r | rf | j   } n  | j }
 |
 d k rUg  }	 x' t |
  D] } |	 j | j    q Wt |	  }	 qUnt  j d k rt  j d k  r| j d @}
 | j d ?d @} | j d ?d	 @} | r| j   } n  | d k r:| j   } n  | d k rg  } x? t |  D]1 } | j   } | j   } | j | | f  qYWt |  } n  |
 rUg  }	 x' t |
  D] } |	 j | j    qWt |	  }	 qUnp | j d @r| j   } n  | j d
 @r| j   } n  | j d @r9| j   } n  | j d @rU| j   }	 n  | j   } | j | d | d | d | d | d | d |	 d | | j	 |  d  S(   Ni   i   i   i    i   i   i   i   i  i   i   Rv   t   codet   closuret   annotationst
   kwdefaultst   defaultsRX   (   i   i   (   i   i    (   i   i    (   i   i   (
   R   t	   PYVERSIONR   R:   RF   R9   R   t   tupleR<   R=   (   R   R    R&   t   MAKE_CLOSURERv   R   R   R   R   R   t   num_posdefaultsRh   t   num_kwdefaultst   num_annotationsRi   Rj   RX   (    (    s-   lib/python2.7/site-packages/numba/dataflow.pyt   op_MAKE_FUNCTION  s\    		$c         C` s   |  j  | | d t d  S(   NR   (   R   RD   (   R   R    R&   (    (    s-   lib/python2.7/site-packages/numba/dataflow.pyt   op_MAKE_CLOSURE  s    c         C` s0   | j    } | j | d | | j |  d  S(   NRX   (   R<   R   R=   (   R   R    R&   RX   (    (    s-   lib/python2.7/site-packages/numba/dataflow.pyt   op_LOAD_CLOSURE  s    c         O` s   |  j  | |   d  S(   N(   R}   (   R   R   R   (    (    s-   lib/python2.7/site-packages/numba/dataflow.pyt   op_LOAD_METHOD  s    c         O` s   |  j  | |   d  S(   N(   R   (   R   R   R   (    (    s-   lib/python2.7/site-packages/numba/dataflow.pyt   op_CALL_METHOD  s    c         C` s   d  S(   N(    (   R   R    R&   (    (    s-   lib/python2.7/site-packages/numba/dataflow.pyt   _ignored  s    (   i   i   (   t   __name__t
   __module__t   __doc__R   R   R   R(   R   R.   R@   RB   RE   RG   RH   RI   RL   RN   RP   RV   R[   R]   Re   Rk   Rl   Rm   Rn   Ro   Rp   Rs   Rt   Rw   Ry   Rz   R{   R}   R~   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   t   op_UNARY_NEGATIVEt   op_UNARY_POSITIVEt   op_UNARY_NOTt   op_UNARY_INVERTR   t   op_COMPARE_OPt   op_INPLACE_ADDt   op_INPLACE_SUBTRACTt   op_INPLACE_MULTIPLYt   op_INPLACE_DIVIDEt   op_INPLACE_TRUE_DIVIDEt   op_INPLACE_FLOOR_DIVIDEt   op_INPLACE_MODULOt   op_INPLACE_POWERt   op_INPLACE_MATRIX_MULTIPLYt   op_INPLACE_LSHIFTt   op_INPLACE_RSHIFTt   op_INPLACE_ANDt   op_INPLACE_ORt   op_INPLACE_XORt   op_BINARY_ADDt   op_BINARY_SUBTRACTt   op_BINARY_MULTIPLYt   op_BINARY_DIVIDEt   op_BINARY_TRUE_DIVIDEt   op_BINARY_FLOOR_DIVIDEt   op_BINARY_MODULOt   op_BINARY_POWERt   op_BINARY_MATRIX_MULTIPLYt   op_BINARY_LSHIFTt   op_BINARY_RSHIFTt   op_BINARY_ANDt   op_BINARY_ORt   op_BINARY_XORR   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   t   op_JUMP_IF_FALSE_OR_POPt   op_JUMP_IF_TRUE_OR_POPR   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   (    (    (    s-   lib/python2.7/site-packages/numba/dataflow.pyR      s   			3						
						
																												
	
																																							2				R   c           B` s   e  Z d Z d   Z RS(   R   c         C` s   d  |  _ d  S(   N(   R   R   (   R   (    (    s-   lib/python2.7/site-packages/numba/dataflow.pyR     s    (   R   (   R   R   t	   __slots__R   (    (    (    s-   lib/python2.7/site-packages/numba/dataflow.pyR     s   R   c           B` s   e  Z d Z d   Z RS(   R   c         C` s   d  |  _ d  S(   N(   R   R   (   R   (    (    s-   lib/python2.7/site-packages/numba/dataflow.pyR   "  s    (   R   (   R   R   R  R   (    (    (    s-   lib/python2.7/site-packages/numba/dataflow.pyR     s   R   c           B` s   e  Z d    Z d   Z d   Z d d  Z d   Z e d  Z d   Z	 d   Z
 d	   Z e d
    Z d   Z e d    Z e j d    Z RS(   c         C` sg   | |  _  | |  _ | |  _ g  |  _ i  |  _ g  |  _ d |  _ d  |  _ d  |  _	 d |  _
 d  |  _ d  S(   Ni    (   RA   R   R   t   stackt   outgoing_phist   instst   tempctR   t   _termR   R   R   (   R   RA   R   R   (    (    s-   lib/python2.7/site-packages/numba/dataflow.pyR   '  s    										c         C` s   d |  j  j |  j f S(   Ns   <%s at offset %d>(   t	   __class__R   R   (   R   (    (    s-   lib/python2.7/site-packages/numba/dataflow.pyt   __repr__8  s    c         C` sK   t  d |  j d  t  d d d t |  j  t |  j  t  d  d  S(   NR   t   {s	     stack: t   endt    t   }(   t   printR   R   R  R  (   R   (    (    s-   lib/python2.7/site-packages/numba/dataflow.pyR(   ;  s
    R!  c         C` s,   |  j  d 7_  d | |  j |  j  f } | S(   Ni   s   $%s%s.%s(   R  R   (   R   t   prefixRv   (    (    s-   lib/python2.7/site-packages/numba/dataflow.pyR<   B  s    c         C` s#   |  j  d 7_  |  j j |  d  S(   Ni   (   R   R  R   (   R   R?   (    (    s-   lib/python2.7/site-packages/numba/dataflow.pyR=   G  s    c         C` sK   |  j  s+ |  j d 8_ | sG |  j   Sn |  j d 8_ |  j  j   Sd S(   s   
        Pop a variable from the stack, or request it from incoming blocks if
        the stack is empty.
        If *discard* is true, the variable isn't meant to be used anymore,
        which allows reducing the number of temporaries created.
        i   N(   R  R   t   make_incomingR   R:   (   R   RC   (    (    s-   lib/python2.7/site-packages/numba/dataflow.pyR:   K  s    	c         C` sk   | } g  t  |  D] } |  j   ^ q } | d } x/ t  | d d d  D] } |  j | |  qL W| S(   sr   
        Return the k'th element back from the top of the stack.
        peek(1) is the top of the stack.
        ii   (   R9   R:   R=   (   R   Rj   t   num_popsR*   t   top_kt   rRh   (    (    s-   lib/python2.7/site-packages/numba/dataflow.pyRc   Z  s    %
c         C` sY   |  j  s t  |  j d  } x4 |  j  D]) } |  j |  j } | j |  | |  q( W| S(   s   
        Create an incoming variable (due to not enough values being
        available on our stack) and request its assignment from our
        incoming blocks' own stacks.
        t   phi(   R   R   R<   R   R   t   request_outgoing(   R   t   retR"   t   stack_index(    (    s-   lib/python2.7/site-packages/numba/dataflow.pyR%  f  s    c         C` s   | |  j  k r d S| |  j k  r[ |  j s1 t  xH |  j D] } | j |  | |  q; Wn! |  j | |  j } | |  j  | <d S(   s   
        Request the assignment of the next available stack variable
        for block *outgoing_block* with target name *phiname*.
        N(   R  R   R   R   R*  R  (   R   t   outgoing_blockt   phinameR,  R"   t   varname(    (    s-   lib/python2.7/site-packages/numba/dataflow.pyR*  s  s    c         C` s   |  j    } |  j |  | S(   N(   R:   R=   (   R   R(  (    (    s-   lib/python2.7/site-packages/numba/dataflow.pyRr     s    c         K` s   |  j  j | j | f  d  S(   N(   R  R   R   (   R   R&   R   (    (    s-   lib/python2.7/site-packages/numba/dataflow.pyR     s    c         C` s   |  j  d  k s t  |  j  S(   N(   R  R   R   (   R   (    (    s-   lib/python2.7/site-packages/numba/dataflow.pyR     s    c         C` s   | |  _  d  S(   N(   R  (   R   R&   (    (    s-   lib/python2.7/site-packages/numba/dataflow.pyR     s    (   R   R   R   R  R(   R<   R=   R   R:   Rc   R%  R*  t   propertyRr   R   R   t   setter(    (    (    s-   lib/python2.7/site-packages/numba/dataflow.pyR   &  s   								(   t
   __future__R    R   R   t   collectionsR   Ra   R   t   numbaR   t   errorsR   t   irR   t   objectR   R   R   R   (    (    (    s-   lib/python2.7/site-packages/numba/dataflow.pyt   <module>   s      