[pypy-dev] [pypy-commit] pypy default: Inline into ll_setslice (which is really just an ll_arraycopy). Fixed a bug in the heapcache that it revealed.

Alex Gaynor alex.gaynor at gmail.com
Fri Apr 26 10:31:26 CEST 2013


There was a test in rlist.py that caught the error, I'll add a unittest for
heapcache though.

Alex


On Fri, Apr 26, 2013 at 2:04 AM, Maciej Fijalkowski <fijall at gmail.com>wrote:

> How about a test? Especially for the heapcache
>
> On Fri, Apr 26, 2013 at 6:23 AM, alex_gaynor <noreply at buildbot.pypy.org>
> wrote:
> > Author: Alex Gaynor <alex.gaynor at gmail.com>
> > Branch:
> > Changeset: r63627:23defdb27411
> > Date: 2013-04-25 21:22 -0700
> > http://bitbucket.org/pypy/pypy/changeset/23defdb27411/
> >
> > Log:    Inline into ll_setslice (which is really just an ll_arraycopy).
> >         Fixed a bug in the heapcache that it revealed.
> >
> > diff --git a/rpython/jit/codewriter/support.py
> b/rpython/jit/codewriter/support.py
> > --- a/rpython/jit/codewriter/support.py
> > +++ b/rpython/jit/codewriter/support.py
> > @@ -203,7 +203,6 @@
> >  _ll_2_list_append = rlist.ll_append
> >  _ll_2_list_extend = rlist.ll_extend
> >  _ll_3_list_insert = rlist.ll_insert_nonneg
> > -_ll_4_list_setslice = rlist.ll_listsetslice
> >  _ll_2_list_delslice_startonly = rlist.ll_listdelslice_startonly
> >  _ll_3_list_delslice_startstop = rlist.ll_listdelslice_startstop
> >  _ll_2_list_inplace_mul = rlist.ll_inplace_mul
> > diff --git a/rpython/jit/metainterp/heapcache.py
> b/rpython/jit/metainterp/heapcache.py
> > --- a/rpython/jit/metainterp/heapcache.py
> > +++ b/rpython/jit/metainterp/heapcache.py
> > @@ -125,7 +125,7 @@
> >                      for descr, cache in
> self.heap_array_cache.iteritems():
> >                          for idx, cache in cache.iteritems():
> >                              for frombox in cache.keys():
> > -                                if frombox not in self.new_boxes:
> > +                                if not self.new_boxes.get(frombox,
> False):
> >                                      del cache[frombox]
> >                      return
> >              else:
> > diff --git a/rpython/jit/metainterp/test/test_list.py
> b/rpython/jit/metainterp/test/test_list.py
> > --- a/rpython/jit/metainterp/test/test_list.py
> > +++ b/rpython/jit/metainterp/test/test_list.py
> > @@ -128,10 +128,10 @@
> >          res = self.interp_operations(f, [], listops=True)
> >          assert res == 10
> >
> > -    def test_arraycopy_bug(self):
> > +    def test_arraycopy_bug(self):
> >          def f():
> >              l = [1, 2, 3, 4]
> > -            l2 = [1, 2, 3, 4]
> > +            l2 = [1, 2, 3, 5]
> >              l[2] = 13
> >              l2[0:len(l2)] = l[:]
> >              return l2[0] + l2[1] + l2[2] + l2[3]
> > diff --git a/rpython/rtyper/rlist.py b/rpython/rtyper/rlist.py
> > --- a/rpython/rtyper/rlist.py
> > +++ b/rpython/rtyper/rlist.py
> > @@ -955,7 +955,7 @@
> >                   "setslice cannot resize lists in RPython")
> >      # XXX ...but it would be easy enough to support if really needed
> >      ll_arraycopy(l2, l1, 0, start, count)
> > -ll_listsetslice.oopspec = 'list.setslice(l1, start, stop, l2)'
> > +
> >
> >  # ____________________________________________________________
> >  #
> > _______________________________________________
> > pypy-commit mailing list
> > pypy-commit at python.org
> > http://mail.python.org/mailman/listinfo/pypy-commit
> _______________________________________________
> pypy-dev mailing list
> pypy-dev at python.org
> http://mail.python.org/mailman/listinfo/pypy-dev
>



-- 
"I disapprove of what you say, but I will defend to the death your right to
say it." -- Evelyn Beatrice Hall (summarizing Voltaire)
"The people's good is the highest law." -- Cicero
GPG Key fingerprint: 125F 5C67 DFE9 4084
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/pypy-dev/attachments/20130426/c4f84914/attachment.html>


More information about the pypy-dev mailing list