Author: Manuel Jacob
Branch: remove-iter-smm
Changeset: r64419:49537825a626
Date: 2013-05-22 01:07 +0200
http://bitbucket.org/pypy/pypy/changeset/49537825a626/

Log:    Remove iterators from multi-method table.

diff --git a/pypy/objspace/std/iterobject.py b/pypy/objspace/std/iterobject.py
--- a/pypy/objspace/std/iterobject.py
+++ b/pypy/objspace/std/iterobject.py
@@ -1,22 +1,11 @@
 """Generic iterator implementations"""
 from pypy.interpreter import gateway
+from pypy.interpreter.baseobjspace import W_Root
 from pypy.interpreter.error import OperationError
-from pypy.objspace.std.model import registerimplementation, W_Object
-from pypy.objspace.std.register_all import register_all
 from pypy.objspace.std.stdtypedef import StdTypeDef
 
 
-class W_AbstractIterObject(W_Object):
-    __slots__ = ()
-
-    def descr_iter(self, space):
-        return self
-
-    def descr_next(self, space):
-        raise NotImplementedError
-
-
-class W_AbstractSeqIterObject(W_AbstractIterObject):
+class W_AbstractSeqIterObject(W_Root):
     def __init__(w_self, w_seq, index=0):
         if index < 0:
             index = 0
@@ -33,6 +22,12 @@
             w_len = space.wrap(0)
         return w_len
 
+    def descr_iter(self, space):
+        return self
+
+    def descr_next(self, space):
+        raise NotImplementedError
+
     def descr_reduce(self, space):
         """
         XXX to do: remove this __reduce__ method and do
@@ -71,7 +66,6 @@
     __length_hint__ = 
gateway.interp2app(W_AbstractSeqIterObject.descr_length_hint),
     )
 W_AbstractSeqIterObject.typedef.acceptable_as_base_class = False
-iter_typedef = W_AbstractSeqIterObject.typedef
 
 
 class W_SeqIterObject(W_AbstractSeqIterObject):
@@ -132,7 +126,7 @@
         return w_item
 
 
-class W_ReverseSeqIterObject(W_Object):
+class W_ReverseSeqIterObject(W_Root):
     def __init__(w_self, space, w_seq, index=-1):
         w_self.w_seq = w_seq
         w_self.w_len = space.len(w_seq)
@@ -192,10 +186,3 @@
     __length_hint__ = 
gateway.interp2app(W_ReverseSeqIterObject.descr_length_hint),
 )
 W_ReverseSeqIterObject.typedef.acceptable_as_base_class = False
-reverse_iter_typedef = W_ReverseSeqIterObject.typedef
-
-
-registerimplementation(W_SeqIterObject)
-registerimplementation(W_FastListIterObject)
-registerimplementation(W_FastTupleIterObject)
-registerimplementation(W_ReverseSeqIterObject)
diff --git a/pypy/objspace/std/model.py b/pypy/objspace/std/model.py
--- a/pypy/objspace/std/model.py
+++ b/pypy/objspace/std/model.py
@@ -47,7 +47,6 @@
             from pypy.objspace.std.longtype   import long_typedef
             from pypy.objspace.std.unicodetype import unicode_typedef
             from pypy.objspace.std.nonetype import none_typedef
-            from pypy.objspace.std.iterobject import iter_typedef
         self.pythontypes = [value for key, value in result.__dict__.items()
                             if not key.startswith('_')]   # don't look
 
@@ -83,6 +82,7 @@
         self.pythontypes.append(dictmultiobject.W_DictMultiObject.typedef)
         self.pythontypes.append(setobject.W_SetObject.typedef)
         self.pythontypes.append(setobject.W_FrozensetObject.typedef)
+        self.pythontypes.append(iterobject.W_AbstractSeqIterObject.typedef)
 
         # the set of implementation types
         self.typeorder = {
@@ -98,10 +98,6 @@
             longobject.W_LongObject: [],
             noneobject.W_NoneObject: [],
             complexobject.W_ComplexObject: [],
-            iterobject.W_SeqIterObject: [],
-            iterobject.W_FastListIterObject: [],
-            iterobject.W_FastTupleIterObject: [],
-            iterobject.W_ReverseSeqIterObject: [],
             unicodeobject.W_UnicodeObject: [],
             pypy.interpreter.pycode.PyCode: [],
             pypy.interpreter.special.Ellipsis: [],
_______________________________________________
pypy-commit mailing list
[email protected]
http://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to