< prev index next >
src/hotspot/share/gc/g1/g1CollectedHeap.cpp
Print this page
rev 49826 : imported patch 6672778-partial-queue-trimming
rev 49827 : imported patch 6672778-refactoring
rev 49828 : imported patch 6672778-stefanj-review
rev 49831 : imported patch 8201492-properly-implement-non-contiguous-reference-processing
rev 49832 : imported patch 8201640-use-ref-processor-members-directly
rev 49833 : imported patch 8202018-move-card-table-clear
@@ -4039,16 +4039,21 @@
(os::elapsedTime() - end_par_time_sec) * 1000.0;
phase_times->record_code_root_fixup_time(code_root_fixup_time_ms);
}
void G1CollectedHeap::post_evacuate_collection_set(EvacuationInfo& evacuation_info, G1ParScanThreadStateSet* per_thread_states) {
+ // Also cleans the card table from temporary duplicate detection information used
+ // during UpdateRS/ScanRS.
+ g1_rem_set()->cleanup_after_oops_into_collection_set_do();
+
// Process any discovered reference objects - we have
// to do this _before_ we retire the GC alloc regions
// as we may have to copy some 'reachable' referent
// objects (and their reachable sub-graphs) that were
// not copied during the pause.
process_discovered_references(per_thread_states);
+ enqueue_discovered_references(per_thread_states);
G1STWIsAliveClosure is_alive(this);
G1KeepAliveClosure keep_alive(this);
{
@@ -4067,12 +4072,10 @@
double fixup_time_ms = (os::elapsedTime() - fixup_start) * 1000.0;
g1_policy()->phase_times()->record_string_dedup_fixup_time(fixup_time_ms);
}
- g1_rem_set()->cleanup_after_oops_into_collection_set_do();
-
if (evacuation_failed()) {
restore_after_evac_failure();
// Reset the G1EvacuationFailureALot counters and flags
// Note: the values are reset only when an actual
@@ -4080,19 +4083,10 @@
NOT_PRODUCT(reset_evacuation_should_fail();)
}
_preserved_marks_set.assert_empty();
- // Enqueue any remaining references remaining on the STW
- // reference processor's discovered lists. We need to do
- // this after the card table is cleaned (and verified) as
- // the act of enqueueing entries on to the pending list
- // will log these updates (and dirty their associated
- // cards). We need these updates logged to update any
- // RSets.
- enqueue_discovered_references(per_thread_states);
-
_allocator->release_gc_alloc_regions(evacuation_info);
merge_per_thread_state_info(per_thread_states);
// Reset and re-enable the hot card cache.
< prev index next >