Author: Maciej Fijalkowski <[email protected]>
Branch: gc-minimark-pinning
Changeset: r54671:79227902ef69
Date: 2012-04-23 13:21 +0200
http://bitbucket.org/pypy/pypy/changeset/79227902ef69/

Log:    pinned objects will remain in the nursery

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
@@ -957,11 +957,12 @@
 
     def debug_check_object(self, obj):
         # after a minor or major collection, no object should be in the nursery
-        ll_assert(not self.is_in_nursery(obj),
-                  "object in nursery after collection")
-        # similarily, all objects should have this flag:
-        ll_assert(self.header(obj).tid & GCFLAG_TRACK_YOUNG_PTRS,
-                  "missing GCFLAG_TRACK_YOUNG_PTRS")
+        if not self.header(obj).tid & GCFLAG_PINNED:
+            ll_assert(not self.is_in_nursery(obj),
+                      "object in nursery after collection")
+            # similarily, all objects should have this flag:
+            ll_assert(self.header(obj).tid & GCFLAG_TRACK_YOUNG_PTRS,
+                      "missing GCFLAG_TRACK_YOUNG_PTRS")
         # the GCFLAG_VISITED should not be set between collections
         ll_assert(self.header(obj).tid & GCFLAG_VISITED == 0,
                   "unexpected GCFLAG_VISITED")
_______________________________________________
pypy-commit mailing list
[email protected]
http://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to