--- old/src/share/vm/gc/shared/genCollectedHeap.cpp 2016-09-20 14:39:29.227228771 +0200 +++ new/src/share/vm/gc/shared/genCollectedHeap.cpp 2016-09-20 14:39:29.083223148 +0200 @@ -666,15 +666,13 @@ _process_strong_tasks->all_tasks_completed(scope->n_threads()); } -void GenCollectedHeap::old_process_roots(StrongRootsScope* scope, +void GenCollectedHeap::cms_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); + 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; @@ -689,6 +687,21 @@ _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);