[pypy-commit] pypy range-immutable: kill the silly speedups - sort and reverse force the list.

fijal noreply at buildbot.pypy.org
Thu Jul 21 16:49:42 CEST 2011


Author: Maciej Fijalkowski <fijall at gmail.com>
Branch: range-immutable
Changeset: r45824:d1de6e6a2438
Date: 2011-07-21 16:46 +0200
http://bitbucket.org/pypy/pypy/changeset/d1de6e6a2438/

Log:	kill the silly speedups - sort and reverse force the list.

diff --git a/pypy/objspace/std/rangeobject.py b/pypy/objspace/std/rangeobject.py
--- a/pypy/objspace/std/rangeobject.py
+++ b/pypy/objspace/std/rangeobject.py
@@ -161,29 +161,6 @@
                              space.wrap("pop index out of range"))
     raise FailedToImplement
 
-def list_reverse__RangeList(space, w_rangelist):
-    # probably somewhat useless, but well...
-    if w_rangelist.w_list is not None:
-        raise FailedToImplement
-    w_rangelist.start = w_rangelist.getitem_unchecked(w_rangelist.length-1)
-    w_rangelist.step = -w_rangelist.step
-
-def list_sort__RangeList_None_None_ANY(space, w_rangelist, w_cmp,
-                                       w_keyfunc, w_reverse):
-    # even more useless but fun
-    has_reverse = space.is_true(w_reverse)
-    if w_rangelist.w_list is not None:
-        raise FailedToImplement
-    if has_reverse:
-        factor = -1
-    else:
-        factor = 1
-    reverse = w_rangelist.step * factor < 0
-    if reverse:
-        w_rangelist.start = w_rangelist.getitem_unchecked(w_rangelist.length-1)
-        w_rangelist.step = -w_rangelist.step
-    return space.w_None
-
 
 class W_RangeIterObject(iterobject.W_AbstractSeqIterObject):
     pass
diff --git a/pypy/objspace/std/test/test_rangeobject.py b/pypy/objspace/std/test/test_rangeobject.py
--- a/pypy/objspace/std/test/test_rangeobject.py
+++ b/pypy/objspace/std/test/test_rangeobject.py
@@ -16,7 +16,6 @@
                         "W_ListObject" not in __pypy__.internal_repr(r))
             return f
         """)
-        cls.w_SORT_FORCES_LISTS = cls.space.wrap(False)
 
     def test_simple(self):
         result = []
@@ -44,12 +43,10 @@
 
     def test_empty_range(self):
         r = range(10, 10)
-        if not self.SORT_FORCES_LISTS:
             r.sort(reverse=True)
         assert len(r) == 0
         assert list(reversed(r)) == []
         assert r[:] == []
-        assert self.not_forced(r)
 
     def test_repr(self):
         r = range(5)
@@ -65,7 +62,6 @@
     def test_reverse(self):
         r = range(10)
         r.reverse()
-        assert self.not_forced(r)
         assert r == range(9, -1, -1)
         r = range(3)
         r[0] = 1
@@ -74,19 +70,14 @@
         assert r == [2, 1, 1]
 
     def test_sort(self):
-        if self.SORT_FORCES_LISTS:
-            skip("sort() forces these lists")
         r = range(10, -1, -1)
         r.sort()
-        assert self.not_forced(r)
         assert r == range(11)
         r = range(11)
         r.sort(reverse=True)
-        assert self.not_forced(r)
         assert r == range(10, -1, -1)
         r = range(100)
         r[0] = 999
-        assert not self.not_forced(r)
         r.sort()
         assert r == range(1, 100) + [999]
 


More information about the pypy-commit mailing list