611 |
611 |
612 par_scan_state.set_young_old_boundary(_young_old_boundary); |
612 par_scan_state.set_young_old_boundary(_young_old_boundary); |
613 |
613 |
614 KlassScanClosure klass_scan_closure(&par_scan_state.to_space_root_closure(), |
614 KlassScanClosure klass_scan_closure(&par_scan_state.to_space_root_closure(), |
615 gch->rem_set()->klass_rem_set()); |
615 gch->rem_set()->klass_rem_set()); |
616 |
616 CLDToKlassAndOopClosure cld_scan_closure(&klass_scan_closure, |
617 int so = SharedHeap::SO_AllClasses | SharedHeap::SO_Strings | SharedHeap::SO_ScavengeCodeCache; |
617 &par_scan_state.to_space_root_closure(), |
|
618 false); |
618 |
619 |
619 par_scan_state.start_strong_roots(); |
620 par_scan_state.start_strong_roots(); |
620 gch->gen_process_strong_roots(_gen->level(), |
621 gch->gen_process_roots(_gen->level(), |
621 true, // Process younger gens, if any, |
622 true, // Process younger gens, if any, |
622 // as strong roots. |
623 // as strong roots. |
623 false, // no scope; this is parallel code |
624 false, // no scope; this is parallel code |
624 SharedHeap::ScanningOption(so), |
625 SharedHeap::SO_ScavengeCodeCache, |
625 &par_scan_state.to_space_root_closure(), |
626 GenCollectedHeap::StrongAndWeakRoots, |
626 &par_scan_state.older_gen_closure(), |
627 &par_scan_state.to_space_root_closure(), |
627 &klass_scan_closure); |
628 &par_scan_state.older_gen_closure(), |
|
629 &cld_scan_closure); |
|
630 |
628 par_scan_state.end_strong_roots(); |
631 par_scan_state.end_strong_roots(); |
629 |
632 |
630 // "evacuate followers". |
633 // "evacuate followers". |
631 par_scan_state.evacuate_followers_closure().do_void(); |
634 par_scan_state.evacuate_followers_closure().do_void(); |
632 } |
635 } |