< prev index next >

src/hotspot/share/gc/parallel/psParallelCompact.cpp

Print this page
rev 60538 : imported patch jep387-all.patch


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;


< prev index next >