< prev index next >

src/share/vm/memory/genCollectedHeap.cpp

Print this page




 683   CLDClosure* weak_cld_closure = only_strong_roots ? NULL : cld_closure;
 684 
 685   process_roots(scope, so,
 686                 not_older_gens, weak_roots,
 687                 cld_closure, weak_cld_closure,
 688                 &mark_code_closure);
 689 
 690   if (younger_gens_as_roots) {
 691     if (!_process_strong_tasks->is_task_claimed(GCH_PS_younger_gens)) {
 692       if (level == 1) {
 693         not_older_gens->set_generation(_young_gen);
 694         _young_gen->oop_iterate(not_older_gens);
 695       }
 696       not_older_gens->reset_generation();
 697     }
 698   }
 699   // When collection is parallel, all threads get to cooperate to do
 700   // older-gen scanning.
 701   if (level == 0) {
 702     older_gens->set_generation(_old_gen);
 703     rem_set()->younger_refs_iterate(_old_gen, older_gens);
 704     older_gens->reset_generation();
 705   }
 706 
 707   _process_strong_tasks->all_tasks_completed(scope->n_threads());
 708 }
 709 
 710 
 711 class AlwaysTrueClosure: public BoolObjectClosure {
 712 public:
 713   bool do_object_b(oop p) { return true; }
 714 };
 715 static AlwaysTrueClosure always_true;
 716 
 717 void GenCollectedHeap::gen_process_weak_roots(OopClosure* root_closure) {
 718   JNIHandles::weak_oops_do(&always_true, root_closure);
 719   _young_gen->ref_processor()->weak_oops_do(root_closure);
 720   _old_gen->ref_processor()->weak_oops_do(root_closure);
 721 }
 722 
 723 #define GCH_SINCE_SAVE_MARKS_ITERATE_DEFN(OopClosureType, nv_suffix)    \




 683   CLDClosure* weak_cld_closure = only_strong_roots ? NULL : cld_closure;
 684 
 685   process_roots(scope, so,
 686                 not_older_gens, weak_roots,
 687                 cld_closure, weak_cld_closure,
 688                 &mark_code_closure);
 689 
 690   if (younger_gens_as_roots) {
 691     if (!_process_strong_tasks->is_task_claimed(GCH_PS_younger_gens)) {
 692       if (level == 1) {
 693         not_older_gens->set_generation(_young_gen);
 694         _young_gen->oop_iterate(not_older_gens);
 695       }
 696       not_older_gens->reset_generation();
 697     }
 698   }
 699   // When collection is parallel, all threads get to cooperate to do
 700   // older-gen scanning.
 701   if (level == 0) {
 702     older_gens->set_generation(_old_gen);
 703     rem_set()->younger_refs_iterate(_old_gen, older_gens, scope->n_threads());
 704     older_gens->reset_generation();
 705   }
 706 
 707   _process_strong_tasks->all_tasks_completed(scope->n_threads());
 708 }
 709 
 710 
 711 class AlwaysTrueClosure: public BoolObjectClosure {
 712 public:
 713   bool do_object_b(oop p) { return true; }
 714 };
 715 static AlwaysTrueClosure always_true;
 716 
 717 void GenCollectedHeap::gen_process_weak_roots(OopClosure* root_closure) {
 718   JNIHandles::weak_oops_do(&always_true, root_closure);
 719   _young_gen->ref_processor()->weak_oops_do(root_closure);
 720   _old_gen->ref_processor()->weak_oops_do(root_closure);
 721 }
 722 
 723 #define GCH_SINCE_SAVE_MARKS_ITERATE_DEFN(OopClosureType, nv_suffix)    \


< prev index next >