Author: Maciej Fijalkowski <fij...@gmail.com>
Branch: gc_no_cleanup_nursery
Changeset: r73633:86b8d1f0b17d
Date: 2014-09-21 13:05 +0200
http://bitbucket.org/pypy/pypy/changeset/86b8d1f0b17d/

Log:    fixes

diff --git a/rpython/jit/backend/llsupport/rewrite.py 
b/rpython/jit/backend/llsupport/rewrite.py
--- a/rpython/jit/backend/llsupport/rewrite.py
+++ b/rpython/jit/backend/llsupport/rewrite.py
@@ -62,6 +62,8 @@
             if op.is_malloc():
                 self.handle_malloc_operation(op)
                 continue
+            if op.is_guard():
+                self.emit_pending_zeros()
             elif op.getopnum() == rop.CLEAR_ARRAY_CONTENTS:
                 self.handle_clear_array_contents(op.getdescr(), op.getarg(0))
                 continue
@@ -136,7 +138,6 @@
             self.delayed_zero_setfields[result] = d
         for ofs in descr.offsets_of_gcfields:
             d[ofs] = None
-        self.delayed_zero_setfields.clear()
 
     def consider_setfield_gc(self, op):
         offset = self.cpu.unpack_fielddescr(op.getdescr())
@@ -298,6 +299,7 @@
             for ofs in d.iterkeys():
                 op = ResOperation(rop.ZERO_PTR_FIELD, [v, ConstInt(ofs)], None)
                 self.newops.append(op)
+        self.delayed_zero_setfields.clear()
 
     def _gen_call_malloc_gc(self, args, v_result, descr):
         """Generate a CALL_MALLOC_GC with the given args."""
diff --git a/rpython/jit/backend/llsupport/test/test_rewrite.py 
b/rpython/jit/backend/llsupport/test/test_rewrite.py
--- a/rpython/jit/backend/llsupport/test/test_rewrite.py
+++ b/rpython/jit/backend/llsupport/test/test_rewrite.py
@@ -122,6 +122,9 @@
     def unpack_arraydescr_size(self, d):
         return 0, d.itemsize, 0
 
+    def unpack_fielddescr(self, d):
+        return d.offset
+
     def arraydescrof(self, ARRAY):
         try:
             return self._cache[ARRAY]
diff --git a/rpython/jit/codewriter/heaptracker.py 
b/rpython/jit/codewriter/heaptracker.py
--- a/rpython/jit/codewriter/heaptracker.py
+++ b/rpython/jit/codewriter/heaptracker.py
@@ -140,6 +140,4 @@
             res.append(offset)
         elif isinstance(FIELD, lltype.Struct):
             offsets_of_gcfields(gccache, FIELD, res)
-    if not gccache.translate_support_code:
-        res.sort()
     return res
_______________________________________________
pypy-commit mailing list
pypy-commit@python.org
https://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to