< prev index next >

src/share/vm/gc_implementation/parNew/parNewGeneration.cpp

Print this page




 605   assert(gch->n_gens() == 2, "Par young collection currently only works with one older gen.");
 606 
 607   Generation* old_gen = gch->next_gen(_gen);
 608 
 609   ParScanThreadState& par_scan_state = _state_set->thread_state(worker_id);
 610   assert(_state_set->is_valid(worker_id), "Should not have been called");
 611 
 612   par_scan_state.set_young_old_boundary(_young_old_boundary);
 613 
 614   KlassScanClosure klass_scan_closure(&par_scan_state.to_space_root_closure(),
 615                                       gch->rem_set()->klass_rem_set());
 616   CLDToKlassAndOopClosure cld_scan_closure(&klass_scan_closure,
 617                                            &par_scan_state.to_space_root_closure(),
 618                                            false);
 619 
 620   par_scan_state.start_strong_roots();
 621   gch->gen_process_roots(_gen->level(),
 622                          true,  // Process younger gens, if any,
 623                                 // as strong roots.
 624                          false, // no scope; this is parallel code
 625                          SharedHeap::SO_ScavengeCodeCache,
 626                          GenCollectedHeap::StrongAndWeakRoots,
 627                          &par_scan_state.to_space_root_closure(),
 628                          &par_scan_state.older_gen_closure(),
 629                          &cld_scan_closure);
 630 
 631   par_scan_state.end_strong_roots();
 632 
 633   // "evacuate followers".
 634   par_scan_state.evacuate_followers_closure().do_void();
 635 }
 636 
 637 #ifdef _MSC_VER
 638 #pragma warning( push )
 639 #pragma warning( disable:4355 ) // 'this' : used in base member initializer list
 640 #endif
 641 ParNewGeneration::
 642 ParNewGeneration(ReservedSpace rs, size_t initial_byte_size, int level)
 643   : DefNewGeneration(rs, initial_byte_size, level, "PCopy"),
 644   _overflow_list(NULL),
 645   _is_alive_closure(this),




 605   assert(gch->n_gens() == 2, "Par young collection currently only works with one older gen.");
 606 
 607   Generation* old_gen = gch->next_gen(_gen);
 608 
 609   ParScanThreadState& par_scan_state = _state_set->thread_state(worker_id);
 610   assert(_state_set->is_valid(worker_id), "Should not have been called");
 611 
 612   par_scan_state.set_young_old_boundary(_young_old_boundary);
 613 
 614   KlassScanClosure klass_scan_closure(&par_scan_state.to_space_root_closure(),
 615                                       gch->rem_set()->klass_rem_set());
 616   CLDToKlassAndOopClosure cld_scan_closure(&klass_scan_closure,
 617                                            &par_scan_state.to_space_root_closure(),
 618                                            false);
 619 
 620   par_scan_state.start_strong_roots();
 621   gch->gen_process_roots(_gen->level(),
 622                          true,  // Process younger gens, if any,
 623                                 // as strong roots.
 624                          false, // no scope; this is parallel code
 625                          GenCollectedHeap::SO_ScavengeCodeCache,
 626                          GenCollectedHeap::StrongAndWeakRoots,
 627                          &par_scan_state.to_space_root_closure(),
 628                          &par_scan_state.older_gen_closure(),
 629                          &cld_scan_closure);
 630 
 631   par_scan_state.end_strong_roots();
 632 
 633   // "evacuate followers".
 634   par_scan_state.evacuate_followers_closure().do_void();
 635 }
 636 
 637 #ifdef _MSC_VER
 638 #pragma warning( push )
 639 #pragma warning( disable:4355 ) // 'this' : used in base member initializer list
 640 #endif
 641 ParNewGeneration::
 642 ParNewGeneration(ReservedSpace rs, size_t initial_byte_size, int level)
 643   : DefNewGeneration(rs, initial_byte_size, level, "PCopy"),
 644   _overflow_list(NULL),
 645   _is_alive_closure(this),


< prev index next >