[pypy-commit] pypy all_ordered_dicts: translation fix: revert a few changes from d6780844383e

arigo noreply at buildbot.pypy.org
Tue Jan 13 19:10:27 CET 2015


Author: Armin Rigo <arigo at tunes.org>
Branch: all_ordered_dicts
Changeset: r75320:8152cc2d178c
Date: 2015-01-13 19:07 +0100
http://bitbucket.org/pypy/pypy/changeset/8152cc2d178c/

Log:	translation fix: revert a few changes from d6780844383e

diff --git a/pypy/objspace/std/dictmultiobject.py b/pypy/objspace/std/dictmultiobject.py
--- a/pypy/objspace/std/dictmultiobject.py
+++ b/pypy/objspace/std/dictmultiobject.py
@@ -725,6 +725,10 @@
             'setitem_untyped_%s' % dictimpl.__name__)
 
     class IterClassKeys(BaseKeyIterator):
+        def __init__(self, space, strategy, impl):
+            self.iterator = strategy.getiterkeys(impl)
+            BaseIteratorImplementation.__init__(self, space, strategy, impl)
+
         def next_key_entry(self):
             for key in self.iterator:
                 return wrapkey(self.space, key)
@@ -732,6 +736,10 @@
                 return None
 
     class IterClassValues(BaseValueIterator):
+        def __init__(self, space, strategy, impl):
+            self.iterator = strategy.getitervalues(impl)
+            BaseIteratorImplementation.__init__(self, space, strategy, impl)
+
         def next_value_entry(self):
             for value in self.iterator:
                 return wrapvalue(self.space, value)
@@ -739,6 +747,10 @@
                 return None
 
     class IterClassItems(BaseItemIterator):
+        def __init__(self, space, strategy, impl):
+            self.iterator = strategy.getiteritems(impl)
+            BaseIteratorImplementation.__init__(self, space, strategy, impl)
+
         if override_next_item is not None:
             next_item_entry = override_next_item
         else:
@@ -749,26 +761,29 @@
                 else:
                     return None, None
 
+    class IterClassReversed(BaseKeyIterator):
+        def __init__(self, space, strategy, impl):
+            self.iterator = strategy.getiterreversed(impl)
+            BaseIteratorImplementation.__init__(self, space, strategy, impl)
+
+        def next_key_entry(self):
+            for key in self.iterator:
+                return wrapkey(self.space, key)
+            else:
+                return None
+
     def iterkeys(self, w_dict):
-        it = IterClassKeys(self.space, self, w_dict)
-        it.iterator = self.getiterkeys(w_dict)
-        return it
+        return IterClassKeys(self.space, self, w_dict)
 
     def itervalues(self, w_dict):
-        it = IterClassValues(self.space, self, w_dict)
-        it.iterator = self.getitervalues(w_dict)
-        return it
+        return IterClassValues(self.space, self, w_dict)
 
     def iteritems(self, w_dict):
-        it = IterClassItems(self.space, self, w_dict)
-        it.iterator = self.getiteritems(w_dict)
-        return it
+        return IterClassItems(self.space, self, w_dict)
 
     if dictimpl.getiterreversed is not None:
         def iterreversed(self, w_dict):
-            it = IterClassKeys(self.space, self, w_dict)
-            it.iterator = self.getiterreversed(w_dict)
-            return it
+            return IterClassReversed(self.space, self, w_dict)
         dictimpl.iterreversed = iterreversed
 
     @jit.look_inside_iff(lambda self, w_dict, w_updatedict:
@@ -780,7 +795,6 @@
             # this is very similar to the general version, but the difference
             # is that it is specialized to call a specific next_item()
             iteritems = IterClassItems(self.space, self, w_dict)
-            iteritems.iterator = self.getiteritems(w_dict)
             w_key, w_value = iteritems.next_item()
             if w_key is None:
                 return


More information about the pypy-commit mailing list