mirror of
https://github.com/openjdk/jdk.git
synced 2025-08-27 23:04:50 +02:00
8246612: Shenandoah: add timing tracking to ShenandoahStringDedupRoots
Reviewed-by: shade
This commit is contained in:
parent
9cadf1a004
commit
1b59097077
3 changed files with 18 additions and 5 deletions
|
@ -1663,7 +1663,8 @@ public:
|
||||||
ShenandoahConcurrentRootsEvacUpdateTask(ShenandoahPhaseTimings::Phase phase) :
|
ShenandoahConcurrentRootsEvacUpdateTask(ShenandoahPhaseTimings::Phase phase) :
|
||||||
AbstractGangTask("Shenandoah Evacuate/Update Concurrent Strong Roots Task"),
|
AbstractGangTask("Shenandoah Evacuate/Update Concurrent Strong Roots Task"),
|
||||||
_vm_roots(phase),
|
_vm_roots(phase),
|
||||||
_cld_roots(phase, ShenandoahHeap::heap()->workers()->active_workers()) {}
|
_cld_roots(phase, ShenandoahHeap::heap()->workers()->active_workers()),
|
||||||
|
_dedup_roots(phase) {}
|
||||||
|
|
||||||
void work(uint worker_id) {
|
void work(uint worker_id) {
|
||||||
ShenandoahConcurrentWorkerSession worker_session(worker_id);
|
ShenandoahConcurrentWorkerSession worker_session(worker_id);
|
||||||
|
|
|
@ -149,7 +149,8 @@ void ShenandoahStringDedupRoots::oops_do(BoolObjectClosure* is_alive, OopClosure
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
ShenandoahConcurrentStringDedupRoots::ShenandoahConcurrentStringDedupRoots() {
|
ShenandoahConcurrentStringDedupRoots::ShenandoahConcurrentStringDedupRoots(ShenandoahPhaseTimings::Phase phase) :
|
||||||
|
_phase(phase) {
|
||||||
if (ShenandoahStringDedup::is_enabled()) {
|
if (ShenandoahStringDedup::is_enabled()) {
|
||||||
StringDedupTable_lock->lock_without_safepoint_check();
|
StringDedupTable_lock->lock_without_safepoint_check();
|
||||||
StringDedupQueue_lock->lock_without_safepoint_check();
|
StringDedupQueue_lock->lock_without_safepoint_check();
|
||||||
|
@ -171,9 +172,16 @@ void ShenandoahConcurrentStringDedupRoots::oops_do(BoolObjectClosure* is_alive,
|
||||||
assert_locked_or_safepoint_weak(StringDedupTable_lock);
|
assert_locked_or_safepoint_weak(StringDedupTable_lock);
|
||||||
|
|
||||||
StringDedupUnlinkOrOopsDoClosure sd_cl(is_alive, keep_alive);
|
StringDedupUnlinkOrOopsDoClosure sd_cl(is_alive, keep_alive);
|
||||||
|
{
|
||||||
|
ShenandoahWorkerTimingsTracker x(_phase, ShenandoahPhaseTimings::StringDedupQueueRoots, worker_id);
|
||||||
StringDedupQueue::unlink_or_oops_do(&sd_cl);
|
StringDedupQueue::unlink_or_oops_do(&sd_cl);
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
ShenandoahWorkerTimingsTracker x(_phase, ShenandoahPhaseTimings::StringDedupTableRoots, worker_id);
|
||||||
StringDedupTable::unlink_or_oops_do(&sd_cl, worker_id);
|
StringDedupTable::unlink_or_oops_do(&sd_cl, worker_id);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
ShenandoahCodeCacheRoots::ShenandoahCodeCacheRoots(ShenandoahPhaseTimings::Phase phase) : _phase(phase) {
|
ShenandoahCodeCacheRoots::ShenandoahCodeCacheRoots(ShenandoahPhaseTimings::Phase phase) : _phase(phase) {
|
||||||
|
@ -360,6 +368,7 @@ ShenandoahHeapIterationRootScanner::ShenandoahHeapIterationRootScanner() :
|
||||||
_cld_roots(ShenandoahPhaseTimings::heap_iteration_roots, 1),
|
_cld_roots(ShenandoahPhaseTimings::heap_iteration_roots, 1),
|
||||||
_serial_weak_roots(ShenandoahPhaseTimings::heap_iteration_roots),
|
_serial_weak_roots(ShenandoahPhaseTimings::heap_iteration_roots),
|
||||||
_weak_roots(ShenandoahPhaseTimings::heap_iteration_roots),
|
_weak_roots(ShenandoahPhaseTimings::heap_iteration_roots),
|
||||||
|
_dedup_roots(ShenandoahPhaseTimings::heap_iteration_roots),
|
||||||
_code_roots(ShenandoahPhaseTimings::heap_iteration_roots) {
|
_code_roots(ShenandoahPhaseTimings::heap_iteration_roots) {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -205,8 +205,11 @@ public:
|
||||||
};
|
};
|
||||||
|
|
||||||
class ShenandoahConcurrentStringDedupRoots {
|
class ShenandoahConcurrentStringDedupRoots {
|
||||||
|
private:
|
||||||
|
ShenandoahPhaseTimings::Phase _phase;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
ShenandoahConcurrentStringDedupRoots();
|
ShenandoahConcurrentStringDedupRoots(ShenandoahPhaseTimings::Phase phase);
|
||||||
~ShenandoahConcurrentStringDedupRoots();
|
~ShenandoahConcurrentStringDedupRoots();
|
||||||
|
|
||||||
void oops_do(BoolObjectClosure* is_alive, OopClosure* keep_alive, uint worker_id);
|
void oops_do(BoolObjectClosure* is_alive, OopClosure* keep_alive, uint worker_id);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue