< prev index next >

src/hotspot/share/gc/shenandoah/shenandoahRootProcessor.cpp

Print this page
rev 55921 : 8229213: Shenandoah: Allow VM global oop storage to be processed concurrently

*** 50,62 **** ShenandoahWorkerTimingsTracker timer(worker_times, _phase, worker_id); _oops_do(cl); } } ! // Default the second argument for SD::oops_do. static void system_dictionary_oops_do(OopClosure* cl) { ! SystemDictionary::oops_do(cl); } ShenandoahSerialRoots::ShenandoahSerialRoots() : _universe_root(&Universe::oops_do, ShenandoahPhaseTimings::UniverseRoots), _object_synchronizer_root(&ObjectSynchronizer::oops_do, ShenandoahPhaseTimings::ObjectSynchronizerRoots), --- 50,62 ---- ShenandoahWorkerTimingsTracker timer(worker_times, _phase, worker_id); _oops_do(cl); } } ! // Overwrite the second argument for SD::oops_do, don't include vm global oop storage. static void system_dictionary_oops_do(OopClosure* cl) { ! SystemDictionary::oops_do(cl, false); } ShenandoahSerialRoots::ShenandoahSerialRoots() : _universe_root(&Universe::oops_do, ShenandoahPhaseTimings::UniverseRoots), _object_synchronizer_root(&ObjectSynchronizer::oops_do, ShenandoahPhaseTimings::ObjectSynchronizerRoots),
*** 171,181 **** _serial_roots.oops_do(oops, worker_id); _serial_weak_roots.weak_oops_do(oops, worker_id); if (_include_concurrent_roots) { CLDToOopClosure clds(oops, ClassLoaderData::_claim_strong); ! _jni_roots.oops_do<OopClosure>(oops, worker_id); _cld_roots.cld_do(&clds, worker_id); _weak_roots.oops_do<OopClosure>(oops, worker_id); } _thread_roots.oops_do(oops, NULL, worker_id); --- 171,181 ---- _serial_roots.oops_do(oops, worker_id); _serial_weak_roots.weak_oops_do(oops, worker_id); if (_include_concurrent_roots) { CLDToOopClosure clds(oops, ClassLoaderData::_claim_strong); ! _vm_roots.oops_do<OopClosure>(oops, worker_id); _cld_roots.cld_do(&clds, worker_id); _weak_roots.oops_do<OopClosure>(oops, worker_id); } _thread_roots.oops_do(oops, NULL, worker_id);
*** 200,210 **** CodeBlobToOopClosure adjust_code_closure(oops, CodeBlobToOopClosure::FixRelocations); CLDToOopClosure adjust_cld_closure(oops, ClassLoaderData::_claim_strong); AlwaysTrueClosure always_true; _serial_roots.oops_do(oops, worker_id); ! _jni_roots.oops_do(oops, worker_id); _thread_roots.oops_do(oops, NULL, worker_id); _cld_roots.cld_do(&adjust_cld_closure, worker_id); _code_roots.code_blobs_do(&adjust_code_closure, worker_id); --- 200,210 ---- CodeBlobToOopClosure adjust_code_closure(oops, CodeBlobToOopClosure::FixRelocations); CLDToOopClosure adjust_cld_closure(oops, ClassLoaderData::_claim_strong); AlwaysTrueClosure always_true; _serial_roots.oops_do(oops, worker_id); ! _vm_roots.oops_do(oops, worker_id); _thread_roots.oops_do(oops, NULL, worker_id); _cld_roots.cld_do(&adjust_cld_closure, worker_id); _code_roots.code_blobs_do(&adjust_code_closure, worker_id);
*** 225,235 **** MarkingCodeBlobClosure code(oops, !CodeBlobToOopClosure::FixRelocations); ShenandoahParallelOopsDoThreadClosure tc_cl(oops, &code, NULL); ResourceMark rm; _serial_roots.oops_do(oops, 0); ! _jni_roots.oops_do(oops, 0); _cld_roots.cld_do(&clds, 0); _thread_roots.threads_do(&tc_cl, 0); _code_roots.code_blobs_do(&code, 0); } --- 225,235 ---- MarkingCodeBlobClosure code(oops, !CodeBlobToOopClosure::FixRelocations); ShenandoahParallelOopsDoThreadClosure tc_cl(oops, &code, NULL); ResourceMark rm; _serial_roots.oops_do(oops, 0); ! _vm_roots.oops_do(oops, 0); _cld_roots.cld_do(&clds, 0); _thread_roots.threads_do(&tc_cl, 0); _code_roots.code_blobs_do(&code, 0); }
*** 240,248 **** MarkingCodeBlobClosure code(oops, !CodeBlobToOopClosure::FixRelocations); ShenandoahParallelOopsDoThreadClosure tc_cl(oops, &code, NULL); ResourceMark rm; _serial_roots.oops_do(oops, 0); ! _jni_roots.oops_do(oops, 0); _cld_roots.always_strong_cld_do(&clds, 0); _thread_roots.threads_do(&tc_cl, 0); } --- 240,248 ---- MarkingCodeBlobClosure code(oops, !CodeBlobToOopClosure::FixRelocations); ShenandoahParallelOopsDoThreadClosure tc_cl(oops, &code, NULL); ResourceMark rm; _serial_roots.oops_do(oops, 0); ! _vm_roots.oops_do(oops, 0); _cld_roots.always_strong_cld_do(&clds, 0); _thread_roots.threads_do(&tc_cl, 0); }
< prev index next >