< prev index next >

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

Print this page
rev 7994 : Move remaining root processing to GenCollectedHeap


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




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


< prev index next >