[pypy-svn] r67573 - in pypy/branch/less-resumedata/pypy/module: __builtin__ _pickle_support

fijal at codespeak.net fijal at codespeak.net
Tue Sep 8 13:48:40 CEST 2009


Author: fijal
Date: Tue Sep  8 13:48:39 2009
New Revision: 67573

Modified:
   pypy/branch/less-resumedata/pypy/module/__builtin__/functional.py
   pypy/branch/less-resumedata/pypy/module/_pickle_support/__init__.py
   pypy/branch/less-resumedata/pypy/module/_pickle_support/maker.py
Log:
Port 67566 from trunk


Modified: pypy/branch/less-resumedata/pypy/module/__builtin__/functional.py
==============================================================================
--- pypy/branch/less-resumedata/pypy/module/__builtin__/functional.py	(original)
+++ pypy/branch/less-resumedata/pypy/module/__builtin__/functional.py	Tue Sep  8 13:48:39 2009
@@ -395,14 +395,17 @@
     descr_next.unwrap_spec = ["self", ObjSpace]
 
     def descr___reduce__(self, space):
+        from pypy.interpreter.mixedmodule import MixedModule
+        w_mod    = space.getbuiltinmodule('_pickle_support')
+        mod      = space.interp_w(MixedModule, w_mod)
+        w_new_inst = mod.get('enumerate_new')
         w_info = space.newtuple([self.w_iter, self.w_index])
-        return space.newtuple([space.wrap(_make_enumerate), w_info])
+        return space.newtuple([w_new_inst, w_info])
     descr___reduce__.unwrap_spec = ["self", ObjSpace]
 
+# exported through _pickle_support
 def _make_enumerate(space, w_iter, w_index):
     return space.wrap(W_Enumerate(w_iter, w_index))
-_make_enumerate.unwrap_spec = [ObjSpace, W_Root, W_Root]
-_make_enumerate = interp2app(_make_enumerate)
 
 W_Enumerate.typedef = TypeDef("enumerate",
     __new__=interp2app(W_Enumerate.descr___new__.im_func),
@@ -448,9 +451,13 @@
     descr_next.unwrap_spec = ["self", ObjSpace]
 
     def descr___reduce__(self, space):
+        from pypy.interpreter.mixedmodule import MixedModule
+        w_mod    = space.getbuiltinmodule('_pickle_support')
+        mod      = space.interp_w(MixedModule, w_mod)
+        w_new_inst = mod.get('reversed_new')
         info_w = [self.w_sequence, space.wrap(self.remaining)]
         w_info = space.newtuple(info_w)
-        return space.newtuple([space.wrap(_make_reversed), w_info])
+        return space.newtuple([w_new_inst, w_info])
     descr___reduce__.unwrap_spec = ["self", ObjSpace]
 
 W_ReversedIterator.typedef = TypeDef("reversed",
@@ -459,14 +466,14 @@
     __reduce__=interp2app(W_ReversedIterator.descr___reduce__),
 )
 
+# exported through _pickle_support
 def _make_reversed(space, w_seq, w_remaining):
     w_type = space.gettypeobject(W_ReversedIterator.typedef)
     iterator = space.allocate_instance(W_ReversedIterator, w_type)
     iterator.w_sequence = w_seq
     iterator.remaining = space.int_w(w_remaining)
     return space.wrap(iterator)
-_make_reversed.unwrap_spec = [ObjSpace, W_Root, W_Root]
-_make_reversed = interp2app(_make_reversed)
+
 
 
 class W_XRange(Wrappable):

Modified: pypy/branch/less-resumedata/pypy/module/_pickle_support/__init__.py
==============================================================================
--- pypy/branch/less-resumedata/pypy/module/_pickle_support/__init__.py	(original)
+++ pypy/branch/less-resumedata/pypy/module/_pickle_support/__init__.py	Tue Sep  8 13:48:39 2009
@@ -22,4 +22,6 @@
         'xrangeiter_new': 'maker.xrangeiter_new',
         'builtin_code': 'maker.builtin_code',
         'builtin_function' : 'maker.builtin_function',
+        'enumerate_new': 'maker.enumerate_new',
+        'reversed_new': 'maker.reversed_new'
     }

Modified: pypy/branch/less-resumedata/pypy/module/_pickle_support/maker.py
==============================================================================
--- pypy/branch/less-resumedata/pypy/module/_pickle_support/maker.py	(original)
+++ pypy/branch/less-resumedata/pypy/module/_pickle_support/maker.py	Tue Sep  8 13:48:39 2009
@@ -100,6 +100,17 @@
 builtin_function.unwrap_spec = [ObjSpace, str]
 
 
+def enumerate_new(space, w_iter, w_index):
+    from pypy.module.__builtin__.functional import _make_enumerate
+    return _make_enumerate(space, w_iter, w_index)
+enumerate_new.unwrap_spec = [ObjSpace, W_Root, W_Root]
+
+def reversed_new(space, w_seq, w_remaining):
+    from pypy.module.__builtin__.functional import _make_reversed
+    return _make_reversed(space, w_seq, w_remaining)
+reversed_new.unwrap_spec = [ObjSpace, W_Root, W_Root]
+
+
 # ___________________________________________________________________
 # Helper functions for internal use
 



More information about the Pypy-commit mailing list