VM: replaced the reset_generation() generic method with one method for each generation
							parent
							
								
									dc9e937beb
								
							
						
					
					
						commit
						d2aea0f606
					
				| 
						 | 
				
			
			@ -33,7 +33,7 @@ void factor_vm::collect_aging() {
 | 
			
		|||
    current_gc->op = collect_aging_op;
 | 
			
		||||
 | 
			
		||||
    std::swap(data->aging, data->aging_semispace);
 | 
			
		||||
    data->reset_generation(data->aging);
 | 
			
		||||
    data->reset_aging();
 | 
			
		||||
 | 
			
		||||
    copying_collector<aging_space, aging_policy> collector(this,
 | 
			
		||||
                                                           this->data->aging,
 | 
			
		||||
| 
						 | 
				
			
			@ -43,7 +43,7 @@ void factor_vm::collect_aging() {
 | 
			
		|||
 | 
			
		||||
    collector.cheneys_algorithm();
 | 
			
		||||
 | 
			
		||||
    data->reset_generation(&nursery);
 | 
			
		||||
    data->reset_nursery();
 | 
			
		||||
    code->clear_remembered_set();
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -77,20 +77,20 @@ template <typename Generation> void data_heap::clear_decks(Generation* gen) {
 | 
			
		|||
  memset(&decks[first_deck], 0, last_deck - first_deck);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void data_heap::reset_generation(bump_allocator* gen) {
 | 
			
		||||
  gen->flush();
 | 
			
		||||
void data_heap::reset_nursery() {
 | 
			
		||||
  nursery->flush();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void data_heap::reset_generation(aging_space* gen) {
 | 
			
		||||
  gen->flush();
 | 
			
		||||
  clear_cards(gen);
 | 
			
		||||
  clear_decks(gen);
 | 
			
		||||
  gen->starts.clear_object_start_offsets();
 | 
			
		||||
void data_heap::reset_aging() {
 | 
			
		||||
  aging->flush();
 | 
			
		||||
  clear_cards(aging);
 | 
			
		||||
  clear_decks(aging);
 | 
			
		||||
  aging->starts.clear_object_start_offsets();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void data_heap::reset_generation(tenured_space* gen) {
 | 
			
		||||
  clear_cards(gen);
 | 
			
		||||
  clear_decks(gen);
 | 
			
		||||
void data_heap::reset_tenured() {
 | 
			
		||||
  clear_cards(tenured);
 | 
			
		||||
  clear_decks(tenured);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
bool data_heap::high_fragmentation_p() {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -29,9 +29,9 @@ struct data_heap {
 | 
			
		|||
  data_heap* grow(bump_allocator* vm_nursery, cell requested_size);
 | 
			
		||||
  template <typename Generation> void clear_cards(Generation* gen);
 | 
			
		||||
  template <typename Generation> void clear_decks(Generation* gen);
 | 
			
		||||
  void reset_generation(bump_allocator* gen);
 | 
			
		||||
  void reset_generation(aging_space* gen);
 | 
			
		||||
  void reset_generation(tenured_space* gen);
 | 
			
		||||
  void reset_nursery();
 | 
			
		||||
  void reset_aging();
 | 
			
		||||
  void reset_tenured();
 | 
			
		||||
  bool high_fragmentation_p();
 | 
			
		||||
  bool low_memory_p();
 | 
			
		||||
  void mark_all_cards();
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -59,10 +59,9 @@ void factor_vm::collect_mark_impl(bool trace_contexts_p) {
 | 
			
		|||
      code_visitor.visit_object_code_block(obj);
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  data->reset_generation(data->tenured);
 | 
			
		||||
  data->reset_generation(data->aging);
 | 
			
		||||
  data->reset_generation(&nursery);
 | 
			
		||||
  data->reset_tenured();
 | 
			
		||||
  data->reset_aging();
 | 
			
		||||
  data->reset_nursery();
 | 
			
		||||
  code->clear_remembered_set();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -31,7 +31,7 @@ void factor_vm::collect_nursery() {
 | 
			
		|||
 | 
			
		||||
  collector.cheneys_algorithm();
 | 
			
		||||
 | 
			
		||||
  data->reset_generation(&nursery);
 | 
			
		||||
  data->reset_nursery();
 | 
			
		||||
  code->points_to_nursery.clear();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -41,8 +41,8 @@ void factor_vm::collect_to_tenured() {
 | 
			
		|||
 | 
			
		||||
  collector.tenure_reachable_objects();
 | 
			
		||||
 | 
			
		||||
  data->reset_generation(&nursery);
 | 
			
		||||
  data->reset_generation(data->aging);
 | 
			
		||||
  data->reset_nursery();
 | 
			
		||||
  data->reset_aging();
 | 
			
		||||
  code->clear_remembered_set();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue