Author: Maciej Fijalkowski <fij...@gmail.com> Branch: numpy-indexing-by-arrays-2 Changeset: r51386:fed67b9508a6 Date: 2012-01-17 12:15 +0200 http://bitbucket.org/pypy/pypy/changeset/fed67b9508a6/
Log: jit merge points 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 @@ -40,6 +40,18 @@ get_printable_location=signature.new_printable_location('slice'), name='numpy_slice', ) +count_driver = jit.JitDriver( + greens=['shapelen'], + virtualizables=['frame'], + reds=['frame', 's', 'iter', 'arr'], + name='numpy_count' +) +filter_driver = jit.JitDriver( + greens=['sig', 'shapelen'], + virtualizables=['frame'], + reds=['concr', 'argi', 'ri', 'frame', 'v', 'res'], + name='numpy_filter', +) def _find_shape_and_elems(space, w_iterable): shape = [space.len_w(w_iterable)] @@ -491,7 +503,10 @@ frame = sig.create_frame(self) shapelen = len(arr.shape) s = 0 + iter = None while not frame.done(): + count_driver.jit_merge_point(arr=arr, frame=frame, iter=iter, s=s, + shapelen=shapelen) iter = frame.get_final_iter() s += arr.dtype.getitem_bool(arr.storage, iter.offset) frame.next(shapelen) @@ -506,7 +521,11 @@ argi = ArrayIterator(concr.size) sig = self.find_sig() frame = sig.create_frame(self) + v = None while not frame.done(): + filter_driver.jit_merge_point(concr=concr, argi=argi, ri=ri, + frame=frame, v=v, res=res, sig=sig, + shapelen=shapelen) if concr.dtype.getitem_bool(concr.storage, argi.offset): v = sig.eval(frame, self) res.setitem(ri.offset, v) _______________________________________________ pypy-commit mailing list pypy-commit@python.org http://mail.python.org/mailman/listinfo/pypy-commit