[pypy-commit] pypy gc-minimark-pinning: surprisingly enough make the test pass

fijal noreply at buildbot.pypy.org
Thu Apr 12 23:37:29 CEST 2012


Author: Maciej Fijalkowski <fijall at gmail.com>
Branch: gc-minimark-pinning
Changeset: r54318:825c0462f962
Date: 2012-04-12 23:37 +0200
http://bitbucket.org/pypy/pypy/changeset/825c0462f962/

Log:	surprisingly enough make the test pass

diff --git a/pypy/rpython/memory/gc/minimark.py b/pypy/rpython/memory/gc/minimark.py
--- a/pypy/rpython/memory/gc/minimark.py
+++ b/pypy/rpython/memory/gc/minimark.py
@@ -589,7 +589,17 @@
         now-empty nursery.
         """
         if not self.nursery_top == self.nursery + self.nursery_size:
-            xxx
+            self.nursery_top = self.nursery_barriers.popleft()
+            size_gc_header = self.gcheaderbuilder.size_gc_header
+            while self.nursery_barriers.non_empty() and self.nursery_free + totalsize > self.nursery_top:
+                cur_obj_size = size_gc_header + self.get_size(
+                    self.nursery_free + size_gc_header)
+                self.nursery_free = self.nursery_free + cur_obj_size
+                self.nursery_top = self.nursery_barriers.popleft()
+            if self.nursery_free + totalsize <= self.nursery_top:
+                llarena.arena_reserve(self.nursery_free, totalsize)
+                res = self.nursery_free
+                self.nursery_free = res + totalsize
         self.minor_collection(totalsize)
         # try allocating now, otherwise we do a major collect
         do_major_collect = False


More information about the pypy-commit mailing list