8323993: Serial: Refactor gc_prologue and gc_epilogue

Reviewed-by: stefank, ehelin
This commit is contained in:
Albert Mingkun Yang 2024-01-18 15:22:56 +00:00
parent aeb304b29e
commit 8e534598b5
5 changed files with 8 additions and 38 deletions

View File

@ -226,7 +226,7 @@ class DefNewGeneration: public Generation {
HeapWord* par_allocate(size_t word_size, bool is_tlab);
virtual void gc_epilogue(bool full);
void gc_epilogue(bool full);
// Save the tops for eden, from, and to
virtual void record_spaces_top();

View File

@ -224,14 +224,6 @@ class Generation: public CHeapObj<mtGC> {
// still unsuccessful, return "null".
virtual HeapWord* expand_and_allocate(size_t word_size, bool is_tlab) = 0;
// Some generations may require some cleanup or preparation actions before
// allowing a collection. The default is to do nothing.
virtual void gc_prologue(bool full) {}
// Some generations may require some cleanup actions after a collection.
// The default is to do nothing.
virtual void gc_epilogue(bool full) {}
// Save the high water marks for the used space in a generation.
virtual void record_spaces_top() {}

View File

@ -1052,35 +1052,13 @@ void SerialHeap::print_heap_change(const PreGenGCValues& pre_gc_values) const {
MetaspaceUtils::print_metaspace_change(pre_gc_values.metaspace_sizes());
}
class GenGCPrologueClosure: public SerialHeap::GenClosure {
private:
bool _full;
public:
void do_generation(Generation* gen) {
gen->gc_prologue(_full);
}
GenGCPrologueClosure(bool full) : _full(full) {};
};
void SerialHeap::gc_prologue(bool full) {
assert(InlineCacheBuffer::is_empty(), "should have cleaned up ICBuffer");
// Fill TLAB's and such
ensure_parsability(true); // retire TLABs
// Walk generations
GenGCPrologueClosure blk(full);
generation_iterate(&blk, false); // not old-to-young.
};
class GenGCEpilogueClosure: public SerialHeap::GenClosure {
private:
bool _full;
public:
void do_generation(Generation* gen) {
gen->gc_epilogue(_full);
}
GenGCEpilogueClosure(bool full) : _full(full) {};
_old_gen->gc_prologue();
};
void SerialHeap::gc_epilogue(bool full) {
@ -1090,8 +1068,8 @@ void SerialHeap::gc_epilogue(bool full) {
resize_all_tlabs();
GenGCEpilogueClosure blk(full);
generation_iterate(&blk, false); // not old-to-young.
_young_gen->gc_epilogue(full);
_old_gen->gc_epilogue();
MetaspaceCounters::update_performance_counters();
};

View File

@ -331,7 +331,7 @@ TenuredGeneration::TenuredGeneration(ReservedSpace rs,
_the_space, _gen_counters);
}
void TenuredGeneration::gc_prologue(bool full) {
void TenuredGeneration::gc_prologue() {
_capacity_at_prologue = capacity();
_used_at_prologue = used();
}
@ -485,7 +485,7 @@ bool TenuredGeneration::no_allocs_since_save_marks() {
return _the_space->saved_mark_at_top();
}
void TenuredGeneration::gc_epilogue(bool full) {
void TenuredGeneration::gc_epilogue() {
// update the generation and space performance counters
update_counters();
if (ZapUnusedHeapArea) {

View File

@ -140,8 +140,8 @@ class TenuredGeneration: public Generation {
HeapWord* expand_and_allocate(size_t size, bool is_tlab);
virtual void gc_prologue(bool full);
virtual void gc_epilogue(bool full);
void gc_prologue();
void gc_epilogue();
bool should_collect(bool full,
size_t word_size,