[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