summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gc/default.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/gc/default.c b/gc/default.c
index ee19d8e7af..b82fdeffce 100644
--- a/gc/default.c
+++ b/gc/default.c
@@ -2636,7 +2636,10 @@ newobj_alloc(rb_objspace_t *objspace, rb_ractor_newobj_cache_t *cache, size_t si
obj = newobj_cache_miss(objspace, cache, size_pool_idx, vm_locked);
}
- size_pools[size_pool_idx].total_allocated_objects++;
+ rb_size_pool_t *size_pool = &size_pools[size_pool_idx];
+ size_pool->total_allocated_objects++;
+ GC_ASSERT(SIZE_POOL_EDEN_HEAP(size_pool)->total_slots + SIZE_POOL_TOMB_HEAP(size_pool)->total_slots >=
+ (size_pool->total_allocated_objects - size_pool->total_freed_objects - size_pool->final_slots_count));
return obj;
}
@@ -7284,6 +7287,9 @@ gc_move(rb_objspace_t *objspace, VALUE src, VALUE dest, size_t src_slot_size, si
RMOVED(src)->destination = dest;
GC_ASSERT(BUILTIN_TYPE(dest) != T_NONE);
+ GET_HEAP_PAGE(src)->size_pool->total_freed_objects++;
+ GET_HEAP_PAGE(dest)->size_pool->total_allocated_objects++;
+
return src;
}