³ņ
ŃRMc        
   @   s@  d  Z  d d k l Z d d k l Z l Z d d k l Z d d k l	 Z	 d d k
 l Z d d k l Z d d k l Z e e d	   Z e i   d
    Z d e f d     YZ e d  Z d e f d     YZ d e f d     YZ d e f d     YZ d e f d     YZ d e f d     YZ d   Z d S(   s²   
Function objects.

In PyPy there is no difference between built-in and user-defined function
objects; the difference lies in the code object found in their func_code
attribute.
i’’’’(   t   unrolling_iterable(   t   OperationErrort   operationerrfmt(   t	   Wrappable(   t   Code(   t	   Arguments(   t   jit(   t   make_sure_not_resizedi   c         C   s   |  i  p t  |  i S(   N(   t   can_change_codet   AssertionErrort   code(   t   func(    (    s-   /64/home/arigo/u/pypy/interpreter/function.pyt   _get_immutable_code   s    t   Functionc           B   s  e  Z d  Z e Z d# g  d# d# d  Z d   Z d   Z d   Z	 d   Z
 d   Z d   Z e i d    Z e i d	    Z d
   Z d   Z d# d# d# d  Z d   Z d   Z h  d# d <Z d   Z d   Z d   Z e 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* RS($   s¶   A function is a code object captured with some environment:
    an object space, a dictionary of globals, default arguments,
    and an arbitrary 'closure' passed to the code object.c         C   sl   | |  _  | p | i |  _ d  |  _ | |  _ | |  _ | |  _ | |  _ t	 |  i  d  |  _
 d  |  _ d  S(   N(   t   spacet   co_namet   namet   Nonet   w_docR
   t   w_func_globalst   closuret   defs_wR   t   w_func_dictt   w_module(   t   selfR   R
   t	   w_globalsR   R   t	   forcename(    (    s-   /64/home/arigo/u/pypy/interpreter/function.pyt   __init__   s    							c         C   s&   t  |  d d  } d |  i i | f S(   NR   t   ?s   <%s %s>(   t   getattrt	   __class__t   __name__(   R   R   (    (    s-   /64/home/arigo/u/pypy/interpreter/function.pyt   __repr__,   s    c         C   s   |  i    i |  |  S(   N(   t   getcodet   funcrun(   R   t   args(    (    s-   /64/home/arigo/u/pypy/interpreter/function.pyt	   call_args2   s    c         C   s   |  i    i |  | |  S(   N(   R!   t   funcrun_obj(   R   t   w_objR#   (    (    s-   /64/home/arigo/u/pypy/interpreter/function.pyt   call_obj_args6   s    c         C   sF   t  i   o2 |  i p t |   Sn t  i |  i d t Sn |  i S(   Nt   promote(   R   t   we_are_jittedR   R   t   hintR
   t   True(   R   (    (    s-   /64/home/arigo/u/pypy/interpreter/function.pyR!   :   s
    
c   	   
   G   sš  d d k  l } d d k l } |  i   } t |  } | i } | | j o| d j o1 t | | i  p t	  | i
 |  i |   SqŃ| d j o8 t | | i  p t	  | i |  i |  | d  SqŃ| d j o? t | | i  p t	  | i |  i |  | d | d  SqŃ| d j oF t | | i  p t	  | i |  i |  | d | d | d  SqŃ| d j oM t | | i  p t	  | i |  i |  | d | d | d | d  SqŃn| | i B| j o t | |  p t	  | d	 j  o_ |  i i | |  i |  i  } x0 t D]( } | | j  o | | | i | <q+q+W| i   SqŃni | d j o[ | t i j oK t | | i  p t	  | i |  | d t |  i t  | d    Sn |  i! t |  i t  |    S(
   Ni’’’’(   t   gateway(   t   PyCodei    i   i   i   i   i   ("   t   pypy.interpreterR,   t   pypy.interpreter.pycodeR-   R!   t   lent   fast_natural_arityt
   isinstancet   BuiltinCode0R	   t
   fastcall_0R   t   BuiltinCode1t
   fastcall_1t   BuiltinCode2t
   fastcall_2t   BuiltinCode3t
   fastcall_3t   BuiltinCode4t
   fastcall_4t
   FLATPYCALLt   createframeR   R   t   funccallunrollingt   fastlocals_wt   runR   t   PASSTHROUGHARGS1t    BuiltinCodePassThroughArguments1R%   R   t   listR$   (	   R   t   args_wR,   R-   R
   t   nargsR1   t	   new_framet   i(    (    s-   /64/home/arigo/u/pypy/interpreter/function.pyt   funccallA   sN    	%! 	c   
   
   C   sB  d d k  l } d d k l } |  i   } | i } | | j o²| d j o1 t | | i  p t  | i	 |  i
 |   Sq&| d j o= t | | i  p t  | i |  i
 |  | i d   Sq&| d j oI t | | i  p t  | i |  i
 |  | i d  | i d   Sq&| d j oU t | | i  p t  | i |  i
 |  | i d  | i d  | i d   Sq&| d j oa t | | i  p t  | i |  i
 |  | i d  | i d  | i d  | i d   Sq&n3| t i B| j o. t | |  p t  |  i | | |  Snń | t i @on | d	 @} | | j o | t |  i  j n o5 t | |  p t  |  i | | | | |  Sq&nu | t i j od | d j oW t | | i  p t  | i | d  } | i | d  }	 | i |  | |	  Sn | i |  }	 |  i |	  S(
   Ni’’’’(   R,   (   R-   i    i   i   i   i   i’   (   R.   R,   R/   R-   R!   R1   R2   R3   R	   R4   R   R5   R6   t	   peekvalueR7   R8   R9   R:   R;   R<   R   R=   t   _flat_pycallR0   R   t   _flat_pycall_defaultsRB   RC   t   make_argumentsR%   R$   (
   R   RF   t   frameR,   R-   R
   R1   t   natural_arityR&   R#   (    (    s-   /64/home/arigo/u/pypy/interpreter/function.pyt   funccall_valuestackj   sP    	# 
+c         C   sc   |  i  i | |  i |  i  } x8 t |  D]* } | i | d |  } | | i | <q+ W| i   S(   Ni   (   R   R>   R   R   t   xrangeRJ   R@   RA   (   R   R
   RF   RN   RG   RH   t   w_arg(    (    s-   /64/home/arigo/u/pypy/interpreter/function.pyRK      s     c         C   s½   |  i  i | |  i |  i  } x8 t |  D]* } | i | d |  } | | i | <q+ W|  i } t |  }	 |	 | }
 | } x2 t |
 |	  D]! } | | | i | <| d 7} q W| i	   S(   Ni   (
   R   R>   R   R   RQ   RJ   R@   R   R0   RA   (   R   R
   RF   RN   t   defs_to_loadRG   RH   RR   R   t   ndefst   startt   j(    (    s-   /64/home/arigo/u/pypy/interpreter/function.pyRL   ”   s     	
 c         C   s3   |  i  d  j o |  i i d t  |  _  n |  i  S(   Nt   instance(   R   R   R   t   newdictR+   (   R   (    (    s-   /64/home/arigo/u/pypy/interpreter/function.pyt   getdict³   s    c         C   sK   | i  | i | | i   p t | i | i d    n | |  _ d  S(   Ns+   setting function's dictionary to a non-dict(   t   is_trueR2   t   w_dictR   t   w_TypeErrort   wrapR   (   R   R   R[   (    (    s-   /64/home/arigo/u/pypy/interpreter/function.pyt   setdictø   s    c         C   s@  |  i  t |  } |  i |  i | |  i   p t |  i |  i d    n |  i | |  i	  p |  i
 |  } n d  } |  i | |  i	  p |  i |  }	 n g  }	 d }
 d d k l } t | |  o t | i  }
 n |  i | |  i	  o |
 d j o
 d  } nļ |  i |  i |  |  i  p t |  i |  i d    n± d d k l } |  i |  } t |  } |
 d j o t |  i |  i d    n- |
 | j o t |  i |  i d    n g  } | D] } | |  i  | |  qą~ } |  i t |  } t i | |  | | |	 | |  |  i |  S(	   Ns   expected dicti    i’’’’(   R-   s   invalid closure(   t   Cells   no closure neededs   closure is wrong size(   t   interp_wR   RZ   R2   R[   R   R\   R]   t   is_wt   w_Nonet   str_wR   t	   fixedviewR/   R-   R0   t   co_freevarst   typet   w_tuplet   pypy.interpreter.nestedscopeR_   t   unpackiterablet   w_ValueErrort   allocate_instanceR   R   (   R   t	   w_subtypet   w_codeR   t   w_namet	   w_argdefst	   w_closureR
   R   R   t	   nfreevarsR-   R   R_   t	   closure_wt   nt   _[1]t   w_cellR   (    (    s-   /64/home/arigo/u/pypy/interpreter/function.pyt   descr_function__new__æ   s8    #
-c         C   s   |  i  |  S(   N(   R$   (   R   t   __args__(    (    s-   /64/home/arigo/u/pypy/interpreter/function.pyt   descr_function_callį   s    c         C   s   |  i  |  i d |  i f  S(   Ns   function %s(   t   getreprR   R   (   R   (    (    s-   /64/home/arigo/u/pypy/interpreter/function.pyt   descr_function_reprä   s    t    c         C   sg   d d k  l } t |  i |  o@ |  i i } t i i | |   |  j p
 t d  |  i	   n t
 S(   Ni’’’’(   t   BuiltinCodes   duplicate function ids(   t   pypy.interpreter.gatewayR|   R2   R
   t
   identifierR   t   _allt   getR	   t   add_to_tablet   False(   R   R|   R~   (    (    s-   /64/home/arigo/u/pypy/interpreter/function.pyt   _freeze_ė   s    &c         C   s   |  t  i |  i i <d  S(   N(   R   R   R
   R~   (   R   (    (    s-   /64/home/arigo/u/pypy/interpreter/function.pyR   ö   s    c         C   s   t  i |  S(   N(   R   R   (   R~   (    (    s-   /64/home/arigo/u/pypy/interpreter/function.pyt   findł   s    c         C   sÜ  d d k  l } d d k l } | i d  } | i | |  } |  i } t | |  o> | i d  } | i	 | | i	 | i
 | i  g  g  Sn | i d  } | i
 } |  i d  j o | i }	 n4 | i	 g  }
 |  i D] } |
 | |  qį ~
  }	 |  i d  j o | i } n
 |  i } |  i d  j o | i } n
 |  i } |  i d  j o | i } n
 |  i } | i	 } g  } | |  i  | | |  i  | |	 | |  i  | |  i g } | | | |  | |  g  S(   Ni’’’’(   R|   (   t   MixedModulet   _pickle_supportt   builtin_functiont   func_new(   R}   R|   t   pypy.interpreter.mixedmoduleR   t   getbuiltinmoduleR`   R
   R2   R   t   newtupleR]   R~   R   R   Rb   R   R   R   R   R   R   (   R   R   R|   R   t   w_modt   modR
   t   new_instt   wRp   Rt   t   cellR   R   R   t   ntt   tup_baset	   tup_state(    (    s-   /64/home/arigo/u/pypy/interpreter/function.pyt   descr_function__reduce__ż   sD    		&	3				c         C   s®  d d k  l } | i |  } y" | \ } } } } }	 }
 } } Wn. t j
 o" t | i | i d    n X| |  _ | i |  |  _	 | i
 t |  |  _ | i |	 | i  pS d d k l } | i |	  } g  } | D] } | | i
 | |  qā ~ |  _ n
 d  |  _ | i | | i  o
 d  } n | |  _ | i | | i  o
 d  } n | |  _ | i | | i  o
 d  } n | |  _ | i |
  |  _ | |  _ d  S(   Ni’’’’(   R-   s(   Wrong arguments to function.__setstate__(   R_   (   R/   R-   Ri   t
   ValueErrorR   Rj   R]   R   Rc   R   R`   R   R
   Ra   Rb   Rh   R_   R   R   R   R   R   Rd   R   R   (   R   R   t   w_argsR-   RE   Rn   R   Rm   R   Rp   t   w_defs_wR   R   R_   Rr   Rt   Ru   (    (    s-   /64/home/arigo/u/pypy/interpreter/function.pyt   descr_function__setstate__)  s4    "		4	
	
	
	c         C   s6   | i  } | p d  | j o |  i Sn |  i |  S(   N(   R   R   Rb   R   (   R   R   t   values_w(    (    s-   /64/home/arigo/u/pypy/interpreter/function.pyt   fget_func_defaultsI  s    	c         C   s{   |  i  | |  i  o g  | _ d  Sn |  i |  i | |  i   p t |  i |  i d    n |  i	 |  | _ d  S(   Ns3   func_defaults must be set to a tuple object or None(
   Ra   Rb   R   RZ   R2   Rg   R   R\   R]   Rd   (   R   R   t
   w_defaults(    (    s-   /64/home/arigo/u/pypy/interpreter/function.pyt   fset_func_defaultsO  s    	c         C   s   g  | _  d  S(   N(   R   (   R   R   (    (    s-   /64/home/arigo/u/pypy/interpreter/function.pyt   fdel_func_defaultsW  s    c         C   s0   | i  d  j o | i i |   | _  n | i  S(   N(   R   R   R
   t   getdocstring(   R   R   (    (    s-   /64/home/arigo/u/pypy/interpreter/function.pyt   fget_func_docZ  s    c         C   s   | | _  d  S(   N(   R   (   R   R   R   (    (    s-   /64/home/arigo/u/pypy/interpreter/function.pyt   fset_func_doc_  s    c         C   s   |  i  | i  S(   N(   R]   R   (   R   R   (    (    s-   /64/home/arigo/u/pypy/interpreter/function.pyt   fget_func_nameb  s    c         C   sj   y |  i  |  | _ WnM t j
 oA } | i |  |  i  o t |  i |  i d    n   n Xd  S(   Ns(   func_name must be set to a string object(   Rc   R   R   t   matchR\   R]   (   R   R   Rn   t   e(    (    s-   /64/home/arigo/u/pypy/interpreter/function.pyt   fset_func_namee  s    	c         C   s   |  i  | _ d  S(   N(   Rb   R   (   R   R   (    (    s-   /64/home/arigo/u/pypy/interpreter/function.pyt   fdel_func_docp  s    c         C   sy   | i  d  j ob | i d  j	 oB |  i | i |  i  o( |  i | i d |  i d   | _  qr |  i | _  n | i  S(   NR   R   (   R   R   R   Ra   Rb   t   call_methodR]   (   R   R   (    (    s-   /64/home/arigo/u/pypy/interpreter/function.pyt   fget___module__s  s
    *(c         C   s   | | _  d  S(   N(   R   (   R   R   R   (    (    s-   /64/home/arigo/u/pypy/interpreter/function.pyt   fset___module__{  s    c         C   s   |  i  | _ d  S(   N(   Rb   R   (   R   R   (    (    s-   /64/home/arigo/u/pypy/interpreter/function.pyt   fdel___module__~  s    c         C   s   |  i  | i  S(   N(   R]   R
   (   R   R   (    (    s-   /64/home/arigo/u/pypy/interpreter/function.pyt   fget_func_code  s    c         C   sĢ   d d k  l } | i p t |  i |  i d    n |  i t |  } d } | i o t	 | i  } n t
 | |  oA | t	 | i  j o+ t |  i d | i | t	 | i    n | | _ d  S(   Ni’’’’(   R-   s1   Cannot change code attribute of builtin functionsi    s5   %s() requires a code object with %d free vars, not %d(   R/   R-   R   R   R\   R]   R`   R   R   R0   R2   Re   R   Rj   R   R
   (   R   R   Rm   R-   R
   t   closure_len(    (    s-   /64/home/arigo/u/pypy/interpreter/function.pyt   fset_func_code  s    
	
&	c         C   sW   | i  d  j	 o: |  i g  } | i  D] } | |  i |  q$ ~  } n
 |  i } | S(   N(   R   R   R   R]   Rb   (   R   R   Rt   RH   t   w_res(    (    s-   /64/home/arigo/u/pypy/interpreter/function.pyt   fget_func_closure  s    :	N(+   R   t
   __module__t   __doc__R+   R   R   R   R    R$   R'   R!   RI   RP   R   t   unroll_safeRK   RL   RY   R^   Rv   Rx   Rz   R   R   R   R   t   staticmethodR   R   R   R   R   R   R    R”   R¤   R„   R§   RØ   R©   RŖ   R¬   R®   (    (    (    s-   /64/home/arigo/u/pypy/interpreter/function.pyR      sL   						)	,		!						,	 													c         C   s   |  i  | |  i  p3 |  i  | |  i  p |  i  | |  i |  i   } | o  |  i t |  | | |   Sn |  i t |  | d |   Sd S(   s-   functionobject.__get__(obj[, type]) -> methodN(   Ra   Rb   Rf   R]   t   MethodR   (   R   t
   w_functionR&   t   w_clst   asking_for_bound(    (    s-   /64/home/arigo/u/pypy/interpreter/function.pyt   descr_function_get  s     R³   c           B   sw   e  Z d  Z d   Z d d  Z d   Z d   Z d d  Z d   Z	 d   Z
 d   Z d	   Z d
   Z d   Z RS(   s=   A method is a function bound to a specific instance or class.c         C   s(   | |  _  | |  _ | |  _ | |  _ d  S(   N(   R   R“   t
   w_instancet   w_class(   R   R   R“   Rø   R¹   (    (    s-   /64/home/arigo/u/pypy/interpreter/function.pyR   Ŗ  s    			c         C   s   |  i  | |  i  o
 d  } n | d  j o5 |  i  | |  i  o t |  i |  i d    n |  i t |  } t i | |  | | |  |  i |  S(   Ns   unbound methods must have class(	   Ra   Rb   R   R   R\   R]   Rk   R³   R   (   R   Rl   R“   Rø   R¹   t   method(    (    s-   /64/home/arigo/u/pypy/interpreter/function.pyt   descr_method__new__°  s    
#	c         C   s7   |  i  o
 d } n d } d | |  i i |  i  f S(   Nt   boundt   unbounds   %s method %s(   Rø   R“   t   getnameR   (   R   t   pre(    (    s-   /64/home/arigo/u/pypy/interpreter/function.pyR    ŗ  s    

c   	      C   s*  |  i  } |  i d  j	 o | i |  i |  i |  Sn | i   } | d  j	 o | i | |  i  o nÆ |  i | d  } |  i i | d  } | o | d 7} n | d  j o
 d } n; | i	 |  i | d  } | o | d 7} n d | } d } t
 | i | | | |   | i |  i |  S(   NR{   t    t   nothings
   %sinstancesU   unbound method %s() must be called with %sinstance as first argument (got %s instead)(   R   Rø   R   R'   R“   t   firstargt   abstract_isinstance_wR¹   R¾   t   abstract_getclassR   R\   R$   (	   R   R#   R   t
   w_firstargt   mynamet   clsdescrt	   instdescrt   instnamet   msg(    (    s-   /64/home/arigo/u/pypy/interpreter/function.pyR$   Į  s*    	

c         C   s   |  i  } |  i d  j	 o | i |   Snc | d  j	 o? | i | | i  o( | i | |  i  o | i |   Sn t | |  i	 | |  Sd  S(   N(
   R   Rø   R   R]   Ra   Rb   t   abstract_issubclass_wR¹   R·   R“   (   R   R&   Rµ   R   (    (    s-   /64/home/arigo/u/pypy/interpreter/function.pyt   descr_method_getŽ  s    	c         C   s   |  i  |  S(   N(   R$   (   R   Rw   (    (    s-   /64/home/arigo/u/pypy/interpreter/function.pyt   descr_method_callė  s    c         C   sŲ   |  i  } |  i i |  i   } | i |  i | i  o | i |  i  } n
 |  i } | i |  i   } |  i d  j o! d | | f } | i	 |  Sn< | i
 | i |  i   } d | | | f } | i	 |  Sd  S(   Ns   <unbound method %s.%s>s   <bound method %s.%s of %s>(   R   R“   R¾   Ra   R¹   Rb   Rf   Rø   R   R]   Rc   t   repr(   R   R   R   R¹   t   typenamet   st   objrepr(    (    s-   /64/home/arigo/u/pypy/interpreter/function.pyt   descr_method_reprī  s    		c         C   s   |  i  } | i |  d j o_ y& | i | i d | i |   |  SWq~ t j
 o& } | i | | i  p   qz q~ Xn | i |  i	 |  S(   NR°   t   __getattribute__(
   R   Rc   R¦   t   w_objectR]   R   R¢   t   w_AttributeErrorR   R“   (   R   t   w_attrR   R£   (    (    s-   /64/home/arigo/u/pypy/interpreter/function.pyt   descr_method_getattribute’  s    	c         C   s·   |  i  } | i |  } t | t  p | i Sn |  i d  j o | i d  j	 o | i Sq” n@ | i d  j o | i Sn | i |  i | i  p | i Sn | i	 |  i
 | i
  S(   N(   R   t   interpclass_wR2   R³   t   w_NotImplementedRø   R   t   w_Falset   eq_wt   eqR“   (   R   t   w_otherR   t   other(    (    s-   /64/home/arigo/u/pypy/interpreter/function.pyt   descr_method_eq  s    	c         C   sQ   |  i  } | i |  i  } |  i d  j	 o" | i | | i |  i   } n | S(   N(   R   t   hashR“   Rø   R   t   xor(   R   R   t   w_result(    (    s-   /64/home/arigo/u/pypy/interpreter/function.pyt   descr_method_hash  s
    	"c         C   s^  d d k  l } d d k l } | i d  } | i | |  } | i d  } | i } |  i p | i	 } | i
 |  i  }	 t |	 t  os t |	 i |  o` | i d  } | i | | i	  o |  i | i |	 i  g }
 qB| | i |	 i  g }
 nB | i |  i | i	  o |  i | g }
 n |  i | |  i g }
 | i | | i |
  g  S(   Ni’’’’(   R   (   R|   R   t
   method_newt   builtin_method_new(   R   R   R}   R|   R   R`   R   R]   Rø   Rb   RŲ   R“   R2   R   R
   Ra   R¹   R   R   (   R   R   R   R|   R   R   R   R   Rø   t   functiont   tup(    (    s-   /64/home/arigo/u/pypy/interpreter/function.pyt   descr_method__reduce__!  s"    	#N(   R   RÆ   R°   R   R   R»   R    R$   RĢ   RĶ   RŅ   R×   Rß   Rć   Rč   (    (    (    s-   /64/home/arigo/u/pypy/interpreter/function.pyR³   §  s   	
							t   StaticMethodc           B   s2   e  Z d  Z e Z d   Z d d  Z d   Z RS(   s   The staticmethod objects.c         C   s   | |  _  d  S(   N(   R“   (   R   R“   (    (    s-   /64/home/arigo/u/pypy/interpreter/function.pyR   :  s    c         C   s   |  i  S(   s)   staticmethod(x).__get__(obj[, type]) -> x(   R“   (   R   R&   Rµ   (    (    s-   /64/home/arigo/u/pypy/interpreter/function.pyt   descr_staticmethod_get=  s    c         C   s   |  i  t |   S(   N(   R]   Ré   (   R   t   w_typeR“   (    (    s-   /64/home/arigo/u/pypy/interpreter/function.pyt   descr_staticmethod__new__A  s    N(	   R   RÆ   R°   R+   t   _immutable_R   R   Rź   Rģ   (    (    (    s-   /64/home/arigo/u/pypy/interpreter/function.pyRé   6  s
   	t   ClassMethodc           B   s2   e  Z d  Z e Z d   Z d d  Z d   Z RS(   s   The classmethod objects.c         C   s   | |  _  d  S(   N(   R“   (   R   R“   (    (    s-   /64/home/arigo/u/pypy/interpreter/function.pyR   H  s    c         C   sK   | i  | | i  o | i |  } n | i t | |  i | | i   S(   N(   Ra   Rb   Rf   R]   R³   R“   (   R   R   R&   t   w_klass(    (    s-   /64/home/arigo/u/pypy/interpreter/function.pyt   descr_classmethod_getK  s    c         C   s,   |  i  t |  } | i |  |  i |  S(   N(   Rk   Rī   R   R]   (   R   Rl   R“   RW   (    (    s-   /64/home/arigo/u/pypy/interpreter/function.pyt   descr_classmethod__new__P  s    N(	   R   RÆ   R°   R+   Rķ   R   R   Rš   Rń   (    (    (    s-   /64/home/arigo/u/pypy/interpreter/function.pyRī   D  s
   	t   FunctionWithFixedCodec           B   s   e  Z e Z RS(    (   R   RÆ   R   R   (    (    (    s-   /64/home/arigo/u/pypy/interpreter/function.pyRņ   U  s   t   BuiltinFunctionc           B   s)   e  Z e Z d    Z d   Z d   Z RS(   c         C   sp   t  | t  p t  t i |  | i | i | i | i | i | i	  | i
 |  _
 | i |  _ | i |  _ d  S(   N(   R2   R   R	   R   R   R
   R   R   R   R   R   R   R   (   R   R   (    (    s-   /64/home/arigo/u/pypy/interpreter/function.pyR   [  s    c         C   s   t  |  i |  i d    d  S(   Ns*   cannot create 'builtin_function' instances(   R   R\   R]   (   R   Rl   (    (    s-   /64/home/arigo/u/pypy/interpreter/function.pyt   descr_builtinfunction__new__c  s    	c         C   s   |  i  i d |  i f  S(   Ns   <built-in function %s>(   R   R]   R   (   R   (    (    s-   /64/home/arigo/u/pypy/interpreter/function.pyRz   g  s    (   R   RÆ   R   R   R   Rō   Rz   (    (    (    s-   /64/home/arigo/u/pypy/interpreter/function.pyRó   X  s   		c         C   s`   d d k  l } t |  t  o |  i }  n t |  t  o |  i   } n d  } t | |  S(   Ni’’’’(   R|   (   R}   R|   R2   R³   R“   R   R!   R   (   t   w_funcR|   R
   (    (    s-   /64/home/arigo/u/pypy/interpreter/function.pyt   is_builtin_codej  s    N(   R°   t   pypy.rlib.unrollR    t   pypy.interpreter.errorR   R   t   pypy.interpreter.baseobjspaceR   t   pypy.interpreter.evalR   t   pypy.interpreter.argumentR   t	   pypy.rlibR   t   pypy.rlib.debugR   t   rangeR?   t   purefunction_promoteR   R   R   R·   R³   Ré   Rī   Rņ   Ró   Rö   (    (    (    s-   /64/home/arigo/u/pypy/interpreter/function.pys   <module>   s$   ’ 
