218 void CMSHeap::cms_process_roots(StrongRootsScope* scope, |
218 void CMSHeap::cms_process_roots(StrongRootsScope* scope, |
219 bool young_gen_as_roots, |
219 bool young_gen_as_roots, |
220 ScanningOption so, |
220 ScanningOption so, |
221 bool only_strong_roots, |
221 bool only_strong_roots, |
222 OopsInGenClosure* root_closure, |
222 OopsInGenClosure* root_closure, |
223 CLDClosure* cld_closure) { |
223 CLDClosure* cld_closure, |
|
224 OopStorage::ParState<false, false>* par_state_string) { |
224 MarkingCodeBlobClosure mark_code_closure(root_closure, !CodeBlobToOopClosure::FixRelocations); |
225 MarkingCodeBlobClosure mark_code_closure(root_closure, !CodeBlobToOopClosure::FixRelocations); |
225 CLDClosure* weak_cld_closure = only_strong_roots ? NULL : cld_closure; |
226 CLDClosure* weak_cld_closure = only_strong_roots ? NULL : cld_closure; |
226 |
227 |
227 process_roots(scope, so, root_closure, cld_closure, weak_cld_closure, &mark_code_closure); |
228 process_roots(scope, so, root_closure, cld_closure, weak_cld_closure, &mark_code_closure); |
228 if (!only_strong_roots) { |
229 if (!only_strong_roots) { |
229 process_string_table_roots(scope, root_closure); |
230 process_string_table_roots(scope, root_closure, par_state_string); |
230 } |
231 } |
231 |
232 |
232 if (young_gen_as_roots && |
233 if (young_gen_as_roots && |
233 !_process_strong_tasks->is_task_claimed(GCH_PS_younger_gens)) { |
234 !_process_strong_tasks->is_task_claimed(GCH_PS_younger_gens)) { |
234 root_closure->set_generation(young_gen()); |
235 root_closure->set_generation(young_gen()); |