[pypy-svn] r65078 - pypy/branch/tagged-pointers-framework/pypy/rpython/memory/gc

cfbolz at codespeak.net cfbolz at codespeak.net
Wed May 6 09:39:45 CEST 2009


Author: cfbolz
Date: Wed May  6 09:39:43 2009
New Revision: 65078

Modified:
   pypy/branch/tagged-pointers-framework/pypy/rpython/memory/gc/markcompact.py
Log:
missed a copy of trace


Modified: pypy/branch/tagged-pointers-framework/pypy/rpython/memory/gc/markcompact.py
==============================================================================
--- pypy/branch/tagged-pointers-framework/pypy/rpython/memory/gc/markcompact.py	(original)
+++ pypy/branch/tagged-pointers-framework/pypy/rpython/memory/gc/markcompact.py	Wed May  6 09:39:43 2009
@@ -409,14 +409,17 @@
             length = (obj + llmemory.gcarrayofptr_lengthoffset).signed[0]
             item = obj + llmemory.gcarrayofptr_itemsoffset
             while length > 0:
-                callback(item, arg)
+                if self.points_to_valid_gc_object(item):
+                    callback(item, arg)
                 item += llmemory.gcarrayofptr_singleitemoffset
                 length -= 1
             return
         offsets = self.offsets_to_gc_pointers(typeid)
         i = 0
         while i < len(offsets):
-            callback(obj + offsets[i], arg)
+            item = obj + offsets[i]
+            if self.points_to_valid_gc_object(item):
+                callback(item, arg)
             i += 1
         if self.has_gcptr_in_varsize(typeid):
             item = obj + self.varsize_offset_to_variable_part(typeid)
@@ -426,7 +429,9 @@
             while length > 0:
                 j = 0
                 while j < len(offsets):
-                    callback(item + offsets[j], arg)
+                    itemobj = item + offsets[j]
+                    if self.points_to_valid_gc_object(itemobj):
+                        callback(itemobj, arg)
                     j += 1
                 item += itemlength
                 length -= 1



More information about the Pypy-commit mailing list