611 FastScanClosure fsc_with_no_gc_barrier(this, false); |
611 FastScanClosure fsc_with_no_gc_barrier(this, false); |
612 FastScanClosure fsc_with_gc_barrier(this, true); |
612 FastScanClosure fsc_with_gc_barrier(this, true); |
613 |
613 |
614 KlassScanClosure klass_scan_closure(&fsc_with_no_gc_barrier, |
614 KlassScanClosure klass_scan_closure(&fsc_with_no_gc_barrier, |
615 gch->rem_set()->klass_rem_set()); |
615 gch->rem_set()->klass_rem_set()); |
|
616 CLDToKlassAndOopClosure cld_scan_closure(&klass_scan_closure, |
|
617 &fsc_with_no_gc_barrier, |
|
618 false); |
616 |
619 |
617 set_promo_failure_scan_stack_closure(&fsc_with_no_gc_barrier); |
620 set_promo_failure_scan_stack_closure(&fsc_with_no_gc_barrier); |
618 FastEvacuateFollowersClosure evacuate_followers(gch, _level, this, |
621 FastEvacuateFollowersClosure evacuate_followers(gch, _level, this, |
619 &fsc_with_no_gc_barrier, |
622 &fsc_with_no_gc_barrier, |
620 &fsc_with_gc_barrier); |
623 &fsc_with_gc_barrier); |
621 |
624 |
622 assert(gch->no_allocs_since_save_marks(0), |
625 assert(gch->no_allocs_since_save_marks(0), |
623 "save marks have not been newly set."); |
626 "save marks have not been newly set."); |
624 |
627 |
625 int so = SharedHeap::SO_AllClasses | SharedHeap::SO_Strings | SharedHeap::SO_ScavengeCodeCache; |
628 gch->gen_process_roots(_level, |
626 |
629 true, // Process younger gens, if any, |
627 gch->gen_process_strong_roots(_level, |
630 // as strong roots. |
628 true, // Process younger gens, if any, |
631 true, // activate StrongRootsScope |
629 // as strong roots. |
632 SharedHeap::SO_ScavengeCodeCache, |
630 true, // activate StrongRootsScope |
633 GenCollectedHeap::StrongAndWeakRoots, |
631 SharedHeap::ScanningOption(so), |
634 &fsc_with_no_gc_barrier, |
632 &fsc_with_no_gc_barrier, |
635 &fsc_with_gc_barrier, |
633 &fsc_with_gc_barrier, |
636 &cld_scan_closure); |
634 &klass_scan_closure); |
|
635 |
637 |
636 // "evacuate followers". |
638 // "evacuate followers". |
637 evacuate_followers.do_void(); |
639 evacuate_followers.do_void(); |
638 |
640 |
639 FastKeepAliveClosure keep_alive(this, &scan_weak_ref); |
641 FastKeepAliveClosure keep_alive(this, &scan_weak_ref); |