4858 CodeBlobClosure* strong_code_cl; |
4858 CodeBlobClosure* strong_code_cl; |
4859 |
4859 |
4860 if (_g1h->g1_policy()->during_initial_mark_pause()) { |
4860 if (_g1h->g1_policy()->during_initial_mark_pause()) { |
4861 // We also need to mark copied objects. |
4861 // We also need to mark copied objects. |
4862 strong_root_cl = &scan_mark_root_cl; |
4862 strong_root_cl = &scan_mark_root_cl; |
4863 weak_root_cl = &scan_mark_weak_root_cl; |
|
4864 strong_cld_cl = &scan_mark_cld_cl; |
4863 strong_cld_cl = &scan_mark_cld_cl; |
4865 weak_cld_cl = &scan_mark_weak_cld_cl; |
|
4866 strong_code_cl = &scan_mark_code_cl; |
4864 strong_code_cl = &scan_mark_code_cl; |
|
4865 if (ClassUnloadingWithConcurrentMark) { |
|
4866 weak_root_cl = &scan_mark_weak_root_cl; |
|
4867 weak_cld_cl = &scan_mark_weak_cld_cl; |
|
4868 } else { |
|
4869 weak_root_cl = &scan_mark_root_cl; |
|
4870 weak_cld_cl = &scan_mark_cld_cl; |
|
4871 } |
4867 } else { |
4872 } else { |
4868 strong_root_cl = &scan_only_root_cl; |
4873 strong_root_cl = &scan_only_root_cl; |
4869 weak_root_cl = &scan_only_root_cl; |
4874 weak_root_cl = &scan_only_root_cl; |
4870 strong_cld_cl = &scan_only_cld_cl; |
4875 strong_cld_cl = &scan_only_cld_cl; |
4871 weak_cld_cl = &scan_only_cld_cl; |
4876 weak_cld_cl = &scan_only_cld_cl; |
4932 // First scan the shared roots. |
4937 // First scan the shared roots. |
4933 double ext_roots_start = os::elapsedTime(); |
4938 double ext_roots_start = os::elapsedTime(); |
4934 double closure_app_time_sec = 0.0; |
4939 double closure_app_time_sec = 0.0; |
4935 |
4940 |
4936 bool during_im = _g1h->g1_policy()->during_initial_mark_pause(); |
4941 bool during_im = _g1h->g1_policy()->during_initial_mark_pause(); |
|
4942 bool trace_metadata = during_im && ClassUnloadingWithConcurrentMark; |
4937 |
4943 |
4938 BufferingOopClosure buf_scan_non_heap_roots(scan_non_heap_roots); |
4944 BufferingOopClosure buf_scan_non_heap_roots(scan_non_heap_roots); |
4939 BufferingOopClosure buf_scan_non_heap_weak_roots(scan_non_heap_weak_roots); |
4945 BufferingOopClosure buf_scan_non_heap_weak_roots(scan_non_heap_weak_roots); |
4940 |
4946 |
4941 process_roots(false, // no scoping; this is parallel code |
4947 process_roots(false, // no scoping; this is parallel code |
4942 SharedHeap::SO_None, |
4948 SharedHeap::SO_None, |
4943 &buf_scan_non_heap_roots, |
4949 &buf_scan_non_heap_roots, |
4944 &buf_scan_non_heap_weak_roots, |
4950 &buf_scan_non_heap_weak_roots, |
4945 scan_strong_clds, |
4951 scan_strong_clds, |
4946 // Initial Mark handles the weak CLDs separately. |
4952 // Unloading Initial Marks handle the weak CLDs separately. |
4947 (during_im ? NULL : scan_weak_clds), |
4953 (trace_metadata ? NULL : scan_weak_clds), |
4948 scan_strong_code); |
4954 scan_strong_code); |
4949 |
4955 |
4950 // Now the CM ref_processor roots. |
4956 // Now the CM ref_processor roots. |
4951 if (!_process_strong_tasks->is_task_claimed(G1H_PS_refProcessor_oops_do)) { |
4957 if (!_process_strong_tasks->is_task_claimed(G1H_PS_refProcessor_oops_do)) { |
4952 // We need to treat the discovered reference lists of the |
4958 // We need to treat the discovered reference lists of the |
4954 // (which are added by the marking threads) on them live |
4960 // (which are added by the marking threads) on them live |
4955 // until they can be processed at the end of marking. |
4961 // until they can be processed at the end of marking. |
4956 ref_processor_cm()->weak_oops_do(&buf_scan_non_heap_roots); |
4962 ref_processor_cm()->weak_oops_do(&buf_scan_non_heap_roots); |
4957 } |
4963 } |
4958 |
4964 |
4959 if (during_im) { |
4965 if (trace_metadata) { |
4960 // Barrier to make sure all workers passed |
4966 // Barrier to make sure all workers passed |
4961 // the strong CLD and strong nmethods phases. |
4967 // the strong CLD and strong nmethods phases. |
4962 active_strong_roots_scope()->wait_until_all_workers_done_with_threads(n_par_threads()); |
4968 active_strong_roots_scope()->wait_until_all_workers_done_with_threads(n_par_threads()); |
4963 |
4969 |
4964 // Now take the complement of the strong CLDs. |
4970 // Now take the complement of the strong CLDs. |