diff -r 3cfab71d6c81 -r 5caa1d5f74c1 src/hotspot/share/gc/g1/g1RootProcessor.cpp --- a/src/hotspot/share/gc/g1/g1RootProcessor.cpp Mon Oct 30 08:34:54 2017 +0100 +++ b/src/hotspot/share/gc/g1/g1RootProcessor.cpp Tue Nov 14 11:33:23 2017 +0100 @@ -37,6 +37,7 @@ #include "gc/g1/g1RootClosures.hpp" #include "gc/g1/g1RootProcessor.hpp" #include "gc/g1/heapRegion.inline.hpp" +#include "gc/shared/weakProcessor.hpp" #include "memory/allocation.inline.hpp" #include "runtime/mutex.hpp" #include "services/management.hpp" @@ -319,6 +320,16 @@ } } +void G1RootProcessor::process_full_gc_weak_roots(OopClosure* oops) { + if (!_process_strong_tasks.is_task_claimed(G1RP_PS_refProcessor_oops_do)) { + _g1h->ref_processor_stw()->weak_oops_do(oops); + } + + if (!_process_strong_tasks.is_task_claimed(G1RP_PS_weakProcessor_oops_do)) { + WeakProcessor::oops_do(oops); + } +} + uint G1RootProcessor::n_workers() const { return _srs.n_threads(); }