@@ -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