[pypy-commit] pypy gc-incminimark-pinning: solve "black->white" pointer problem for pinned objects

groggi noreply at buildbot.pypy.org
Fri Sep 5 11:37:55 CEST 2014


Author: Gregor Wegberg <code at gregorwegberg.com>
Branch: gc-incminimark-pinning
Changeset: r73315:e9a6ac6462c4
Date: 2014-09-05 11:28 +0200
http://bitbucket.org/pypy/pypy/changeset/e9a6ac6462c4/

Log:	solve "black->white" pointer problem for pinned objects

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
@@ -1215,6 +1215,12 @@
             pass    # black -> gray
         elif self.header(obj).tid & GCFLAG_NO_HEAP_PTRS != 0:
             pass    # black -> white-but-prebuilt-so-dont-care
+        elif self._is_pinned(obj):
+            # black -> pinned: the pinned object is a white one as
+            # every minor collection visits them and takes care of
+            # visiting pinned objects.
+            # XXX (groggi) double check with fijal/armin
+            pass    # black -> pinned
         else:
             ll_assert(False, "black -> white pointer found")
 


More information about the pypy-commit mailing list