src/share/vm/memory/genCollectedHeap.cpp

Print this page
rev 6796 : [mq]: templateOopIterate


 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