-
<c       st    d  Z    d k Z  d k Z  d k Z  d k Z  d k Z 	 d k l Z 
 d k l	 Z	 l
 Z
 l Z l Z  d   Z  d f  d     YZ  d   Z  d f  d	     YZ =d
 Z >d Z ?d Z @d Z Bd e f d     YZ sd   Z wd f  d     YZ d   Z d   Z d f  d     YZ d f  d     YZ 8e   i Z d S(   s/   A flow graph representation for Python bytecodeN(   s   misc(   s   CO_OPTIMIZEDs   CO_NEWLOCALSs
   CO_VARARGSs   CO_VARKEYWORDSc    s4     |  }   d   }  |  i |   |  Sd  S(   Nc    s     t  |  i | i  Sd  S(   N(   s   cmps   as   bids   b(   s   as   b(    (    s&   /usr/lib/python2.2/compiler/pyassem.pys   sorter s   (   s   ls   sorters   sort(   s   ls   sorter(    (    s&   /usr/lib/python2.2/compiler/pyassem.pys   xxx_sort s   
s	   FlowGraphc      s    t  Z  d   Z  d   Z % e d  Z > d   Z C d   Z F d Z H d   Z	 K d   Z
 N d	   Z W d
   Z l d   Z u d   Z  d   Z  d   Z  d   Z  d   Z RS(   Nc    sm     t    |  _ |  _  t  d  |  _  t i   |  _  |  i i |  i   |  i i |  i  d  S(   Ns   exit(	   s   Blocks   selfs   currents   entrys   exits   miscs   Sets   blockss   add(   s   self(    (    s&   /usr/lib/python2.2/compiler/pyassem.pys   __init__ s
   c    s     |  i o_  |  i o@  d Gt |  i  GH  d G|  i i GH! d G|  i i   GHn " t |  GHn # | |  _ d  S(   Ns   ends       nexts      (   s   selfs   _debugs   currents   reprs   nexts   get_childrens   block(   s   selfs   block(    (    s&   /usr/lib/python2.2/compiler/pyassem.pys
   startBlock s   c    sM   % 1 | t j o 2 |  i   } n ; |  i i |  < |  i |  d  S(   N(   s   blocks   Nones   selfs   newBlocks   currents   addNexts
   startBlock(   s   selfs   block(    (    s&   /usr/lib/python2.2/compiler/pyassem.pys	   nextBlock% s   	c    s-   > ? t    } @ |  i i |  A | Sd  S(   N(   s   Blocks   bs   selfs   blockss   add(   s   selfs   b(    (    s&   /usr/lib/python2.2/compiler/pyassem.pys   newBlock> s   c    s   C D |  i |  i  d  S(   N(   s   selfs
   startBlocks   exit(   s   self(    (    s&   /usr/lib/python2.2/compiler/pyassem.pys   startExitBlockC s   i    c    s   H I d |  _ d  S(   Ni   (   s   selfs   _debug(   s   self(    (    s&   /usr/lib/python2.2/compiler/pyassem.pys   _enable_debugH s   c    s   K L d |  _ d  S(   Ni    (   s   selfs   _debug(   s   self(    (    s&   /usr/lib/python2.2/compiler/pyassem.pys   _disable_debugK s   c    s   N O |  i o P d G| GHn Q | d d j o R |  i i |  i  n S t |  d j o t | d t  o T |  i i | d  n U |  i i	 |  d  S(   Ns   	i    s   RETURN_VALUEi   i   (
   s   selfs   _debugs   insts   currents
   addOutEdges   exits   lens
   isinstances   Blocks   emit(   s   selfs   inst(    (    s&   /usr/lib/python2.2/compiler/pyassem.pys   emitN s   *c    s   W [ ^ x\ |  i i   D^ ]H } _ | |  i j o
 ` q n a | i o b | i |  i  n q Wc t |  i h   } d | i
   e |  i | |  i  g |  i | j o h | i |  i  n j | Sd S(   sl   Return the blocks in reverse postorder

        i.e. each node appears before all of its successors
        N(   s   selfs   blockss   elementss   bs   exits   nexts   addNexts   dfs_postorders   entrys   orders   reverses
   fixupOrders   append(   s   selfs   bs   order(    (    s&   /usr/lib/python2.2/compiler/pyassem.pys   getBlocksInOrderW s    	
c    s0   l m r |  i | |  s |  i | |  d S(   s"   Fixup bad order introduced by DFS.N(   s   selfs   fixupOrderHonorNexts   blockss   default_nexts   fixupOrderForward(   s   selfs   blockss   default_next(    (    s&   /usr/lib/python2.2/compiler/pyassem.pys
   fixupOrderl s   c    s-  u | } h  } ~ x. t t |   D~ ] }  | | | | <q% W xt d t |  d  D ]}  | | }  | | d }	  | i p% | i d | j p | i d |	 j o
  q` n  | }  g  }  | }
  xM  |
 i o |
 i d | j o+  | i |
 i d   |
 i d }
 q W g  }  xM | D ]B }  t o | | | j p t   | i | | | f  qHW | i    | i    x% | D ] \ } }  | | | =qW | g | | | | d + x. t t |   D ] }  | | | | <qWq` Wd S(   s  Fix one problem with DFS.

        The DFS uses child block, but doesn't know about the special
        "next" block.  As a result, the DFS can order blocks so that a
        block isn't next to the right block for implicit control
        transfers.
        i    i   N(   s   indexs   ranges   lens   blockss   is   bs   ns   nexts   default_nexts   curs   chains   elts   appends   ls	   __debug__s   AssertionErrors   sorts   reverses   j(   s   selfs   blockss   default_nexts   indexs   bs   chains   is   js   ls   ns   elts   cur(    (    s&   /usr/lib/python2.2/compiler/pyassem.pys   fixupOrderHonorNextu s@   	 	 	6
			 !	
 	"
  	c    s     h  }  g  }  g  }  xr | D ]g }  t |  | | < | i |   | i o | i d | j o  | i |   g  } n q+ W | i |   x d o g  }  xt
 t |   D ] }  | | }  x | D ] }  x | i   D ] }  | | | j  o  d }  xM | i D ]? }	  |	 d d j o%  |	 d | j o  d } n n qDW | o
  qn  | i | | | f  n qWq Wq W | o  Pn  | d \ }
 }  t o | |
 j p t   | | }  | i |   | i |
 |  q W | 2 x8 | D ]- }  x! | D ] }  | i |  qfWqSWd S(   s(   Make sure all JUMP_FORWARDs jump forwardi    i   s   JUMP_FORWARDN(   s   indexs   chainss   curs   blockss   bs   lens   appends   nexts   default_nexts   constraintss   ranges   is   ls   get_childrens   cs	   forward_ps   instss   insts   goes_befores   a_chains	   __debug__s   AssertionErrors   removes   insert(   s   selfs   blockss   default_nexts   indexs   cs   bs   is   curs   ls   insts   goes_befores   a_chains	   forward_ps   chainss   constraints(    (    s&   /usr/lib/python2.2/compiler/pyassem.pys   fixupOrderForward sZ   			
 	! 
	 	
 	 		 	
*
 	
 	c    s     |  i i   Sd  S(   N(   s   selfs   blockss   elements(   s   self(    (    s&   /usr/lib/python2.2/compiler/pyassem.pys	   getBlocks s   c    s      |  i Sd S(   s/   Return nodes appropriate for use with dominatorN(   s   selfs   entry(   s   self(    (    s&   /usr/lib/python2.2/compiler/pyassem.pys   getRoot s   c    sJ     g  }  x- |  i   D ] }  | i | i    q W | Sd  S(   N(   s   ls   selfs	   getBlockss   bs   extends   getContainedGraphs(   s   selfs   bs   l(    (    s&   /usr/lib/python2.2/compiler/pyassem.pys   getContainedGraphs s
   	 	(   s   __name__s
   __module__s   __init__s
   startBlocks   Nones	   nextBlocks   newBlocks   startExitBlocks   _debugs   _enable_debugs   _disable_debugs   emits   getBlocksInOrders
   fixupOrders   fixupOrderHonorNexts   fixupOrderForwards	   getBlockss   getRoots   getContainedGraphs(    (    (    s&   /usr/lib/python2.2/compiler/pyassem.pys	   FlowGraph s    					).c    s      g  }  |  | |  < xJ |  i   D ]9 }  | i |  o
  q, n  | t | |  } q, W | i |    | Sd S(   s;   Depth-first search of tree rooted at b, return in postorderN(   s   orders   bs   seens   get_childrens   cs   has_keys   dfs_postorders   append(   s   bs   seens   cs   order(    (    s&   /usr/lib/python2.2/compiler/pyassem.pys   dfs_postorder s   	 	
s   Blockc      s    t  Z  d Z  d d  Z  d   Z  d   Z  d   Z d   Z d   Z d	   Z	 
d
   Z
 d d d d d f Z d   Z &d   Z +d   Z RS(   Ni    s    c    sq     g  |  _  t i   |  _  t i   |  _  | |  _  t i |  _	  g  |  _
  t i d t _ d  S(   Ni   (   s   selfs   instss   miscs   Sets   inEdgess   outEdgess   labels   Blocks   _counts   bids   next(   s   selfs   label(    (    s&   /usr/lib/python2.2/compiler/pyassem.pys   __init__ s   c    s=     |  i o  d |  i |  i f Sn  d |  i Sd  S(   Ns   <block %s id=%d>s   <block id=%d>(   s   selfs   labels   bid(   s   self(    (    s&   /usr/lib/python2.2/compiler/pyassem.pys   __repr__ s   c    sB     t  t |  i  }  d |  i |  i t i | d  f Sd  S(   Ns   <block %s %d:
%s>s   
(   s   maps   strs   selfs   instss   labels   bids   strings   join(   s   selfs   insts(    (    s&   /usr/lib/python2.2/compiler/pyassem.pys   __str__ s   c    sV     | d }  | d  d j o  |  i i | d  n  |  i i |  d  S(   Ni    i   s   JUMPi   (   s   insts   ops   selfs   outEdgess   adds   instss   append(   s   selfs   insts   op(    (    s&   /usr/lib/python2.2/compiler/pyassem.pys   emit s   c    s   |  i Sd  S(   N(   s   selfs   insts(   s   self(    (    s&   /usr/lib/python2.2/compiler/pyassem.pys   getInstructionss   c    s   |  i i |  d  S(   N(   s   selfs   inEdgess   adds   block(   s   selfs   block(    (    s&   /usr/lib/python2.2/compiler/pyassem.pys	   addInEdges   c    s   |  i i |  d  S(   N(   s   selfs   outEdgess   adds   block(   s   selfs   block(    (    s&   /usr/lib/python2.2/compiler/pyassem.pys
   addOutEdges   c    sP   
|  i i |  t o, t |  i  d j p t t t |  i   d  S(   Ni   (	   s   selfs   nexts   appends   blocks	   __debug__s   lens   AssertionErrors   maps   str(   s   selfs   block(    (    s&   /usr/lib/python2.2/compiler/pyassem.pys   addNext
s   s   RETURN_VALUEs   RAISE_VARARGSs   JUMP_ABSOLUTEs   JUMP_FORWARDs   CONTINUE_LOOPc    sp   y  |  i d \ } } Wn# !t t f j
 o "d Sn X#| |  i j o $g  |  _ n d S(   sL  Remove bogus edge for unconditional transfers

        Each block has a next edge that accounts for implicit control
        transfers, e.g. from a JUMP_IF_FALSE to the block that will be
        executed if the test is true.

        These edges must remain for the current assembler code to
        work. If they are removed, the dfs_postorder gets things in
        weird orders.  However, they shouldn't be there for other
        purposes, e.g. conversion to SSA form.  This method will
        remove the next edge when it follows an unconditional control
        transfer.
        iN(   s   selfs   instss   ops   args
   IndexErrors
   ValueErrors   _uncond_transfers   next(   s   selfs   args   op(    (    s&   /usr/lib/python2.2/compiler/pyassem.pys	   pruneNexts   c    s`   &'|  i o |  i d |  i j o (|  i i |  i d  n )|  i i   |  i Sd  S(   Ni    (   s   selfs   nexts   outEdgess   removes   elements(   s   self(    (    s&   /usr/lib/python2.2/compiler/pyassem.pys   get_children&s   $c    s   +01g  } 2xk |  i D2]] } 3t |  d j o
 4q n 5| d } 6t | d  o 7| i | i  n q W8| Sd S(   s   Return all graphs contained within this block.

        For example, a MAKE_FUNCTION block will contain a reference to
        the graph for the function body.
        i   s   graphN(	   s	   containeds   selfs   instss   insts   lens   ops   hasattrs   appends   graph(   s   selfs	   containeds   insts   op(    (    s&   /usr/lib/python2.2/compiler/pyassem.pys   getContainedGraphs+s   	 	
(   s   __name__s
   __module__s   _counts   __init__s   __repr__s   __str__s   emits   getInstructionss	   addInEdges
   addOutEdges   addNexts   _uncond_transfers	   pruneNexts   get_childrens   getContainedGraphs(    (    (    s&   /usr/lib/python2.2/compiler/pyassem.pys   Block s   			s   RAWs   FLATs   CONVs   DONEs   PyFlowGraphc      s  Bt  Z Ce i Z Ef  d e d  Z cd   Z fd   Z kd   Z od   Z	 rd   Z
 ud   Z e d	  Z d
   Z d   Z e i   Z x+ e i D] Z e i e i e  q We i   Z x+ e i D] Z e i e i e  q Wd   Z d   Z d   Z h  Z d   Z d   Z e Z e Z d   Z d   Z  e  Z! e  Z" e  Z# e  Z$ e  Z%  e  Z& !e  Z' "e  Z( #e  Z) $e  Z* &d   Z+ *e+ Z, +e+ Z- -d   Z. 1e/ e i0  Z1 2d   Z2 7xR e3   i4   D7]> \ Z5 Z6 8e5 d  d j o 9e5 d Z :e6 e e <n q=W;[5 [6 [ =d   Z7 Qh  Z8 Rx4 e9 e: e i   DR] Z; Se; e8 e i e; <qWT[; Vd   Z< fd   Z= RS(   Ni    c    sP  EF|  i   G| |  _ H| |  _ It |  _ J| |  _ Kt |  |  _ L| |  _	 M| o Nt t B|  _ n Pd |  _ Qg  |  _ Rg  |  _ Ug  |  _ Vg  |  _ [g  |  _ \t |  p g  |  _ ]x] t t |  i   D]]C } ^|  i | } _t | t  o `| i   |  i | <n q Wat |  _ d  S(   Ni    (   s   selfs
   super_inits   names   filenames   Nones	   docstrings   argss   getArgCounts   argcounts   klasss	   optimizeds   CO_OPTIMIZEDs   CO_NEWLOCALSs   flagss   constss   namess   freevarss   cellvarss   closures   lists   varnamess   ranges   lens   is   vars
   isinstances   TupleArgs   getNames   RAWs   stage(   s   selfs   names   filenames   argss	   optimizeds   klasss   is   var(    (    s&   /usr/lib/python2.2/compiler/pyassem.pys   __init__Es,   
 	c    s   cd| |  _ d  S(   N(   s   docs   selfs	   docstring(   s   selfs   doc(    (    s&   /usr/lib/python2.2/compiler/pyassem.pys   setDocstringcs   c    sA   fg|  i | B|  _ h| t j o i|  i d |  _ n d  S(   Ni   (   s   selfs   flagss   flags
   CO_VARARGSs   argcount(   s   selfs   flag(    (    s&   /usr/lib/python2.2/compiler/pyassem.pys   setFlagfs   c    s#   kl|  i | @o md Sn d  S(   Ni   (   s   selfs   flagss   flag(   s   selfs   flag(    (    s&   /usr/lib/python2.2/compiler/pyassem.pys	   checkFlagks   c    s   opt  |  |  _ d  S(   N(   s   lists   namess   selfs   freevars(   s   selfs   names(    (    s&   /usr/lib/python2.2/compiler/pyassem.pys   setFreeVarsos   c    s   rs| |  _ d  S(   N(   s   namess   selfs   cellvars(   s   selfs   names(    (    s&   /usr/lib/python2.2/compiler/pyassem.pys   setCellVarsrs   c    s   uvw|  i t j o x|  i   y|  i   n z|  i t j o {|  i   n ||  i t j o }|  i   n ~|  i t	 j o |  i
   Sn t d  d S(   s   Get a Python code objects   inconsistent PyFlowGraph stateN(   s   selfs   stages   RAWs   computeStackDepths   flattenGraphs   FLATs   convertArgss   CONVs   makeByteCodes   DONEs   newCodeObjects   RuntimeError(   s   self(    (    s&   /usr/lib/python2.2/compiler/pyassem.pys   getCodeus   c    s   | o t i } | t _ n d } x |  i D] } | d } | d j o Hn t	 |  d j o% d Gd | G| GH| d } n* d Gd | G| G| d GH| d } q? W| o | t _ n d  S(   Ni    s
   SET_LINENOi   s   	s   %3di   (
   s   ios   syss   stdouts   saves   pcs   selfs   instss   ts   opnames   len(   s   selfs   ios   pcs   ts   saves   opname(    (    s&   /usr/lib/python2.2/compiler/pyassem.pys   dumps    
	 	
c    s   h   t } x0   i   D] } t | i     | <q( Wh        d       i
 d    _ d S(   s   Compute the max stack depth.

        Approach is to compute the stack effect of each basic block.
        Then find the path through the code with the largest total
        effect.
        c    s    i |   o | Sn d  |  <|   |  } |  i   } | o> t g  i } | D] } |  | |   ql ~  Sn3 |  i d j o   i |  Sn | Sd  S(   Ni   s   exit(   s   seens   has_keys   bs   ds   depths   get_childrens   childrens   maxs   appends   _[1]s   cs	   max_depths   labels   selfs   exit(   s   bs   ds   _[1]s   cs   children(   s   depths   seens   selfs	   max_depth(    s&   /usr/lib/python2.2/compiler/pyassem.pys	   max_depths   
 *i    N(   s   depths   Nones   exits   selfs	   getBlockss   bs	   findDepths   getInstructionss   seens	   max_depths   entrys	   stacksize(   s   selfs   bs   exits   seens   depths	   max_depth(    (   s   selfs   seens   depths	   max_depths&   /usr/lib/python2.2/compiler/pyassem.pys   computeStackDepths   		 		c    s  t  o |  i t j p t  g  |  _ } d } h  } h  } x |  i	   D] } | | | <x[ | i   D]J } | i |  t |  d j o | d } n | d } q W| | | <qb Wd } x t t |   D] } | | } t |  d j o | d } n | d } | d }
 |  i i |
  o5 | d } | | | }	 |
 |	 f | | <n6 |  i i |
  o |
 | | d f | | <n q	Wt |  _ d S(   s-   Arrange the blocks in order and resolve jumpsi    i   i   N(   s	   __debug__s   selfs   stages   RAWs   AssertionErrors   instss   pcs   begins   ends   getBlocksInOrders   bs   getInstructionss   insts   appends   lens   ranges   is   opnames   hasjrels   has_elts   opargs   offsets   hasjabss   FLAT(   s   selfs   begins   bs   ends   instss   pcs   is   opargs   insts   offsets   opname(    (    s&   /usr/lib/python2.2/compiler/pyassem.pys   flattenGraphs>   !			 	 		 	#c    s  t  o |  i t j p t  |  i i d |  i  |  i   x t	 t
 |  i   D] } |  i | } t
 |  d j oX | \ } } |  i i | t  } | o# | | |  |  f |  i | <n n qf Wt |  _ d S(   s0   Convert arguments from symbolic to concrete formi    i   N(   s	   __debug__s   selfs   stages   FLATs   AssertionErrors   constss   inserts	   docstrings   sort_cellvarss   ranges   lens   instss   is   ts   opnames   opargs   _converterss   gets   Nones   convs   CONV(   s   selfs   convs   is   opargs   ts   opname(    (    s&   /usr/lib/python2.2/compiler/pyassem.pys   convertArgss   ! 	
+c    s   h  } x! |  i D] } d | | <q Wg  i } |  i D]' } | i |  o | |  n qJ ~ |  _ x |  i D] } | | =q W|  i | i   |  _ |  i |  i	 |  _
 d S(   sH   Sort cellvars in the order of varnames and prune from freevars.
        i   N(   s   cellss   selfs   cellvarss   names   appends   _[1]s   varnamess   has_keys   keyss   freevarss   closure(   s   selfs   _[1]s   cellss   name(    (    s&   /usr/lib/python2.2/compiler/pyassem.pys   sort_cellvarss   	 	 	- 	c    s   t  |  } xS t t |   D]< }  | t  | |  j o | | | j o | Sn q+ Wt |  } | i |  | Sd S(   s  Return index of name in list, appending if necessary

        This routine uses a list instead of a dictionary, because a
        dictionary can't store two different keys if the keys have the
        same value but different types, e.g. 2 and 2L.  The compiler
        must treat these two separately, so it does an explicit type
        comparison before comparing the values.
        N(	   s   types   names   ts   ranges   lens   lists   is   ends   append(   s   selfs   names   lists   ends   is   t(    (    s&   /usr/lib/python2.2/compiler/pyassem.pys   _lookupNames    	+c    sC   t  | d  o 	| i   } n 
|  i | |  i  Sd  S(   Ns   getCode(   s   hasattrs   args   getCodes   selfs   _lookupNames   consts(   s   selfs   arg(    (    s&   /usr/lib/python2.2/compiler/pyassem.pys   _convert_LOAD_CONSTs   c    s3   |  i | |  i  |  i | |  i  Sd  S(   N(   s   selfs   _lookupNames   args   namess   varnames(   s   selfs   arg(    (    s&   /usr/lib/python2.2/compiler/pyassem.pys   _convert_LOAD_FASTs   c    sJ   |  i t j o |  i | |  i  n |  i | |  i  Sd  S(   N(   s   selfs   klasss   Nones   _lookupNames   args   varnamess   names(   s   selfs   arg(    (    s&   /usr/lib/python2.2/compiler/pyassem.pys   _convert_LOAD_NAMEs   c    sJ   |  i t j o |  i | |  i  n |  i | |  i  Sd  S(   N(   s   selfs   klasss   Nones   _lookupNames   args   varnamess   names(   s   selfs   arg(    (    s&   /usr/lib/python2.2/compiler/pyassem.pys   _convert_NAMEs   c    sI   &'|  i | |  i  (|  i | |  i  )|  i | |  i  Sd  S(   N(   s   selfs   _lookupNames   args   namess   varnamess   closure(   s   selfs   arg(    (    s&   /usr/lib/python2.2/compiler/pyassem.pys   _convert_DEREF&s   c    s3   -.|  i | |  i  /|  i | |  i  Sd  S(   N(   s   selfs   _lookupNames   args   varnamess   closure(   s   selfs   arg(    (    s&   /usr/lib/python2.2/compiler/pyassem.pys   _convert_LOAD_CLOSURE-s   c    s   23|  i i |  Sd  S(   N(   s   selfs   _cmps   indexs   arg(   s   selfs   arg(    (    s&   /usr/lib/python2.2/compiler/pyassem.pys   _convert_COMPARE_OP2s   i	   s	   _convert_c    sK  =>t  o |  i t j p t  ?t   |  _ } @x |  i D@] } A| d } Bt
 |  d j o C| i |  i |  n E| d } F| d j o G| i |  n Ht |  \ } } Iy! J| i |  i | | |  Wn? Kt j
 o0 L| G| GHM|  i | G| G| GHN  n XqD WOt |  _ d  S(   Ni    i   s
   SET_LINENO(   s	   __debug__s   selfs   stages   CONVs   AssertionErrors   LineAddrTables   lnotabs   instss   ts   opnames   lens   addCodes   opnums   opargs   nextLines   twobytes   his   los
   ValueErrors   DONE(   s   selfs   los   opargs   his   ts   lnotabs   opname(    (    s&   /usr/lib/python2.2/compiler/pyassem.pys   makeByteCode=s$   ! 	!c    s   VWt  o |  i t j p t  X|  i t @d j o Yd } n [t |  i	  } \|  i
 } ]|  i t @o ^| d } n _t i | | |  i |  i `|  i i   |  i   at |  i  t |  i	  b|  i |  i |  i i c|  i i   t |  i  dt |  i   Sd  S(   Ni    i   (   s	   __debug__s   selfs   stages   DONEs   AssertionErrors   flagss   CO_NEWLOCALSs   nlocalss   lens   varnamess   argcounts   CO_VARKEYWORDSs   news   codes	   stacksizes   lnotabs   getCodes	   getConstss   tuples   namess   filenames   names	   firstlines   getTables   freevarss   cellvars(   s   selfs   nlocalss   argcount(    (    s&   /usr/lib/python2.2/compiler/pyassem.pys   newCodeObjectVs   !c    sp   fklg  } mxJ |  i Dm]< } nt | t  o o| i   } n p| i |  q Wqt |  Sd S(   s   Return a tuple for the const slot of the code object

        Must convert references to code (MAKE_FUNCTION) to code
        objects recursively.
        N(	   s   ls   selfs   constss   elts
   isinstances   PyFlowGraphs   getCodes   appends   tuple(   s   selfs   ls   elt(    (    s&   /usr/lib/python2.2/compiler/pyassem.pys	   getConstsfs   	 	(>   s   __name__s
   __module__s	   FlowGraphs   __init__s
   super_inits   Nones   setDocstrings   setFlags	   checkFlags   setFreeVarss   setCellVarss   getCodes   dumps   computeStackDepths   flattenGraphs   miscs   Sets   hasjrels   diss   is   adds   opnames   hasjabss   convertArgss   sort_cellvarss   _lookupNames   _converterss   _convert_LOAD_CONSTs   _convert_LOAD_FASTs   _convert_STORE_FASTs   _convert_DELETE_FASTs   _convert_LOAD_NAMEs   _convert_NAMEs   _convert_STORE_NAMEs   _convert_DELETE_NAMEs   _convert_IMPORT_NAMEs   _convert_IMPORT_FROMs   _convert_STORE_ATTRs   _convert_LOAD_ATTRs   _convert_DELETE_ATTRs   _convert_LOAD_GLOBALs   _convert_STORE_GLOBALs   _convert_DELETE_GLOBALs   _convert_DEREFs   _convert_LOAD_DEREFs   _convert_STORE_DEREFs   _convert_LOAD_CLOSUREs   lists   cmp_ops   _cmps   _convert_COMPARE_OPs   localss   itemss   names   objs   makeByteCodes   opnums   ranges   lens   nums   newCodeObjects	   getConsts(    (    (    s&   /usr/lib/python2.2/compiler/pyassem.pys   PyFlowGraphBsv   	! 	 																 	 	c    s&   st|  d  d j o ud Sn d  S(   Ni   s   JUMPi   (   s   opname(   s   opname(    (    s&   /usr/lib/python2.2/compiler/pyassem.pys   isJumpss   s   TupleArgc      s8   wt  Z d  Z xyd   Z |d   Z ~d   Z RS(   s:   Helper for marking func defs with nested tuples in arglistc    s   yz| |  _  {| |  _ d  S(   N(   s   counts   selfs   names(   s   selfs   counts   names(    (    s&   /usr/lib/python2.2/compiler/pyassem.pys   __init__ys   c    s   |}d |  i |  i f Sd  S(   Ns   TupleArg(%s, %s)(   s   selfs   counts   names(   s   self(    (    s&   /usr/lib/python2.2/compiler/pyassem.pys   __repr__|s   c    s   ~d |  i Sd  S(   Ns   .%d(   s   selfs   count(   s   self(    (    s&   /usr/lib/python2.2/compiler/pyassem.pys   getName~s   (   s   __name__s
   __module__s   __doc__s   __init__s   __repr__s   getName(    (    (    s&   /usr/lib/python2.2/compiler/pyassem.pys   TupleArgws   c    s   t  |   } |  oZ xP |  D]E } t | t  o, t  t i | i   } | | } n q& Wn | Sd  S(   N(
   s   lens   argss   argcounts   args
   isinstances   TupleArgs   miscs   flattens   namess   numNames(   s   argss   args   numNamess   argcount(    (    s&   /usr/lib/python2.2/compiler/pyassem.pys   getArgCounts   

 	c    sA   t  o t |   t i j p t  t |  d  Sd S(   s/   Convert an int argument into high and low bytesi   N(   s	   __debug__s   types   vals   typess   IntTypes   AssertionErrors   divmod(   s   val(    (    s&   /usr/lib/python2.2/compiler/pyassem.pys   twobytes   's   LineAddrTablec      sP   t  Z d  Z d   Z d   Z d   Z d   Z d   Z RS(   s(  lnotab

    This class builds the lnotab, which is documented in compile.c.
    Here's a brief recap:

    For each SET_LINENO instruction after the first one, two bytes are
    added to lnotab.  (In some cases, multiple two-byte entries are
    added.)  The first byte is the distance in bytes between the
    instruction for the last SET_LINENO and the current SET_LINENO.
    The second byte is offset in line numbers.  If either offset is
    greater than 255, multiple two-byte entries are added -- see
    compile.c for the delicate details.
    c    sO   g  |  _ d |  _ d |  _ d |  _ d |  _ g  |  _ d  S(   Ni    (   s   selfs   codes
   codeOffsets	   firstlines   lastlines   lastoffs   lnotab(   s   self(    (    s&   /usr/lib/python2.2/compiler/pyassem.pys   __init__s   c    sP   x* | D] } |  i i t |   q W|  i t |  |  _ d  S(   N(   s   argss   args   selfs   codes   appends   chrs
   codeOffsets   len(   s   selfs   argss   arg(    (    s&   /usr/lib/python2.2/compiler/pyassem.pys   addCodes   
 	c    sV  |  i d j o | |  _ | |  _ n!|  i |  i } | |  i } | d j o |  i i	 } x9 | d j o( | d  | d  | d 8} qz WxB | d j o1 | |  | d  | d 8} d } q W| d j p
 | d j o | |  | |  n | |  _ |  i |  _ n d  S(   Ni    i   (   s   selfs	   firstlines   linenos   lastlines
   codeOffsets   lastoffs   addrs   lines   lnotabs   appends   push(   s   selfs   linenos   pushs   lines   addr(    (    s&   /usr/lib/python2.2/compiler/pyassem.pys   nextLines(     c    s   t  i |  i d  Sd  S(   Ns    (   s   strings   joins   selfs   code(   s   self(    (    s&   /usr/lib/python2.2/compiler/pyassem.pys   getCodes   c    s&   t  i t t |  i  d  Sd  S(   Ns    (   s   strings   joins   maps   chrs   selfs   lnotab(   s   self(    (    s&   /usr/lib/python2.2/compiler/pyassem.pys   getTables   (   s   __name__s
   __module__s   __doc__s   __init__s   addCodes   nextLines   getCodes   getTable(    (    (    s&   /usr/lib/python2.2/compiler/pyassem.pys   LineAddrTables    s   StackDepthTrackerc      s  t  Z d d  Z h  d d <d d <d d <d d <d	 d
 <d d <d	 d <d	 d <d d <d d <d	 d <d	 d <d d <d d <d	 d <d d <d d <d d <d	 d <d d <d	 d <d d <d d <d d <d d <d d  <d d! <d d" <d d# <d d$ <d% d& <d% d' <d d( <Z d) d f d* d f g Z d+   Z d,   Z  d-   Z "d.   Z %d/   Z	 'd0   Z
 )d1   Z +d2   Z -d3   Z 0d4   Z 5d5   Z RS(6   Ni    c    su  d } d } xO| D]D} | d }	 | o | Gn |  i i |	 t	  } | t	 j	 o | | } n xR |  i D]D \ } } |	 t |   | j o | } | | } Pn q W| t	 j oD t |  |	 t	  }
 |
 t	 j	 o | |
 | d  } n n | | j o | } n | o | G| GHn q W| Sd  S(   Ni    i   (   s   depths   maxDepths   instss   is   opnames   debugs   selfs   effects   gets   Nones   deltas   patternss   pats	   pat_deltas   lens   getattrs   meth(   s   selfs   instss   debugs   pats   is	   pat_deltas   depths   maxDepths   deltas   opnames   meth(    (    s&   /usr/lib/python2.2/compiler/pyassem.pys	   findDepths2   		
 	
 	
is   POP_TOPi   s   DUP_TOPs   SLICE+1s   SLICE+2is   SLICE+3s   STORE_SLICE+0s   STORE_SLICE+1s   STORE_SLICE+2is   STORE_SLICE+3s   DELETE_SLICE+0s   DELETE_SLICE+1s   DELETE_SLICE+2s   DELETE_SLICE+3s   STORE_SUBSCRs   DELETE_SUBSCRs
   PRINT_ITEMs   RETURN_VALUEs	   EXEC_STMTs   BUILD_CLASSs
   STORE_NAMEs
   STORE_ATTRs   DELETE_ATTRs   STORE_GLOBALs	   BUILD_MAPs
   COMPARE_OPs
   STORE_FASTs   IMPORT_STARs   IMPORT_NAMEs   IMPORT_FROMs	   LOAD_ATTRi   s   SETUP_EXCEPTs   SETUP_FINALLYs   FOR_ITERs   BINARY_s   LOAD_c    s   | d Sd  S(   Ni   (   s   count(   s   selfs   count(    (    s&   /usr/lib/python2.2/compiler/pyassem.pys   UNPACK_SEQUENCEs   c    s   | d Sd  S(   Ni   (   s   count(   s   selfs   count(    (    s&   /usr/lib/python2.2/compiler/pyassem.pys   BUILD_TUPLEs   c    s    !| d Sd  S(   Ni   (   s   count(   s   selfs   count(    (    s&   /usr/lib/python2.2/compiler/pyassem.pys
   BUILD_LIST s   c    s/   "#t  | d  \ } } $| | d Sd  S(   Ni   i   (   s   divmods   argcs   his   lo(   s   selfs   argcs   his   lo(    (    s&   /usr/lib/python2.2/compiler/pyassem.pys   CALL_FUNCTION"s   c    s   %&|  i |  d Sd  S(   Ni   (   s   selfs   CALL_FUNCTIONs   argc(   s   selfs   argc(    (    s&   /usr/lib/python2.2/compiler/pyassem.pys   CALL_FUNCTION_VAR%s   c    s   '(|  i |  d Sd  S(   Ni   (   s   selfs   CALL_FUNCTIONs   argc(   s   selfs   argc(    (    s&   /usr/lib/python2.2/compiler/pyassem.pys   CALL_FUNCTION_KW's   c    s   )*|  i |  d Sd  S(   Ni   (   s   selfs   CALL_FUNCTIONs   argc(   s   selfs   argc(    (    s&   /usr/lib/python2.2/compiler/pyassem.pys   CALL_FUNCTION_VAR_KW)s   c    s   +,| Sd  S(   N(   s   argc(   s   selfs   argc(    (    s&   /usr/lib/python2.2/compiler/pyassem.pys   MAKE_FUNCTION+s   c    s   -/| Sd  S(   N(   s   argc(   s   selfs   argc(    (    s&   /usr/lib/python2.2/compiler/pyassem.pys   MAKE_CLOSURE-s   c    s=   01| d j o 2d Sn 3| d j o 4d Sn d  S(   Ni   ii   i(   s   argc(   s   selfs   argc(    (    s&   /usr/lib/python2.2/compiler/pyassem.pys   BUILD_SLICE0s   c    s   56| Sd  S(   N(   s   argc(   s   selfs   argc(    (    s&   /usr/lib/python2.2/compiler/pyassem.pys   DUP_TOPX5s   (   s   __name__s
   __module__s	   findDepths   effects   patternss   UNPACK_SEQUENCEs   BUILD_TUPLEs
   BUILD_LISTs   CALL_FUNCTIONs   CALL_FUNCTION_VARs   CALL_FUNCTION_KWs   CALL_FUNCTION_VAR_KWs   MAKE_FUNCTIONs   MAKE_CLOSUREs   BUILD_SLICEs   DUP_TOPX(    (    (    s&   /usr/lib/python2.2/compiler/pyassem.pys   StackDepthTrackers   	 3&(   s   __doc__s   diss   news   strings   syss   typess   compilers   miscs   compiler.constss   CO_OPTIMIZEDs   CO_NEWLOCALSs
   CO_VARARGSs   CO_VARKEYWORDSs   xxx_sorts	   FlowGraphs   dfs_postorders   Blocks   RAWs   FLATs   CONVs   DONEs   PyFlowGraphs   isJumps   TupleArgs   getArgCounts   twobytes   LineAddrTables   StackDepthTrackers	   findDepth(   s   FLATs   strings   CONVs   twobytes   LineAddrTables   miscs   syss   xxx_sorts   DONEs   CO_NEWLOCALSs   isJumps   PyFlowGraphs   Blocks	   findDepths   CO_OPTIMIZEDs   StackDepthTrackers   getArgCounts
   CO_VARARGSs   CO_VARKEYWORDSs   RAWs   dfs_postorders   typess   news   TupleArgs	   FlowGraphs   dis(    (    s&   /usr/lib/python2.2/compiler/pyassem.pys   ? s0   "Y				 2
	Bg