Author: Whiteknight
Date: Tue Dec 23 18:58:02 2008
New Revision: 34313

Modified:
   branches/pdd09gc_part1/src/gc/incremental_ms.c
   branches/pdd09gc_part1/src/gc/smallobject.c
   branches/pdd09gc_part1/src/headers.c

Log:
[pdd09gc_part1] fix a failed assertion, fix a segfault, and keep pmc_ext 
managed by the old ms collector. This solves A LOT of problems

Modified: branches/pdd09gc_part1/src/gc/incremental_ms.c
==============================================================================
--- branches/pdd09gc_part1/src/gc/incremental_ms.c      (original)
+++ branches/pdd09gc_part1/src/gc/incremental_ms.c      Tue Dec 23 18:58:02 2008
@@ -830,7 +830,7 @@
     PObj * p = (PObj*)to_add;
     Gc_it_hdr * const hdr = PObj_to_IT_HDR(p);
     PARROT_ASSERT(IT_HDR_to_PObj(hdr) == p);
-    PARROT_ASSERT(contained_in_pool(pool, p));
+    //PARROT_ASSERT(contained_in_pool(pool, p));
     gc_it_add_free_header(interp, pool, hdr);
 }
 

Modified: branches/pdd09gc_part1/src/gc/smallobject.c
==============================================================================
--- branches/pdd09gc_part1/src/gc/smallobject.c (original)
+++ branches/pdd09gc_part1/src/gc/smallobject.c Tue Dec 23 18:58:02 2008
@@ -54,7 +54,11 @@
             (ptrdiff_t)ptr - (ptrdiff_t)arena->start_objects;
 
         if (0 <= ptr_diff
+#if PARROT_GC_IT
+                && ptr_diff < (ptrdiff_t)(arena->total_objects * 
pool->object_size)
+#else
                 && ptr_diff < (ptrdiff_t)(arena->used * pool->object_size)
+#endif
                 && ptr_diff % pool->object_size == 0)
             return 1;
     }

Modified: branches/pdd09gc_part1/src/headers.c
==============================================================================
--- branches/pdd09gc_part1/src/headers.c        (original)
+++ branches/pdd09gc_part1/src/headers.c        Tue Dec 23 18:58:02 2008
@@ -706,6 +706,8 @@
      * Use GS MS pool functions
      */
     gc_pmc_ext_pool_init(arena_base->pmc_ext_pool);
+#elif PARROT_GC_IT
+    gc_pmc_ext_pool_init(arena_base->pmc_ext_pool);
 #else
     /* rational, consistant behavior (as yet unwritten) */
 #endif

Reply via email to