[pypy-commit] pypy stmgc-c4: add failing test for possible optimization

Raemi noreply at buildbot.pypy.org
Thu Jan 16 11:59:53 CET 2014


Author: Remi Meier <remi.meier at gmail.com>
Branch: stmgc-c4
Changeset: r68694:f7c148ced74c
Date: 2014-01-16 11:59 +0100
http://bitbucket.org/pypy/pypy/changeset/f7c148ced74c/

Log:	add failing test for possible optimization

diff --git a/rpython/jit/backend/llsupport/test/test_stmrewrite.py b/rpython/jit/backend/llsupport/test/test_stmrewrite.py
--- a/rpython/jit/backend/llsupport/test/test_stmrewrite.py
+++ b/rpython/jit/backend/llsupport/test/test_stmrewrite.py
@@ -1275,6 +1275,42 @@
                 jump(p3)
             """, uxdescr=uxdescr, vzdescr=vzdescr, vdescr=vdescr)
 
-    
+    def test_weaken_previous_barrier(self):
+        class fakeextrainfo:
+            oopspecindex=0
+            def call_needs_inevitable(self):
+                return False
+        T = rffi.CArrayPtr(rffi.TIME_T)
+        calldescr2 = get_call_descr(self.gc_ll_descr, [T], rffi.TIME_T,
+                                    fakeextrainfo())
 
+        # True: weaken previous barrier
+        # False: do not weaken
+        ops = [("stm_transaction_break(1)", False),
+               ("call(123, descr=cd)", False),
+               ("label()", False),
+               ("i2 = int_add(i1, 1)", True)
+           ]
+        for op, weaken in ops:
+            b1 = ("cond_call_stm_b(p1, descr=A2Vdescr)" if weaken
+                  else "cond_call_stm_b(p1, descr=A2Rdescr)")
+            b2 = ("" if weaken
+                  else "cond_call_stm_b(p1, descr=A2Vdescr)")
+            self.check_rewrite("""
+            [p1, i3]
+            i1 = getfield_gc(p1, descr=tydescr) # noptr
+            %s
+            setfield_gc(p1, i3, descr=tydescr) # noptr
+            jump(p1)
+            """ % (op,), """
+            [p1, i3]
+            %s
+            i1 = getfield_gc(p1, descr=tydescr)
+            %s
+            %s
+            setfield_gc(p1, i3, descr=tydescr)
+            
+            jump(p1)
+            """ % (b1, op, b2), cd=calldescr2)
 
+


More information about the pypy-commit mailing list