< prev index next >

src/share/vm/gc/shared/genCollectedHeap.cpp

Print this page
rev 11983 : 8166276: Refactor gen_process_roots to allow simpler fix for 8165949
Reviewed-by:
Contributed-by: jesper.wilhelmsson@oracle.com
rev 11985 : 8165949: Serial and ConcMarkSweep do not unload strings when class unloading is disabled
Reviewed-by:
rev 11986 : [mq]: 8165949-on-jesper-mik-rev

*** 664,682 **** old_gen_closure->reset_generation(); _process_strong_tasks->all_tasks_completed(scope->n_threads()); } ! void GenCollectedHeap::old_process_roots(StrongRootsScope* scope, bool young_gen_as_roots, ScanningOption so, bool only_strong_roots, OopsInGenClosure* root_closure, CLDClosure* cld_closure) { ! const bool is_moving_collection = !only_strong_roots && !young_gen_as_roots; ! ! MarkingCodeBlobClosure mark_code_closure(root_closure, is_moving_collection); OopsInGenClosure* weak_roots = only_strong_roots ? NULL : root_closure; CLDClosure* weak_cld_closure = only_strong_roots ? NULL : cld_closure; process_roots(scope, so, root_closure, weak_roots, cld_closure, weak_cld_closure, &mark_code_closure); --- 664,680 ---- old_gen_closure->reset_generation(); _process_strong_tasks->all_tasks_completed(scope->n_threads()); } ! void GenCollectedHeap::cms_process_roots(StrongRootsScope* scope, bool young_gen_as_roots, ScanningOption so, bool only_strong_roots, OopsInGenClosure* root_closure, CLDClosure* cld_closure) { ! MarkingCodeBlobClosure mark_code_closure(root_closure, !CodeBlobToOopClosure::FixRelocations); OopsInGenClosure* weak_roots = only_strong_roots ? NULL : root_closure; CLDClosure* weak_cld_closure = only_strong_roots ? NULL : cld_closure; process_roots(scope, so, root_closure, weak_roots, cld_closure, weak_cld_closure, &mark_code_closure);
*** 688,697 **** --- 686,710 ---- } _process_strong_tasks->all_tasks_completed(scope->n_threads()); } + void GenCollectedHeap::full_process_roots(StrongRootsScope* scope, + bool only_strong_roots, + ScanningOption so, + bool is_adjust_phase, + OopsInGenClosure* root_closure, + CLDClosure* cld_closure) { + MarkingCodeBlobClosure mark_code_closure(root_closure, is_adjust_phase); + OopsInGenClosure* weak_roots = is_adjust_phase ? root_closure : NULL; + CLDClosure* weak_cld_closure = only_strong_roots ? NULL : cld_closure; + + process_roots(scope, so, root_closure, weak_roots, cld_closure, weak_cld_closure, &mark_code_closure); + + _process_strong_tasks->all_tasks_completed(scope->n_threads()); + } + void GenCollectedHeap::gen_process_weak_roots(OopClosure* root_closure) { JNIHandles::weak_oops_do(root_closure); _young_gen->ref_processor()->weak_oops_do(root_closure); _old_gen->ref_processor()->weak_oops_do(root_closure); }
< prev index next >