[pypy-commit] pypy str-dtype-improvement: whoops, missing parts of commit

mattip noreply at buildbot.pypy.org
Tue Mar 19 07:18:18 CET 2013


Author: Matti Picus <matti.picus at gmail.com>
Branch: str-dtype-improvement
Changeset: r62449:047dfd1e999f
Date: 2013-03-18 23:17 -0700
http://bitbucket.org/pypy/pypy/changeset/047dfd1e999f/

Log:	whoops, missing parts of commit

diff --git a/pypy/module/micronumpy/loop.py b/pypy/module/micronumpy/loop.py
--- a/pypy/module/micronumpy/loop.py
+++ b/pypy/module/micronumpy/loop.py
@@ -73,6 +73,25 @@
                                 reds = 'auto')
 
 def setslice(space, shape, target, source):
+    if target.dtype.is_str_or_unicode():
+        return setslice_from(space, shape, target, source)
+    return setslice_to(space, shape, target, source)
+
+def setslice_to(space, shape, target, source):
+    # note that unlike everything else, target and source here are
+    # array implementations, not arrays
+    target_iter = target.create_iter(shape)
+    source_iter = source.create_iter(shape)
+    dtype = target.dtype
+    shapelen = len(shape)
+    while not target_iter.done():
+        setslice_driver1.jit_merge_point(shapelen=shapelen, dtype=dtype)
+        target_iter.setitem(source_iter.getitem().convert_to(dtype))
+        target_iter.next()
+        source_iter.next()
+    return target
+
+def setslice_from(space, shape, target, source):
     # note that unlike everything else, target and source here are
     # array implementations, not arrays
     target_iter = target.create_iter(shape)
@@ -81,7 +100,7 @@
     shapelen = len(shape)
     while not target_iter.done():
         setslice_driver2.jit_merge_point(shapelen=shapelen, dtype=dtype)
-        target_iter.setitem(source_iter.getitem().convert_to(dtype))
+        target_iter.setitem(dtype.convert_from(space, source_iter.getitem()))
         target_iter.next()
         source_iter.next()
     return target


More information about the pypy-commit mailing list