mirror of
https://github.com/openjdk/jdk.git
synced 2025-09-19 18:44:38 +02:00
8223774: Shenandoah: Refactor ShenandoahRootProcessor and family
Reviewed-by: shade, rkennke
This commit is contained in:
parent
0a6207fe69
commit
3ebc657e40
7 changed files with 387 additions and 384 deletions
|
@ -25,22 +25,47 @@
|
|||
#define SHARE_GC_SHENANDOAH_SHENANDOAHROOTPROCESSOR_INLINE_HPP
|
||||
|
||||
#include "gc/shenandoah/shenandoahRootProcessor.hpp"
|
||||
#include "gc/shenandoah/shenandoahTimingTracker.hpp"
|
||||
|
||||
template <typename IsAlive>
|
||||
void ShenandoahRootProcessor::update_all_roots(OopClosure* oops,
|
||||
CLDClosure* clds,
|
||||
CodeBlobClosure* blobs,
|
||||
ThreadClosure* thread_cl,
|
||||
uint worker_id) {
|
||||
process_all_roots(oops, clds, blobs, thread_cl, worker_id);
|
||||
template <typename IsAlive, typename KeepAlive>
|
||||
void ShenandoahWeakRoots::oops_do(IsAlive* is_alive, KeepAlive* keep_alive, uint worker_id) {
|
||||
_task.work<IsAlive, KeepAlive>(worker_id, is_alive, keep_alive);
|
||||
}
|
||||
|
||||
IsAlive is_alive;
|
||||
_weak_processor_task.work<IsAlive, OopClosure>(worker_id, &is_alive, oops);
|
||||
_processed_weak_roots = true;
|
||||
template <typename ITR>
|
||||
ShenandoahCodeCacheRoots<ITR>::ShenandoahCodeCacheRoots() {
|
||||
nmethod::oops_do_marking_prologue();
|
||||
}
|
||||
|
||||
if (ShenandoahStringDedup::is_enabled()) {
|
||||
ShenandoahStringDedup::parallel_oops_do(&is_alive, oops, worker_id);
|
||||
template <typename ITR>
|
||||
void ShenandoahCodeCacheRoots<ITR>::code_blobs_do(CodeBlobClosure* blob_cl, uint worker_id) {
|
||||
ShenandoahWorkerTimings* worker_times = ShenandoahHeap::heap()->phase_timings()->worker_times();
|
||||
ShenandoahWorkerTimingsTracker timer(worker_times, ShenandoahPhaseTimings::CodeCacheRoots, worker_id);
|
||||
_coderoots_iterator.possibly_parallel_blobs_do(blob_cl);
|
||||
}
|
||||
|
||||
template <typename ITR>
|
||||
ShenandoahCodeCacheRoots<ITR>::~ShenandoahCodeCacheRoots() {
|
||||
nmethod::oops_do_marking_epilogue();
|
||||
}
|
||||
|
||||
template <typename IsAlive, typename KeepAlive>
|
||||
void ShenandoahRootUpdater::roots_do(uint worker_id, IsAlive* is_alive, KeepAlive* keep_alive) {
|
||||
CodeBlobToOopClosure update_blobs(keep_alive, CodeBlobToOopClosure::FixRelocations);
|
||||
CLDToOopClosure clds(keep_alive, ClassLoaderData::_claim_strong);
|
||||
CLDToOopClosure* weak_clds = ShenandoahHeap::heap()->unload_classes() ? NULL : &clds;
|
||||
|
||||
_serial_roots.oops_do(keep_alive, worker_id);
|
||||
|
||||
_thread_roots.oops_do(keep_alive, NULL, worker_id);
|
||||
_cld_roots.clds_do(&clds, weak_clds, worker_id);
|
||||
|
||||
if(_update_code_cache) {
|
||||
_code_roots.code_blobs_do(&update_blobs, worker_id);
|
||||
}
|
||||
|
||||
_weak_roots.oops_do<IsAlive, KeepAlive>(is_alive, keep_alive, worker_id);
|
||||
_dedup_roots.oops_do(is_alive, keep_alive, worker_id);
|
||||
}
|
||||
|
||||
#endif // SHARE_GC_SHENANDOAH_SHENANDOAHROOTPROCESSOR_INLINE_HPP
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue