1040 ParallelScavengeHeap* heap = ParallelScavengeHeap::heap();
1041 bool eden_empty = eden_space->is_empty();
1042
1043 // Update heap occupancy information which is used as input to the soft ref
1044 // clearing policy at the next gc.
1045 Universe::update_heap_info_at_gc();
1046
1047 bool young_gen_empty = eden_empty && from_space->is_empty() &&
1048 to_space->is_empty();
1049
1050 PSCardTable* ct = heap->card_table();
1051 MemRegion old_mr = heap->old_gen()->reserved();
1052 if (young_gen_empty) {
1053 ct->clear(MemRegion(old_mr.start(), old_mr.end()));
1054 } else {
1055 ct->invalidate(MemRegion(old_mr.start(), old_mr.end()));
1056 }
1057
1058 // Delete metaspaces for unloaded class loaders and clean up loader_data graph
1059 ClassLoaderDataGraph::purge();
1060 MetaspaceUtils::verify_metrics();
1061
1062 heap->prune_scavengable_nmethods();
1063
1064 #if COMPILER2_OR_JVMCI
1065 DerivedPointerTable::update_pointers();
1066 #endif
1067
1068 if (ZapUnusedHeapArea) {
1069 heap->gen_mangle_unused_area();
1070 }
1071
1072 // Signal that we have completed a visit to all live objects.
1073 Universe::heap()->record_whole_heap_examined_timestamp();
1074 }
1075
1076 HeapWord*
1077 PSParallelCompact::compute_dense_prefix_via_density(const SpaceId id,
1078 bool maximum_compaction)
1079 {
1080 const size_t region_size = ParallelCompactData::RegionSize;
|
1040 ParallelScavengeHeap* heap = ParallelScavengeHeap::heap();
1041 bool eden_empty = eden_space->is_empty();
1042
1043 // Update heap occupancy information which is used as input to the soft ref
1044 // clearing policy at the next gc.
1045 Universe::update_heap_info_at_gc();
1046
1047 bool young_gen_empty = eden_empty && from_space->is_empty() &&
1048 to_space->is_empty();
1049
1050 PSCardTable* ct = heap->card_table();
1051 MemRegion old_mr = heap->old_gen()->reserved();
1052 if (young_gen_empty) {
1053 ct->clear(MemRegion(old_mr.start(), old_mr.end()));
1054 } else {
1055 ct->invalidate(MemRegion(old_mr.start(), old_mr.end()));
1056 }
1057
1058 // Delete metaspaces for unloaded class loaders and clean up loader_data graph
1059 ClassLoaderDataGraph::purge();
1060 DEBUG_ONLY(MetaspaceUtils::verify(false);)
1061
1062 heap->prune_scavengable_nmethods();
1063
1064 #if COMPILER2_OR_JVMCI
1065 DerivedPointerTable::update_pointers();
1066 #endif
1067
1068 if (ZapUnusedHeapArea) {
1069 heap->gen_mangle_unused_area();
1070 }
1071
1072 // Signal that we have completed a visit to all live objects.
1073 Universe::heap()->record_whole_heap_examined_timestamp();
1074 }
1075
1076 HeapWord*
1077 PSParallelCompact::compute_dense_prefix_via_density(const SpaceId id,
1078 bool maximum_compaction)
1079 {
1080 const size_t region_size = ParallelCompactData::RegionSize;
|