Ñò
˜à"Ic           @   s  d  d k  Z  d  d k Z d  d k Z d  d k Z d  d k Z d  d k Z d  d k Z d  d k Z d  d k l	 Z	 l
 Z
 d  d k l Z d g Z e i d j o* d d k l Z d e f d	 „  ƒ  YZ n d e f d
 „  ƒ  YZ d e f d „  ƒ  YZ d e f d „  ƒ  YZ d S(   iÿÿÿÿN(   t   Finalizet   info(   t   assert_spawningt   BufferWrappert   win32i   (   R   t   Arenac           B   s/   e  Z e i ƒ  Z d  „  Z d „  Z d „  Z RS(   c         C   se   | |  _  d t i ƒ  t i i ƒ  f |  _ t i d |  i  d |  i ƒ|  _ |  i  |  i f |  _	 d  S(   Ns	   pym-%d-%diÿÿÿÿt   tagname(
   t   sizet   ost   getpidR   t   _countert   nextt   namet   mmapt   buffert   _state(   t   selfR   (    (    s1   /mit/python/lib/python2.6/multiprocessing/heap.pyt   __init__#   s    	"!c         C   s   t  |  ƒ |  i S(   N(   R   R   (   R   (    (    s1   /mit/python/lib/python2.6/multiprocessing/heap.pyt   __getstate__*   s    
c         C   s>   | \ |  _  |  _ |  _ t i d |  i  d |  i ƒ|  _ d  S(   NiÿÿÿÿR   (   R   R   R   R   R   (   R   t   state(    (    s1   /mit/python/lib/python2.6/multiprocessing/heap.pyt   __setstate__.   s    !(   t   __name__t
   __module__t	   itertoolst   countR
   R   R   R   (    (    (    s1   /mit/python/lib/python2.6/multiprocessing/heap.pyR      s   		c           B   s   e  Z d  „  Z RS(   c         C   s+   t  i  d | ƒ |  _ | |  _ d  |  _ d  S(   Niÿÿÿÿ(   R   R   R   t   NoneR   (   R   R   (    (    s1   /mit/python/lib/python2.6/multiprocessing/heap.pyR   7   s    	(   R   R   R   (    (    (    s1   /mit/python/lib/python2.6/multiprocessing/heap.pyR   5   s   t   Heapc           B   sY   e  Z d  Z e i d „ Z e d „  ƒ Z d „  Z d „  Z	 d „  Z
 d „  Z d „  Z RS(   i   c         C   sd   t  i ƒ  |  _ t i ƒ  |  _ | |  _ g  |  _ h  |  _ h  |  _	 h  |  _
 t ƒ  |  _ g  |  _ d  S(   N(   R   R	   t   _lastpidt	   threadingt   Lockt   _lockt   _sizet   _lengthst   _len_to_seqt   _start_to_blockt   _stop_to_blockt   sett   _allocated_blockst   _arenas(   R   R   (    (    s1   /mit/python/lib/python2.6/multiprocessing/heap.pyR   D   s    					c         C   s   | d } |  | | @S(   Ni   (    (   t   nt	   alignmentt   mask(    (    s1   /mit/python/lib/python2.6/multiprocessing/heap.pyt   _roundupO   s    
c   	      C   s
  t  i |  i | ƒ } | t |  i ƒ j og |  i t |  i | ƒ t i ƒ } |  i d 9_ t	 d | ƒ t
 | ƒ } |  i i | ƒ | d | f S|  i | } |  i | } | i ƒ  } | p |  i | =|  i | =n | \ } } } |  i | | f =|  i | | f =| S(   Ni   s"   allocating a new mmap of length %di    (   t   bisectt   bisect_leftR    t   lenR*   t   maxR   R   t   PAGESIZER   R   R&   t   appendR!   t   popR"   R#   (	   R   R   t   it   lengtht   arenat   seqt   blockt   startt   stop(    (    s1   /mit/python/lib/python2.6/multiprocessing/heap.pyt   _mallocU   s"    !c   	      C   s'  | \ } } } y |  i  | | f } Wn t j
 o n X|  i | ƒ \ } } y |  i | | f } Wn t j
 o n X|  i | ƒ \ } } | | | f } | | } y |  i | i | ƒ Wn6 t j
 o* | g |  i | <t i |  i | ƒ n X| |  i | | f <| |  i  | | f <d  S(   N(	   R#   t   KeyErrort   _absorbR"   R!   R0   R+   t   insortR    (	   R   R6   R4   R7   R8   t
   prev_blockt   _t
   next_blockR3   (    (    s1   /mit/python/lib/python2.6/multiprocessing/heap.pyt   _freek   s(    
c         C   s‚   | \ } } } |  i  | | f =|  i | | f =| | } |  i | } | i | ƒ | p |  i | =|  i i | ƒ n | | f S(   N(   R"   R#   R!   t   removeR    (   R   R6   R4   R7   R8   R3   R5   (    (    s1   /mit/python/lib/python2.6/multiprocessing/heap.pyR;   ‰   s    

c         C   sC   |  i  i ƒ  z! |  i i | ƒ |  i | ƒ Wd  |  i  i ƒ  Xd  S(   N(   R   t   acquireR%   RA   R@   t   release(   R   R6   (    (    s1   /mit/python/lib/python2.6/multiprocessing/heap.pyt   free˜   s
    c         C   sÔ   t  i ƒ  |  i j o |  i ƒ  n |  i i ƒ  zŽ |  i t | d ƒ |  i ƒ } |  i	 | ƒ \ } } } | | } | | j  o |  i
 | | | f ƒ n | | | f } |  i i | ƒ | SWd  |  i i ƒ  Xd  S(   Ni   (   R   R	   R   R   R   RB   R*   R.   t
   _alignmentR9   R@   R%   t   addRC   (   R   R   R4   R7   R8   t   new_stopR6   (    (    s1   /mit/python/lib/python2.6/multiprocessing/heap.pyt   malloc¢   s    
(   R   R   RE   R   R/   R   t   staticmethodR*   R9   R@   R;   RD   RH   (    (    (    s1   /mit/python/lib/python2.6/multiprocessing/heap.pyR   @   s   				
c           B   s,   e  Z e ƒ  Z d  „  Z d „  Z d „  Z RS(   c         C   sA   t  i i | ƒ } | | f |  _ t |  t  i i d | f ƒd  S(   Nt   args(   R   t   _heapRH   R   R    RD   (   R   R   R6   (    (    s1   /mit/python/lib/python2.6/multiprocessing/heap.pyR   ¼   s    c         C   s8   |  i  \ \ } } } } t i | i ƒ \ } } | | S(   N(   R   t   _multiprocessingt   address_of_bufferR   (   R   R4   R7   R8   R   t   addressR3   (    (    s1   /mit/python/lib/python2.6/multiprocessing/heap.pyt   get_addressÂ   s    c         C   s   |  i  d S(   Ni   (   R   (   R   (    (    s1   /mit/python/lib/python2.6/multiprocessing/heap.pyt   get_sizeÈ   s    (   R   R   R   RK   R   RO   RP   (    (    (    s1   /mit/python/lib/python2.6/multiprocessing/heap.pyR   ¸   s   			(   R+   R   t   tempfileR   t   sysR   R   RL   t   multiprocessing.utilR    R   t   multiprocessing.forkingR   t   __all__t   platformR   t   objectR   R   R   (    (    (    s1   /mit/python/lib/python2.6/multiprocessing/heap.pyt   <module>	   s    	x