[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