src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp

Print this page
rev 5823 : [mq]: useBufferingOopClosuresInCodeCache

*** 5102,5120 **** double ext_roots_start = os::elapsedTime(); double closure_app_time_sec = 0.0; BufferingOopClosure buf_scan_non_heap_roots(scan_non_heap_roots); ! assert(so & SO_AllCodeCache || scan_rs != NULL, "must scan code roots somehow"); ! // Walk the code cache/strong code roots w/o buffering, because StarTask ! // cannot handle unaligned oop locations. ! CodeBlobToOopClosure eager_scan_code_roots(scan_non_heap_roots, true /* do_marking */); process_strong_roots(false, // no scoping; this is parallel code so, &buf_scan_non_heap_roots, ! &eager_scan_code_roots, scan_klasses ); // Now the CM ref_processor roots. if (!_process_strong_tasks->is_task_claimed(G1H_PS_refProcessor_oops_do)) { --- 5102,5117 ---- double ext_roots_start = os::elapsedTime(); double closure_app_time_sec = 0.0; BufferingOopClosure buf_scan_non_heap_roots(scan_non_heap_roots); ! CodeBlobToOopClosure scan_code_roots(&buf_scan_non_heap_roots, true /* do_marking */); process_strong_roots(false, // no scoping; this is parallel code so, &buf_scan_non_heap_roots, ! &scan_code_roots, scan_klasses ); // Now the CM ref_processor roots. if (!_process_strong_tasks->is_task_claimed(G1H_PS_refProcessor_oops_do)) {
*** 5165,5174 **** --- 5162,5172 ---- } g1_policy()->phase_times()->record_strong_code_root_mark_time(worker_i, mark_strong_code_roots_ms); // Now scan the complement of the collection set. if (scan_rs != NULL) { + CodeBlobToOopClosure eager_scan_code_roots(scan_non_heap_roots, true /* do_marking */); g1_rem_set()->oops_into_collection_set_do(scan_rs, &eager_scan_code_roots, worker_i); } _process_strong_tasks->all_tasks_completed(); }