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