Skip to content

Commit 34cca18

Browse files
committed
Add more assertions to default.c
1 parent 6fbe2dd commit 34cca18

File tree

1 file changed

+14
-7
lines changed

1 file changed

+14
-7
lines changed

gc/default/default.c

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1853,7 +1853,10 @@ static struct heap_page *
18531853
heap_page_resurrect(rb_objspace_t *objspace)
18541854
{
18551855
struct heap_page *page = NULL;
1856-
if (objspace->empty_pages != NULL) {
1856+
if (objspace->empty_pages == NULL) {
1857+
GC_ASSERT(objspace->empty_pages_count == 0);
1858+
}
1859+
else {
18571860
GC_ASSERT(objspace->empty_pages_count > 0);
18581861
objspace->empty_pages_count--;
18591862
page = objspace->empty_pages;
@@ -1973,6 +1976,8 @@ heap_page_allocate_and_initialize(rb_objspace_t *objspace, rb_heap_t *heap)
19731976
if (page == NULL && objspace->heap_pages.allocatable_slots > 0) {
19741977
page = heap_page_allocate(objspace);
19751978
allocated = true;
1979+
1980+
GC_ASSERT(page != NULL);
19761981
}
19771982

19781983
if (page != NULL) {
@@ -3922,12 +3927,14 @@ gc_sweep_continue(rb_objspace_t *objspace, rb_heap_t *sweep_heap)
39223927

39233928
for (int i = 0; i < HEAP_COUNT; i++) {
39243929
rb_heap_t *heap = &heaps[i];
3925-
if (!gc_sweep_step(objspace, heap)) {
3926-
if (heap == sweep_heap && objspace->empty_pages_count == 0 && objspace->heap_pages.allocatable_slots == 0) {
3927-
/* Not allowed to create a new page so finish sweeping. */
3928-
gc_sweep_rest(objspace);
3929-
break;
3930-
}
3930+
if (gc_sweep_step(objspace, heap)) {
3931+
GC_ASSERT(heap->free_pages != NULL);
3932+
}
3933+
else if (heap == sweep_heap && objspace->empty_pages_count == 0 && objspace->heap_pages.allocatable_slots == 0) {
3934+
/* Not allowed to create a new page so finish sweeping. */
3935+
gc_sweep_rest(objspace);
3936+
GC_ASSERT(gc_mode(objspace) == gc_mode_none);
3937+
break;
39313938
}
39323939
}
39333940

0 commit comments

Comments
 (0)