[pypy-commit] pypy numpypy-axisops: make test_zjit run again. Fails, because produces utter nonsense, next step

fijal noreply at buildbot.pypy.org
Fri Jan 13 22:29:44 CET 2012


Author: Maciej Fijalkowski <fijall at gmail.com>
Branch: numpypy-axisops
Changeset: r51298:2bfdde95bd9f
Date: 2012-01-13 23:29 +0200
http://bitbucket.org/pypy/pypy/changeset/2bfdde95bd9f/

Log:	make test_zjit run again. Fails, because produces utter nonsense,
	next step

diff --git a/pypy/module/micronumpy/interp_numarray.py b/pypy/module/micronumpy/interp_numarray.py
--- a/pypy/module/micronumpy/interp_numarray.py
+++ b/pypy/module/micronumpy/interp_numarray.py
@@ -32,7 +32,7 @@
 slice_driver = jit.JitDriver(
     greens=['shapelen', 'sig'],
     virtualizables=['frame'],
-    reds=['self', 'frame', 'source'],
+    reds=['self', 'frame', 'arr'],
     get_printable_location=signature.new_printable_location('slice'),
 )
 
@@ -1000,7 +1000,8 @@
             self.dtype is w_value.find_dtype()):
             self._fast_setslice(space, w_value)
         else:
-            self._sliceloop(w_value)
+            arr = SliceArray(self.shape, self.dtype, self, w_value)
+            self._sliceloop(arr)
 
     def _fast_setslice(self, space, w_value):
         assert isinstance(w_value, ConcreteArray)
@@ -1024,14 +1025,14 @@
                 source.next()
                 dest.next()
 
-    def _sliceloop(self, source):
-        arr = SliceArray(self.shape, self.dtype, self, source)
+    def _sliceloop(self, arr):
         sig = arr.find_sig()
         frame = sig.create_frame(arr)
         shapelen = len(self.shape)
         while not frame.done():
             slice_driver.jit_merge_point(sig=sig, frame=frame, self=self,
-                                         shapelen=shapelen, source=source)
+                                         arr=arr,
+                                         shapelen=shapelen)
             sig.eval(frame, arr)
             frame.next(shapelen)
 
diff --git a/pypy/module/micronumpy/signature.py b/pypy/module/micronumpy/signature.py
--- a/pypy/module/micronumpy/signature.py
+++ b/pypy/module/micronumpy/signature.py
@@ -74,7 +74,7 @@
     def done(self):
         final_iter = promote(self.final_iter)
         if final_iter < 0:
-            return False
+            assert False
         return self.iterators[final_iter].done()
 
     @unroll_safe
@@ -83,7 +83,10 @@
             self.iterators[i] = self.iterators[i].next(shapelen)
 
     def get_final_iter(self):
-        return self.iterators[promote(self.final_iter)]
+        final_iter = promote(self.final_iter)
+        if final_iter < 0:
+            assert False
+        return self.iterators[final_iter]
 
 def _add_ptr_to_cache(ptr, cache):
     i = 0


More information about the pypy-commit mailing list