[pypy-commit] pypy optresult-unroll: More tests for arraycopy, which sometimes does not invalidate the array copied to (3 of the 4 versions fail)

arigo noreply at buildbot.pypy.org
Mon Sep 7 19:29:54 CEST 2015


Author: Armin Rigo <arigo at tunes.org>
Branch: optresult-unroll
Changeset: r79505:40cc2e117d2a
Date: 2015-09-07 19:30 +0200
http://bitbucket.org/pypy/pypy/changeset/40cc2e117d2a/

Log:	More tests for arraycopy, which sometimes does not invalidate the
	array copied to (3 of the 4 versions fail)

diff --git a/rpython/jit/metainterp/optimizeopt/test/test_optimizebasic.py b/rpython/jit/metainterp/optimizeopt/test/test_optimizebasic.py
--- a/rpython/jit/metainterp/optimizeopt/test/test_optimizebasic.py
+++ b/rpython/jit/metainterp/optimizeopt/test/test_optimizebasic.py
@@ -3322,6 +3322,46 @@
         '''
         self.optimize_loop(ops, expected)
 
+    def test_arraycopy_invalidate_1(self):
+        ops = """
+        [p0, i5]
+        p1 = new_array_clear(i5, descr=gcarraydescr)
+        call_n(0, p0, p1, 0, 0, i5, descr=arraycopydescr)
+        p2 = getarrayitem_gc_r(p1, 0, descr=gcarraydescr)   # != NULL
+        jump(p2)
+        """
+        self.optimize_loop(ops, ops)
+
+    def test_arraycopy_invalidate_2(self):
+        ops = """
+        [p0, i5]
+        p1 = new_array_clear(i5, descr=gcarraydescr)
+        call_n(0, p0, p1, 0, 0, 3, descr=arraycopydescr)
+        p2 = getarrayitem_gc_r(p1, 0, descr=gcarraydescr)   # != NULL
+        jump(p2)
+        """
+        self.optimize_loop(ops, ops)
+
+    def test_arraycopy_invalidate_3(self):
+        ops = """
+        [p0, i5]
+        p1 = new_array_clear(3, descr=gcarraydescr)
+        call_n(0, p0, p1, 0, 0, i5, descr=arraycopydescr)
+        p2 = getarrayitem_gc_r(p1, 0, descr=gcarraydescr)   # != NULL
+        jump(p2)
+        """
+        self.optimize_loop(ops, ops)
+
+    def test_arraycopy_invalidate_4(self):
+        ops = """
+        [p0, i5]
+        p1 = new_array_clear(3, descr=gcarraydescr)
+        call_n(0, p0, p1, 0, 0, 3, descr=arraycopydescr)
+        p2 = getarrayitem_gc_r(p1, 0, descr=gcarraydescr)   # != NULL
+        jump(p2)
+        """
+        self.optimize_loop(ops, ops)
+
     def test_bound_lt(self):
         ops = """
         [i0]


More information about the pypy-commit mailing list