Author: Maciej Fijalkowski <fij...@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 _______________________________________________ pypy-commit mailing list pypy-commit@python.org http://mail.python.org/mailman/listinfo/pypy-commit