[pypy-commit] pypy stmgc-c8: Fixes (sometimes of the code, sometimes of the test)

arigo noreply at buildbot.pypy.org
Tue Jun 23 18:06:19 CEST 2015


Author: Armin Rigo <arigo at tunes.org>
Branch: stmgc-c8
Changeset: r78268:9c99314d9c90
Date: 2015-06-23 16:15 +0200
http://bitbucket.org/pypy/pypy/changeset/9c99314d9c90/

Log:	Fixes (sometimes of the code, sometimes of the test)

diff --git a/rpython/jit/backend/llsupport/stmrewrite.py b/rpython/jit/backend/llsupport/stmrewrite.py
--- a/rpython/jit/backend/llsupport/stmrewrite.py
+++ b/rpython/jit/backend/llsupport/stmrewrite.py
@@ -37,8 +37,7 @@
             self.newop(op)
             return
         # ----------  non-pure getfields  ----------
-        if opnum in (rop.GETFIELD_GC, rop.GETARRAYITEM_GC,
-                     rop.GETINTERIORFIELD_GC):
+        if opnum in (rop.GETARRAYITEM_GC, rop.GETINTERIORFIELD_GC):
             self.handle_getfields(op)
             return
         # ----------  calls  ----------
@@ -120,6 +119,10 @@
             self.newop(op1)
             self.read_barrier_applied[v_ptr] = None
 
+    def handle_getfield_gc(self, op):
+        self.emit_pending_zeros()
+        self.handle_getfields(op)
+
     def add_dummy_allocation(self):
         if not self.does_any_allocation:
             # do a fake allocation since this is needed to check
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
@@ -31,6 +31,7 @@
     # these are handled by rewrite.py (sometimes with some overridden code
     # in stmrewrite.py too)
     words.append('DEBUG_MERGE_POINT')
+    words.append('GETFIELD_GC')
     words.append('SETFIELD_GC')
     words.append('SETARRAYITEM_GC')
     words.append('SETINTERIORFIELD_GC')
@@ -268,8 +269,8 @@
             p3 = call_malloc_nursery(%(tdescr.size)d)
             setfield_gc(p3, 0, descr=stmflagsdescr)
             setfield_gc(p3, %(tdescr.tid)d, descr=tiddescr)
+            zero_ptr_field(p3, %(tdescr.gc_fielddescrs[0].offset)s)
             p4 = getfield_gc(p1, descr=tzdescr)
-            zero_ptr_field(p3, %(tdescr.gc_fielddescrs[0].offset)s)
             jump(p2)
         """)
 
@@ -299,8 +300,8 @@
             p2 = call_malloc_nursery(%(tdescr.size)d)
             setfield_gc(p2, 0, descr=stmflagsdescr)
             setfield_gc(p2, %(tdescr.tid)d, descr=tiddescr)
+            zero_ptr_field(p2, %(tdescr.gc_fielddescrs[0].offset)s)
             p1 = getfield_gc(p2, descr=tzdescr)
-            zero_ptr_field(p2, %(tdescr.gc_fielddescrs[0].offset)s)
             jump(p1)
         """)
 


More information about the pypy-commit mailing list