Author: Alex Gaynor <[email protected]>
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
[email protected]
http://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to