[pypy-svn] r76184 - pypy/branch/interplevel-array/pypy/module/array
hakanardo at codespeak.net
hakanardo at codespeak.net
Tue Jul 13 15:51:18 CEST 2010
Author: hakanardo
Date: Tue Jul 13 15:51:13 2010
New Revision: 76184
Modified:
pypy/branch/interplevel-array/pypy/module/array/interp_array.py
Log:
less special cases
Modified: pypy/branch/interplevel-array/pypy/module/array/interp_array.py
==============================================================================
--- pypy/branch/interplevel-array/pypy/module/array/interp_array.py (original)
+++ pypy/branch/interplevel-array/pypy/module/array/interp_array.py Tue Jul 13 15:51:13 2010
@@ -215,23 +215,9 @@
i = 0
try:
- if isinstance(w_seq, W_ListObject):
- while i < new:
- item = self.item_w(w_seq.wrappeditems[i])
- self.buffer[oldlen + i ] = item
- i += 1
- elif isinstance(w_seq, W_TupleObject):
- while i < new:
- item = self.item_w(w_seq.wrappeditems[i])
- self.buffer[oldlen + i ] = item
- i += 1
- else:
- getitem = space.getattr(w_seq, space.wrap('__getitem__'))
- while i < new:
- w_item = space.call_function(getitem, space.wrap(i))
- item=self.item_w(w_item)
- self.buffer[oldlen + i ] = item
- i += 1
+ for w_i in space.listview(w_seq):
+ self.buffer[oldlen + i] = self.item_w(w_i)
+ i += 1
except OperationError:
self.setlen(oldlen + i)
raise
@@ -257,15 +243,8 @@
isinstance(w_iterable, W_TupleObject)):
self.descr_fromsequence(w_iterable)
else:
- w_iterator = space.iter(w_iterable)
- while True:
- try:
- w_item = space.next(w_iterator)
- except OperationError, e:
- if not e.match(space, space.w_StopIteration):
- raise
- break
- self.descr_append(w_item)
+ for w_i in space.listview(w_iterable):
+ self.descr_append(w_i)
descr_extend.unwrap_spec = ['self', W_Root]
def descr_setslice(self, w_idx, w_item):
More information about the Pypy-commit
mailing list