< prev index next >

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

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


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




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


< prev index next >