From 1f2e747ac47679cdd23225c8bb14e51a3600e504 Mon Sep 17 00:00:00 2001 From: Slava Pestov Date: Sun, 1 Nov 2009 23:14:34 -0600 Subject: [PATCH] vm: promote objects referenced from compiled code blocks directly to tenured in an aging collection --- vm/aging_collector.cpp | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/vm/aging_collector.cpp b/vm/aging_collector.cpp index 1979769b81..3572677aa6 100644 --- a/vm/aging_collector.cpp +++ b/vm/aging_collector.cpp @@ -28,7 +28,15 @@ void factor_vm::collect_aging() full_unmarker()); current_gc->event->ended_card_scan(collector.cards_scanned,collector.decks_scanned); + current_gc->event->started_code_scan(); + collector.trace_code_heap_roots(&code->points_to_aging); + current_gc->event->ended_code_scan(collector.code_blocks_scanned); + collector.tenure_reachable_objects(); + + current_gc->event->started_code_sweep(); + update_code_heap_for_minor_gc(&code->points_to_aging); + current_gc->event->ended_code_sweep(); } { /* If collection fails here, do a to_tenured collection. */ @@ -42,18 +50,11 @@ void factor_vm::collect_aging() collector.trace_roots(); collector.trace_contexts(); - current_gc->event->started_code_scan(); - collector.trace_code_heap_roots(&code->points_to_aging); - current_gc->event->ended_code_scan(collector.code_blocks_scanned); - collector.cheneys_algorithm(); - current_gc->event->started_code_sweep(); - update_code_heap_for_minor_gc(&code->points_to_aging); - current_gc->event->ended_code_sweep(); - data->reset_generation(&nursery); code->points_to_nursery.clear(); + code->points_to_aging.clear(); } }