1020
1021 ModRefBarrierSet* modBS = barrier_set_cast<ModRefBarrierSet>(heap->barrier_set());
1022 MemRegion old_mr = heap->old_gen()->reserved();
1023 if (young_gen_empty) {
1024 modBS->clear(MemRegion(old_mr.start(), old_mr.end()));
1025 } else {
1026 modBS->invalidate(MemRegion(old_mr.start(), old_mr.end()));
1027 }
1028
1029 // Delete metaspaces for unloaded class loaders and clean up loader_data graph
1030 ClassLoaderDataGraph::purge();
1031 MetaspaceAux::verify_metrics();
1032
1033 CodeCache::gc_epilogue();
1034 JvmtiExport::gc_epilogue();
1035
1036 #if defined(COMPILER2) || INCLUDE_JVMCI
1037 DerivedPointerTable::update_pointers();
1038 #endif
1039
1040 ref_processor()->enqueue_discovered_references(NULL);
1041
1042 if (ZapUnusedHeapArea) {
1043 heap->gen_mangle_unused_area();
1044 }
1045
1046 // Update time of last GC
1047 reset_millis_since_last_gc();
1048 }
1049
1050 HeapWord*
1051 PSParallelCompact::compute_dense_prefix_via_density(const SpaceId id,
1052 bool maximum_compaction)
1053 {
1054 const size_t region_size = ParallelCompactData::RegionSize;
1055 const ParallelCompactData& sd = summary_data();
1056
1057 const MutableSpace* const space = _space_info[id].space();
1058 HeapWord* const top_aligned_up = sd.region_align_up(space->top());
1059 const RegionData* const beg_cp = sd.addr_to_region_ptr(space->bottom());
1060 const RegionData* const end_cp = sd.addr_to_region_ptr(top_aligned_up);
|
1020
1021 ModRefBarrierSet* modBS = barrier_set_cast<ModRefBarrierSet>(heap->barrier_set());
1022 MemRegion old_mr = heap->old_gen()->reserved();
1023 if (young_gen_empty) {
1024 modBS->clear(MemRegion(old_mr.start(), old_mr.end()));
1025 } else {
1026 modBS->invalidate(MemRegion(old_mr.start(), old_mr.end()));
1027 }
1028
1029 // Delete metaspaces for unloaded class loaders and clean up loader_data graph
1030 ClassLoaderDataGraph::purge();
1031 MetaspaceAux::verify_metrics();
1032
1033 CodeCache::gc_epilogue();
1034 JvmtiExport::gc_epilogue();
1035
1036 #if defined(COMPILER2) || INCLUDE_JVMCI
1037 DerivedPointerTable::update_pointers();
1038 #endif
1039
1040 ref_processor()->enqueue_discovered_references(NULL, &_gc_timer);
1041
1042 if (ZapUnusedHeapArea) {
1043 heap->gen_mangle_unused_area();
1044 }
1045
1046 // Update time of last GC
1047 reset_millis_since_last_gc();
1048 }
1049
1050 HeapWord*
1051 PSParallelCompact::compute_dense_prefix_via_density(const SpaceId id,
1052 bool maximum_compaction)
1053 {
1054 const size_t region_size = ParallelCompactData::RegionSize;
1055 const ParallelCompactData& sd = summary_data();
1056
1057 const MutableSpace* const space = _space_info[id].space();
1058 HeapWord* const top_aligned_up = sd.region_align_up(space->top());
1059 const RegionData* const beg_cp = sd.addr_to_region_ptr(space->bottom());
1060 const RegionData* const end_cp = sd.addr_to_region_ptr(top_aligned_up);
|