1276 log_info(gc, heap)("%s: " SIZE_FORMAT "K->" SIZE_FORMAT "K(" SIZE_FORMAT "K)",
1277 _young_gen->short_name(), young_prev_used / K, _young_gen->used() /K, _young_gen->capacity() /K);
1278 log_info(gc, heap)("%s: " SIZE_FORMAT "K->" SIZE_FORMAT "K(" SIZE_FORMAT "K)",
1279 _old_gen->short_name(), old_prev_used / K, _old_gen->used() /K, _old_gen->capacity() /K);
1280 }
1281
1282 class GenGCPrologueClosure: public GenCollectedHeap::GenClosure {
1283 private:
1284 bool _full;
1285 public:
1286 void do_generation(Generation* gen) {
1287 gen->gc_prologue(_full);
1288 }
1289 GenGCPrologueClosure(bool full) : _full(full) {};
1290 };
1291
1292 void GenCollectedHeap::gc_prologue(bool full) {
1293 assert(InlineCacheBuffer::is_empty(), "should have cleaned up ICBuffer");
1294
1295 // Fill TLAB's and such
1296 CollectedHeap::accumulate_statistics_all_tlabs();
1297 ensure_parsability(true); // retire TLABs
1298
1299 // Walk generations
1300 GenGCPrologueClosure blk(full);
1301 generation_iterate(&blk, false); // not old-to-young.
1302 };
1303
1304 class GenGCEpilogueClosure: public GenCollectedHeap::GenClosure {
1305 private:
1306 bool _full;
1307 public:
1308 void do_generation(Generation* gen) {
1309 gen->gc_epilogue(_full);
1310 }
1311 GenGCEpilogueClosure(bool full) : _full(full) {};
1312 };
1313
1314 void GenCollectedHeap::gc_epilogue(bool full) {
1315 #if COMPILER2_OR_JVMCI
1316 assert(DerivedPointerTable::is_empty(), "derived pointer present");
|
1276 log_info(gc, heap)("%s: " SIZE_FORMAT "K->" SIZE_FORMAT "K(" SIZE_FORMAT "K)",
1277 _young_gen->short_name(), young_prev_used / K, _young_gen->used() /K, _young_gen->capacity() /K);
1278 log_info(gc, heap)("%s: " SIZE_FORMAT "K->" SIZE_FORMAT "K(" SIZE_FORMAT "K)",
1279 _old_gen->short_name(), old_prev_used / K, _old_gen->used() /K, _old_gen->capacity() /K);
1280 }
1281
1282 class GenGCPrologueClosure: public GenCollectedHeap::GenClosure {
1283 private:
1284 bool _full;
1285 public:
1286 void do_generation(Generation* gen) {
1287 gen->gc_prologue(_full);
1288 }
1289 GenGCPrologueClosure(bool full) : _full(full) {};
1290 };
1291
1292 void GenCollectedHeap::gc_prologue(bool full) {
1293 assert(InlineCacheBuffer::is_empty(), "should have cleaned up ICBuffer");
1294
1295 // Fill TLAB's and such
1296 ensure_parsability(true); // retire TLABs
1297
1298 // Walk generations
1299 GenGCPrologueClosure blk(full);
1300 generation_iterate(&blk, false); // not old-to-young.
1301 };
1302
1303 class GenGCEpilogueClosure: public GenCollectedHeap::GenClosure {
1304 private:
1305 bool _full;
1306 public:
1307 void do_generation(Generation* gen) {
1308 gen->gc_epilogue(_full);
1309 }
1310 GenGCEpilogueClosure(bool full) : _full(full) {};
1311 };
1312
1313 void GenCollectedHeap::gc_epilogue(bool full) {
1314 #if COMPILER2_OR_JVMCI
1315 assert(DerivedPointerTable::is_empty(), "derived pointer present");
|