[pypy-svn] r65789 - in pypy/branch/tagged-pointers-framework/pypy/rpython/memory: gc gctransform

arigo at codespeak.net arigo at codespeak.net
Tue Jun 16 10:06:58 CEST 2009


Author: arigo
Date: Tue Jun 16 10:06:57 2009
New Revision: 65789

Modified:
   pypy/branch/tagged-pointers-framework/pypy/rpython/memory/gc/generation.py
   pypy/branch/tagged-pointers-framework/pypy/rpython/memory/gctransform/framework.py
Log:
Missing a gc.points_to_valid_gc_object() in the thread-specific code.
The rest is just clean-ups.


Modified: pypy/branch/tagged-pointers-framework/pypy/rpython/memory/gc/generation.py
==============================================================================
--- pypy/branch/tagged-pointers-framework/pypy/rpython/memory/gc/generation.py	(original)
+++ pypy/branch/tagged-pointers-framework/pypy/rpython/memory/gc/generation.py	Tue Jun 16 10:06:57 2009
@@ -128,6 +128,8 @@
         return nursery_size // 4 - 1
 
     def is_in_nursery(self, addr):
+        ll_assert(llmemory.cast_adr_to_int(addr) & 1 == 0,
+                  "odd-valued (i.e. tagged) pointer unexpected here")
         return self.nursery <= addr < self.nursery_top
 
     def malloc_fixedsize_clear(self, typeid, size, can_collect,

Modified: pypy/branch/tagged-pointers-framework/pypy/rpython/memory/gctransform/framework.py
==============================================================================
--- pypy/branch/tagged-pointers-framework/pypy/rpython/memory/gctransform/framework.py	(original)
+++ pypy/branch/tagged-pointers-framework/pypy/rpython/memory/gctransform/framework.py	Tue Jun 16 10:06:57 2009
@@ -843,7 +843,7 @@
             end = gcdata.static_root_nongcend
             while addr != end:
                 result = addr.address[0]
-                if self.gc.points_to_valid_gc_object(result):
+                if gc.points_to_valid_gc_object(result):
                     collect_static_in_prebuilt_nongc(gc, result)
                 addr += sizeofaddr
         if collect_static_in_prebuilt_gc:
@@ -851,7 +851,7 @@
             end = gcdata.static_root_end
             while addr != end:
                 result = addr.address[0]
-                if self.gc.points_to_valid_gc_object(result):
+                if gc.points_to_valid_gc_object(result):
                     collect_static_in_prebuilt_gc(gc, result)
                 addr += sizeofaddr
         if collect_stack_root:
@@ -909,7 +909,7 @@
         addr = gcdata.root_stack_base
         end = gcdata.root_stack_top
         while addr != end:
-            if self.gc.points_to_valid_gc_object(addr):
+            if gc.points_to_valid_gc_object(addr):
                 collect_stack_root(gc, addr)
             addr += sizeofaddr
         if self.collect_stacks_from_other_threads is not None:
@@ -1018,7 +1018,7 @@
                 end = stacktop - sizeofaddr
                 addr = end.address[0]
                 while addr != end:
-                    if addr.address[0] != llmemory.NULL:
+                    if gc.points_to_valid_gc_object(addr):
                         callback(gc, addr)
                     addr += sizeofaddr
 



More information about the Pypy-commit mailing list