[pypy-commit] pypy stmgc-c7: progress

arigo noreply at buildbot.pypy.org
Sat Mar 22 13:05:10 CET 2014


Author: Armin Rigo <arigo at tunes.org>
Branch: stmgc-c7
Changeset: r70166:388415f649a5
Date: 2014-03-22 13:04 +0100
http://bitbucket.org/pypy/pypy/changeset/388415f649a5/

Log:	progress

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
@@ -1133,98 +1133,23 @@
             V = lltype.GcArray(('z', lltype.Ptr(S)), hints=imm_hint)
             vdescr = get_array_descr(self.gc_ll_descr, V)
             vdescr.tid = 1233
-            vzdescr = get_interiorfield_descr(self.gc_ll_descr, V, 'z')
+            #vzdescr = get_interiorfield_descr(self.gc_ll_descr, V, 'z')
 
-            # XXX: "A2Idescr" if imm_hint else "A2Rdescr"
-            barr = "A2Rdescr" if imm_hint else "A2Rdescr"
+            if imm_hint:
+                d = {'comment': '#', 'pure': '_pure'}
+            else:
+                d = {'comment': '', 'pure': ''}
+
             self.check_rewrite("""
                 [p1, p3, i1, p4]
-                p2 = getfield_gc(p1, descr=uxdescr)
-                i3 = getinteriorfield_gc(p3, i1, descr=vzdescr)
-                i4 = getarrayitem_gc(p4, i3, descr=vdescr)
+                p2 = getfield_gc%(pure)s(p1, descr=uxdescr)
+                i4 = getarrayitem_gc%(pure)s(p4, i1, descr=vdescr)
                 jump(p2)
-            """, """
+            """ % d, """
                 [p1, p3, i1, p4]
-                cond_call_stm_b(p1, descr=%s)
-                p2 = getfield_gc(p1, descr=uxdescr)
-                cond_call_stm_b(p3, descr=%s)
-                i3 = getinteriorfield_gc(p3, i1, descr=vzdescr)
-                cond_call_stm_b(p4, descr=%s)
-                i4 = getarrayitem_gc(p4, i3, descr=vdescr)
-                
+                p2 = getfield_gc%(pure)s(p1, descr=uxdescr)
+                %(comment)s stm_read(p1)
+                i4 = getarrayitem_gc%(pure)s(p4, i1, descr=vdescr)
+                %(comment)s stm_read(p4)
                 jump(p2)
-            """ % (barr, barr, barr), uxdescr=uxdescr,
-            vzdescr=vzdescr, vdescr=vdescr)
-
-    def test_noptr_setfields(self):
-        S = lltype.GcStruct('S')
-        U = lltype.GcStruct('U',
-                ('x', lltype.Signed),
-                ('y', lltype.Ptr(S)))
-        udescr = get_size_descr(self.gc_ll_descr, U)
-        udescr.tid = 2123
-        uxdescr = get_field_descr(self.gc_ll_descr, U, 'x')
-        #uydescr = get_field_descr(self.gc_ll_descr, U, 'y')
-
-        V = lltype.GcArray(('z', lltype.Signed))
-        vdescr = get_array_descr(self.gc_ll_descr, V)
-        vdescr.tid = 1233
-        vzdescr = get_interiorfield_descr(self.gc_ll_descr, V, 'z')
-
-        self.check_rewrite("""
-                [p1, p3, i1, p4]
-                setfield_gc(p1, 1, descr=uxdescr)
-                setinteriorfield_gc(p3, i1, 1, descr=vzdescr)
-                setarrayitem_gc(p4, i1, 1, descr=vdescr)
-                jump(p3)
-            """, """
-                [p1, p3, i1, p4]
-                cond_call_stm_b(p1, descr=A2Vdescr)
-                setfield_gc(p1, 1, descr=uxdescr)
-                cond_call_stm_b(p3, descr=A2Vdescr)
-                setinteriorfield_gc(p3, i1, 1, descr=vzdescr)
-                cond_call_stm_b(p4, descr=A2Vdescr)
-                setarrayitem_gc(p4, i1, 1, descr=vdescr)
-                
-                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)
-
-
+            """ % d, uxdescr=uxdescr, vdescr=vdescr)


More information about the pypy-commit mailing list