647 CodeBlobClosure* code_closure = &mark_code_closure;
648
649 gen_process_roots(level,
650 younger_gens_as_roots,
651 activate_scope, so,
652 not_older_gens, only_strong_roots ? NULL : not_older_gens,
653 older_gens,
654 cld_closure, only_strong_roots ? NULL : cld_closure,
655 code_closure);
656
657 }
658
659 void GenCollectedHeap::gen_process_weak_roots(OopClosure* root_closure) {
660 SharedHeap::process_weak_roots(root_closure);
661 // "Local" "weak" refs
662 for (int i = 0; i < _n_gens; i++) {
663 _gens[i]->ref_processor()->weak_oops_do(root_closure);
664 }
665 }
666
667 #define GCH_SINCE_SAVE_MARKS_ITERATE_DEFN(OopClosureType, nv_suffix) \
668 void GenCollectedHeap:: \
669 oop_since_save_marks_iterate(int level, \
670 OopClosureType* cur, \
671 OopClosureType* older) { \
672 _gens[level]->oop_since_save_marks_iterate##nv_suffix(cur); \
673 for (int i = level+1; i < n_gens(); i++) { \
674 _gens[i]->oop_since_save_marks_iterate##nv_suffix(older); \
675 } \
676 }
677
678 ALL_SINCE_SAVE_MARKS_CLOSURES(GCH_SINCE_SAVE_MARKS_ITERATE_DEFN)
679
680 #undef GCH_SINCE_SAVE_MARKS_ITERATE_DEFN
681
682 bool GenCollectedHeap::no_allocs_since_save_marks(int level) {
683 for (int i = level; i < _n_gens; i++) {
684 if (!_gens[i]->no_allocs_since_save_marks()) return false;
685 }
686 return true;
687 }
688
689 bool GenCollectedHeap::supports_inline_contig_alloc() const {
690 return _gens[0]->supports_inline_contig_alloc();
691 }
692
693 HeapWord** GenCollectedHeap::top_addr() const {
694 return _gens[0]->top_addr();
695 }
696
697 HeapWord** GenCollectedHeap::end_addr() const {
698 return _gens[0]->end_addr();
699 }
700
701 // public collection interfaces
|
647 CodeBlobClosure* code_closure = &mark_code_closure;
648
649 gen_process_roots(level,
650 younger_gens_as_roots,
651 activate_scope, so,
652 not_older_gens, only_strong_roots ? NULL : not_older_gens,
653 older_gens,
654 cld_closure, only_strong_roots ? NULL : cld_closure,
655 code_closure);
656
657 }
658
659 void GenCollectedHeap::gen_process_weak_roots(OopClosure* root_closure) {
660 SharedHeap::process_weak_roots(root_closure);
661 // "Local" "weak" refs
662 for (int i = 0; i < _n_gens; i++) {
663 _gens[i]->ref_processor()->weak_oops_do(root_closure);
664 }
665 }
666
667 bool GenCollectedHeap::no_allocs_since_save_marks(int level) {
668 for (int i = level; i < _n_gens; i++) {
669 if (!_gens[i]->no_allocs_since_save_marks()) return false;
670 }
671 return true;
672 }
673
674 bool GenCollectedHeap::supports_inline_contig_alloc() const {
675 return _gens[0]->supports_inline_contig_alloc();
676 }
677
678 HeapWord** GenCollectedHeap::top_addr() const {
679 return _gens[0]->top_addr();
680 }
681
682 HeapWord** GenCollectedHeap::end_addr() const {
683 return _gens[0]->end_addr();
684 }
685
686 // public collection interfaces
|