[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