8282381: Parallel: Remove unnecessary PCReferenceProcessor

Reviewed-by: kbarrett, tschatzl
This commit is contained in:
Albert Mingkun Yang 2022-03-02 09:12:20 +00:00
parent ed3496e6c0
commit 12a822a287

View File

@ -845,39 +845,15 @@ PSParallelCompact::IsAliveClosure PSParallelCompact::_is_alive_closure;
bool PSParallelCompact::IsAliveClosure::do_object_b(oop p) { return mark_bitmap()->is_marked(p); }
class PCReferenceProcessor: public ReferenceProcessor {
public:
PCReferenceProcessor(
BoolObjectClosure* is_subject_to_discovery,
BoolObjectClosure* is_alive_non_header) :
ReferenceProcessor(is_subject_to_discovery,
ParallelGCThreads, // mt processing degree
ParallelGCThreads, // mt discovery degree
false, // concurrent_discovery
is_alive_non_header) {}
template<typename T> bool discover(oop obj, ReferenceType type) {
T* referent_addr = (T*) java_lang_ref_Reference::referent_addr_raw(obj);
T heap_oop = RawAccess<>::oop_load(referent_addr);
oop referent = CompressedOops::decode_not_null(heap_oop);
return PSParallelCompact::mark_bitmap()->is_unmarked(referent)
&& ReferenceProcessor::discover_reference(obj, type);
}
virtual bool discover_reference(oop obj, ReferenceType type) {
if (UseCompressedOops) {
return discover<narrowOop>(obj, type);
} else {
return discover<oop>(obj, type);
}
}
};
void PSParallelCompact::post_initialize() {
ParallelScavengeHeap* heap = ParallelScavengeHeap::heap();
_span_based_discoverer.set_span(heap->reserved_region());
_ref_processor =
new PCReferenceProcessor(&_span_based_discoverer,
&_is_alive_closure); // non-header is alive closure
new ReferenceProcessor(&_span_based_discoverer,
ParallelGCThreads, // mt processing degree
ParallelGCThreads, // mt discovery degree
false, // concurrent_discovery
&_is_alive_closure); // non-header is alive closure
_counters = new CollectorCounters("Parallel full collection pauses", 1);