mirror of
https://github.com/openjdk/jdk.git
synced 2026-03-20 21:03:18 +00:00
8282381: Parallel: Remove unnecessary PCReferenceProcessor
Reviewed-by: kbarrett, tschatzl
This commit is contained in:
parent
ed3496e6c0
commit
12a822a287
@ -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);
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user