src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp
Print this page
rev 5823 : imported patch useBufferingOopClosuresInCodeCache
*** 5105,5115 ****
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,
--- 5105,5115 ----
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(&buf_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,
*** 5166,5175 ****
--- 5166,5176 ----
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) {
g1_rem_set()->oops_into_collection_set_do(scan_rs, &eager_scan_code_roots, worker_i);
+ buf_scan_non_heap_roots.done();
}
_process_strong_tasks->all_tasks_completed();
}
void