1208 // Fill TLAB's and such
1209 CollectedHeap::accumulate_statistics_all_tlabs();
1210 ensure_parsability(true); // retire TLABs
1211
1212 // Walk generations
1213 GenGCPrologueClosure blk(full);
1214 generation_iterate(&blk, false); // not old-to-young.
1215 };
1216
1217 class GenGCEpilogueClosure: public GenCollectedHeap::GenClosure {
1218 private:
1219 bool _full;
1220 public:
1221 void do_generation(Generation* gen) {
1222 gen->gc_epilogue(_full);
1223 }
1224 GenGCEpilogueClosure(bool full) : _full(full) {};
1225 };
1226
1227 void GenCollectedHeap::gc_epilogue(bool full) {
1228 #ifdef COMPILER2
1229 assert(DerivedPointerTable::is_empty(), "derived pointer present");
1230 size_t actual_gap = pointer_delta((HeapWord*) (max_uintx-3), *(end_addr()));
1231 guarantee(actual_gap > (size_t)FastAllocateSizeLimit, "inline allocation wraps");
1232 #endif /* COMPILER2 */
1233
1234 resize_all_tlabs();
1235
1236 GenGCEpilogueClosure blk(full);
1237 generation_iterate(&blk, false); // not old-to-young.
1238
1239 if (!CleanChunkPoolAsync) {
1240 Chunk::clean_chunk_pool();
1241 }
1242
1243 MetaspaceCounters::update_performance_counters();
1244 CompressedClassSpaceCounters::update_performance_counters();
1245
1246 always_do_update_barrier = UseConcMarkSweepGC;
1247 };
1248
|
1208 // Fill TLAB's and such
1209 CollectedHeap::accumulate_statistics_all_tlabs();
1210 ensure_parsability(true); // retire TLABs
1211
1212 // Walk generations
1213 GenGCPrologueClosure blk(full);
1214 generation_iterate(&blk, false); // not old-to-young.
1215 };
1216
1217 class GenGCEpilogueClosure: public GenCollectedHeap::GenClosure {
1218 private:
1219 bool _full;
1220 public:
1221 void do_generation(Generation* gen) {
1222 gen->gc_epilogue(_full);
1223 }
1224 GenGCEpilogueClosure(bool full) : _full(full) {};
1225 };
1226
1227 void GenCollectedHeap::gc_epilogue(bool full) {
1228 #if defined(COMPILER2) || INCLUDE_JVMCI
1229 assert(DerivedPointerTable::is_empty(), "derived pointer present");
1230 size_t actual_gap = pointer_delta((HeapWord*) (max_uintx-3), *(end_addr()));
1231 guarantee(actual_gap > (size_t)FastAllocateSizeLimit, "inline allocation wraps");
1232 #endif /* COMPILER2 */
1233
1234 resize_all_tlabs();
1235
1236 GenGCEpilogueClosure blk(full);
1237 generation_iterate(&blk, false); // not old-to-young.
1238
1239 if (!CleanChunkPoolAsync) {
1240 Chunk::clean_chunk_pool();
1241 }
1242
1243 MetaspaceCounters::update_performance_counters();
1244 CompressedClassSpaceCounters::update_performance_counters();
1245
1246 always_do_update_barrier = UseConcMarkSweepGC;
1247 };
1248
|