[pypy-commit] pypy gc-incminimark-pinning: use 'nursery_cleanup' instead of 'intial_cleanup'

groggi noreply at buildbot.pypy.org
Mon Jun 23 11:48:18 CEST 2014


Author: Gregor Wegberg <code at gregorwegberg.com>
Branch: gc-incminimark-pinning
Changeset: r72155:ee12c163a577
Date: 2014-06-18 15:48 +0200
http://bitbucket.org/pypy/pypy/changeset/ee12c163a577/

Log:	use 'nursery_cleanup' instead of 'intial_cleanup'

diff --git a/rpython/memory/gc/incminimark.py b/rpython/memory/gc/incminimark.py
--- a/rpython/memory/gc/incminimark.py
+++ b/rpython/memory/gc/incminimark.py
@@ -1601,33 +1601,32 @@
             self.surviving_pinned_objects.length()
         while self.surviving_pinned_objects.non_empty():
             #
-            next = self.surviving_pinned_objects.pop()
-            assert next >= prev
+            cur = self.surviving_pinned_objects.pop()
+            assert cur >= prev
             #
             # clear the arena between the last pinned object (or arena start)
             # and the pinned object
-            pinned_obj_size = llarena.getfakearenaaddress(next) - prev
+            pinned_obj_size = llarena.getfakearenaaddress(cur) - prev
             llarena.arena_reset(prev, pinned_obj_size, 2)
             #
             # clean up object's flags
-            obj = next + size_gc_header
+            obj = cur + size_gc_header
             self.header(obj).tid &= ~GCFLAG_VISITED
             #
             # create a new nursery barrier for the pinned object
-            nursery_barriers.append(next)
+            nursery_barriers.append(cur)
             #
-            # update 'prev' to the end of the 'next' object
+            # update 'prev' to the end of the 'cur' object
             prev = prev + pinned_obj_size + \
                 (size_gc_header + self.get_size(obj))
         #
-        # clean up a bit more after the last pinned object
+        # reset everything after the last pinned object till the end of the arena
         llarena.arena_reset(prev, self.nursery_real_top - prev, 0)
         #
-        # now we want to have some amount of the nursery ready to be used
-        # after all the pinned objects.
-        if prev <= self.nursery_real_top - self.initial_cleanup:
-            llarena.arena_reset(prev, self.initial_cleanup, 2)
-            nursery_barriers.append(prev + self.initial_cleanup)
+        # make sure we have some clean space to use after a minor collection
+        if self.nursery_real_top - prev >= self.nursery_cleanup:
+            llarena.arena_reset(prev, self.nursery_cleanup, 2)
+            nursery_barriers.append(prev + self.nursery_cleanup)
         else:
             llarena.arena_reset(prev, self.nursery_real_top - prev, 2)
             nursery_barriers.append(self.nursery_real_top)


More information about the pypy-commit mailing list