604
605 Generation* old_gen = gch->next_gen(_gen);
606
607 ParScanThreadState& par_scan_state = _state_set->thread_state(worker_id);
608 assert(_state_set->is_valid(worker_id), "Should not have been called");
609
610 par_scan_state.set_young_old_boundary(_young_old_boundary);
611
612 KlassScanClosure klass_scan_closure(&par_scan_state.to_space_root_closure(),
613 gch->rem_set()->klass_rem_set());
614
615 int so = SharedHeap::SO_AllClasses | SharedHeap::SO_Strings | SharedHeap::SO_ScavengeCodeCache;
616
617 par_scan_state.start_strong_roots();
618 gch->gen_process_strong_roots(_gen->level(),
619 true, // Process younger gens, if any,
620 // as strong roots.
621 false, // no scope; this is parallel code
622 SharedHeap::ScanningOption(so),
623 &par_scan_state.to_space_root_closure(),
624 true, // walk *all* scavengable nmethods
625 &par_scan_state.older_gen_closure(),
626 &klass_scan_closure);
627 par_scan_state.end_strong_roots();
628
629 // "evacuate followers".
630 par_scan_state.evacuate_followers_closure().do_void();
631 }
632
633 #ifdef _MSC_VER
634 #pragma warning( push )
635 #pragma warning( disable:4355 ) // 'this' : used in base member initializer list
636 #endif
637 ParNewGeneration::
638 ParNewGeneration(ReservedSpace rs, size_t initial_byte_size, int level)
639 : DefNewGeneration(rs, initial_byte_size, level, "PCopy"),
640 _overflow_list(NULL),
641 _is_alive_closure(this),
642 _plab_stats(YoungPLABSize, PLABWeight)
643 {
644 NOT_PRODUCT(_overflow_counter = ParGCWorkQueueOverflowInterval;)
|
604
605 Generation* old_gen = gch->next_gen(_gen);
606
607 ParScanThreadState& par_scan_state = _state_set->thread_state(worker_id);
608 assert(_state_set->is_valid(worker_id), "Should not have been called");
609
610 par_scan_state.set_young_old_boundary(_young_old_boundary);
611
612 KlassScanClosure klass_scan_closure(&par_scan_state.to_space_root_closure(),
613 gch->rem_set()->klass_rem_set());
614
615 int so = SharedHeap::SO_AllClasses | SharedHeap::SO_Strings | SharedHeap::SO_ScavengeCodeCache;
616
617 par_scan_state.start_strong_roots();
618 gch->gen_process_strong_roots(_gen->level(),
619 true, // Process younger gens, if any,
620 // as strong roots.
621 false, // no scope; this is parallel code
622 SharedHeap::ScanningOption(so),
623 &par_scan_state.to_space_root_closure(),
624 &par_scan_state.older_gen_closure(),
625 &klass_scan_closure);
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),
641 _plab_stats(YoungPLABSize, PLABWeight)
642 {
643 NOT_PRODUCT(_overflow_counter = ParGCWorkQueueOverflowInterval;)
|