Author: Lukas Diekmann <lukas.diekm...@uni-duesseldorf.de> Branch: list-strategies Changeset: r47552:0816546cd53e Date: 2011-09-14 13:33 +0200 http://bitbucket.org/pypy/pypy/changeset/0816546cd53e/
Log: refactored mul (general implementation in ListStrategy) diff --git a/pypy/objspace/std/listobject.py b/pypy/objspace/std/listobject.py --- a/pypy/objspace/std/listobject.py +++ b/pypy/objspace/std/listobject.py @@ -209,7 +209,9 @@ raise NotImplementedError def mul(self, w_list, times): - raise NotImplementedError + w_newlist = w_list.clone() + w_newlist.inplace_mul(times) + return w_newlist def inplace_mul(self, w_list, times): raise NotImplementedError @@ -270,13 +272,13 @@ raise IndexError def getslice(self, w_list, start, stop, step, length): - return W_ListObject(self.space, self.emptylist) + return W_ListObject(self.space, self.cached_emptylist_w) def getitems(self, w_list): - return self.emptylist + return self.cached_emptylist_w def getitems_copy(self, w_list): - return self.emptylist + return self.cached_emptylist_w def getstorage_copy(self, w_list): return self.erase(None) @@ -297,9 +299,6 @@ self.switch_to_correct_strategy(w_list, w_item) w_list.append(w_item) - def mul(self, w_list, times): - return w_list.clone() - def inplace_mul(self, w_list, times): return @@ -447,19 +446,6 @@ w_list.switch_to_object_strategy() w_list.append(w_item) - def mul(self, w_list, times): - #XXX is this faster? - if times == 0: - strategy = self.space.fromcache(IntegerListStrategy) - storage = strategy.erase([]) - else: - l = self._getitems_range(w_list, False) - l *= times - strategy = self.space.fromcache(IntegerListStrategy) - storage = strategy.erase(l) - w_newlist = W_ListObject.from_storage_and_strategy(self.space, storage, strategy) - return w_newlist - def inplace_mul(self, w_list, times): self.switch_to_integer_strategy(w_list) w_list.inplace_mul(times) @@ -757,12 +743,6 @@ w_item = self.wrap(item) return w_item - def mul(self, w_list, times): - # XXX can't this be the default implementation in ListStrategy? - w_newlist = w_list.clone() - w_newlist.inplace_mul(times) - return w_newlist - def inplace_mul(self, w_list, times): l = self.unerase(w_list.lstorage) l *= times _______________________________________________ pypy-commit mailing list pypy-commit@python.org http://mail.python.org/mailman/listinfo/pypy-commit