Skip to content

Commit 09fa13b

Browse files
committed
Turn off background sweep page bookkeeping
1 parent 4cda148 commit 09fa13b

1 file changed

Lines changed: 0 additions & 66 deletions

File tree

gc/default/default.c

Lines changed: 0 additions & 66 deletions
Original file line numberDiff line numberDiff line change
@@ -490,7 +490,6 @@ typedef struct rb_heap_struct {
490490
rb_atomic_t background_sweep_steps; // only incremented/checked by sweep thread
491491
rb_nativethread_cond_t sweep_page_cond; // associated with global sweep lock
492492
rb_nativethread_lock_t swept_pages_lock;
493-
size_t pre_swept_slots_nodeferred;
494493
size_t pre_swept_slots_deferred;
495494
deferred_sweep_data_t deferred_sweep_data;
496495
bool is_finished_sweeping;
@@ -4690,63 +4689,6 @@ gc_sweep_step_worker(rb_objspace_t *objspace, rb_heap_t *heap)
46904689
int pre_empty_slots = sweep_page->pre_empty_slots;
46914690
int free_slots = pre_freed_slots + pre_empty_slots;
46924691

4693-
if (objspace->background_sweep_mode && sweep_page->pre_deferred_free_slots == 0) {
4694-
if (free_slots == sweep_page->total_slots) {
4695-
GC_ASSERT(sweep_page->total_slots > 0);
4696-
psweep_debug(-6, "[sweep] (bg) gc_sweep_step_worker: heap %ld adding to empty_pages:%p (pre_empty:%d, pre_freed:%d)\n",
4697-
heap - heaps, sweep_page, sweep_page->pre_empty_slots, sweep_page->pre_freed_slots);
4698-
// We're guaranteed to stay in background mode during this (starting GC requires taking the
4699-
// sweep_lock to change sweep background mode to false)
4700-
GC_ASSERT(sweep_page->pre_final_slots == 0);
4701-
clear_pre_sweep_fields(sweep_page);
4702-
gc_post_sweep_page(objspace, heap, sweep_page, true);
4703-
move_to_empty_pages(objspace, heap, sweep_page);
4704-
continue;
4705-
}
4706-
else if (free_slots > 0) {
4707-
// These are just for statistics, not used in calculations
4708-
heap->freed_slots += sweep_page->pre_freed_slots;
4709-
heap->empty_slots += sweep_page->pre_empty_slots;
4710-
4711-
sweep_page->free_slots = free_slots;
4712-
sweep_page->heap->total_freed_objects += sweep_page->pre_freed_slots;
4713-
clear_pre_sweep_fields(sweep_page);
4714-
gc_post_sweep_page(objspace, heap, sweep_page, false);
4715-
if (sweep_page->deferred_freelist) {
4716-
merge_freelists(sweep_page->deferred_freelist, sweep_page->freelist);
4717-
sweep_page->freelist = sweep_page->deferred_freelist;
4718-
}
4719-
sweep_page->deferred_freelist = NULL;
4720-
if (heap->pre_swept_slots_nodeferred < GC_INCREMENTAL_SWEEP_POOL_SLOT_COUNT) {
4721-
psweep_debug(-6, "[sweep] (bg) gc_sweep_step_worker: heap %ld adding to pooled pages:%p (pre_empty:%d, pre_freed:%d, pre_swept:%lu->%lu)\n",
4722-
heap - heaps, sweep_page, pre_empty_slots, pre_freed_slots, heap->pre_swept_slots_nodeferred,
4723-
heap->pre_swept_slots_nodeferred + free_slots);
4724-
heap->pre_swept_slots_nodeferred += free_slots;
4725-
heap_add_poolpage(objspace, heap, sweep_page);
4726-
continue;
4727-
}
4728-
else {
4729-
psweep_debug(-6, "[sweep] (bg) gc_sweep_step_worker: heap %ld adding to free pages:%p (pre_empty:%d, pre_freed:%d, pre_swept:%lu->%lu)\n",
4730-
heap - heaps, sweep_page, pre_empty_slots, pre_freed_slots, heap->pre_swept_slots_nodeferred,
4731-
heap->pre_swept_slots_nodeferred + free_slots);
4732-
heap_add_freepage(heap, sweep_page, "gc_sweep_step_worker");
4733-
heap->pre_swept_slots_nodeferred += free_slots;
4734-
if (heap->pre_swept_slots_nodeferred > (GC_INCREMENTAL_SWEEP_SLOT_COUNT + GC_INCREMENTAL_SWEEP_POOL_SLOT_COUNT)) {
4735-
heap->pre_swept_slots_nodeferred = 0;
4736-
/*break;*/
4737-
}
4738-
continue;
4739-
}
4740-
}
4741-
else {
4742-
// Don't even add to `swept_pages`, no further processing needed by ruby thread (no free slots)
4743-
clear_pre_sweep_fields(sweep_page);
4744-
gc_post_sweep_page(objspace, heap, sweep_page, false);
4745-
continue;
4746-
}
4747-
}
4748-
4749-
47504692
#if PSWEEP_LOCK_STATS > 0
47514693
instrumented_lock_acquire(&heap->swept_pages_lock, &swept_pages_lock_stats);
47524694
#else
@@ -4857,7 +4799,6 @@ gc_sweep_start_heap(rb_objspace_t *objspace, rb_heap_t *heap)
48574799
heap->swept_pages = NULL;
48584800
heap->pooled_pages = NULL;
48594801
heap->latest_swept_page = NULL;
4860-
heap->pre_swept_slots_nodeferred = 0;
48614802
heap->pre_swept_slots_deferred = 0;
48624803

48634804
heap->pre_sweeping_page = NULL;
@@ -5180,13 +5121,6 @@ gc_sweep_step(rb_objspace_t *objspace, rb_heap_t *heap)
51805121
{
51815122
size_t swept_slots = 0;
51825123
size_t pooled_slots = 0;
5183-
if (heap->pre_swept_slots_nodeferred >= GC_INCREMENTAL_SWEEP_POOL_SLOT_COUNT) {
5184-
swept_slots = heap->pre_swept_slots_nodeferred - GC_INCREMENTAL_SWEEP_POOL_SLOT_COUNT;
5185-
}
5186-
else if (heap->pre_swept_slots_nodeferred > 0) {
5187-
pooled_slots = heap->pre_swept_slots_nodeferred;
5188-
}
5189-
heap->pre_swept_slots_nodeferred = 0;
51905124

51915125
#if VM_CHECK_MODE > 0
51925126
sweep_lock_lock(&objspace->sweep_lock);

0 commit comments

Comments
 (0)