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