Add assertion to allocobj that live unmarked object cannot be reclaimed
authorIvan Maidanski <ivmai@mail.ru>
Thu, 19 Jan 2017 07:45:22 +0000 (10:45 +0300)
committerIvan Maidanski <ivmai@mail.ru>
Thu, 19 Jan 2017 07:45:22 +0000 (10:45 +0300)
* alloc.c (GC_allocobj): Add assertion before GC_continue_reclaim call
that either GC_is_full_gc is FALSE or the corresponding ok_reclaim_list
element is NULL (i.e. GC_continue_reclaim call is a no-op).

alloc.c

diff --git a/alloc.c b/alloc.c
index 0db6458..ebbfb3e 100644 (file)
--- a/alloc.c
+++ b/alloc.c
@@ -1426,6 +1426,9 @@ GC_INNER ptr_t GC_allocobj(size_t gran, int kind)
       /* Do our share of marking work */
         if(TRUE_INCREMENTAL) GC_collect_a_little_inner(1);
       /* Sweep blocks for objects of this size */
+        GC_ASSERT(!GC_is_full_gc
+                  || NULL == GC_obj_kinds[kind].ok_reclaim_list
+                  || NULL == GC_obj_kinds[kind].ok_reclaim_list[gran]);
         GC_continue_reclaim(gran, kind);
       EXIT_GC();
       if (*flh == 0) {