mirror of
https://github.com/openjdk/jdk.git
synced 2026-03-12 00:43:14 +00:00
8256688: Shenandoah: Lock rank inversion after JDK-8212879
Reviewed-by: rkennke
This commit is contained in:
parent
aeba9259b2
commit
266dea06ec
@ -1991,9 +1991,13 @@ public:
|
||||
MutexLocker mu(CodeCache_lock, Mutex::_no_safepoint_check_flag);
|
||||
_nmethod_itr.nmethods_do_begin();
|
||||
}
|
||||
|
||||
_dedup_roots.prologue();
|
||||
}
|
||||
|
||||
~ShenandoahConcurrentWeakRootsEvacUpdateTask() {
|
||||
_dedup_roots.epilogue();
|
||||
|
||||
if (_concurrent_class_unloading) {
|
||||
MutexLocker mu(CodeCache_lock, Mutex::_no_safepoint_check_flag);
|
||||
_nmethod_itr.nmethods_do_end();
|
||||
|
||||
@ -78,6 +78,9 @@ void ShenandoahStringDedupRoots::oops_do(BoolObjectClosure* is_alive, OopClosure
|
||||
|
||||
ShenandoahConcurrentStringDedupRoots::ShenandoahConcurrentStringDedupRoots(ShenandoahPhaseTimings::Phase phase) :
|
||||
_phase(phase) {
|
||||
}
|
||||
|
||||
void ShenandoahConcurrentStringDedupRoots::prologue() {
|
||||
if (ShenandoahStringDedup::is_enabled()) {
|
||||
StringDedupTable_lock->lock_without_safepoint_check();
|
||||
StringDedupQueue_lock->lock_without_safepoint_check();
|
||||
@ -85,7 +88,7 @@ ShenandoahConcurrentStringDedupRoots::ShenandoahConcurrentStringDedupRoots(Shena
|
||||
}
|
||||
}
|
||||
|
||||
ShenandoahConcurrentStringDedupRoots::~ShenandoahConcurrentStringDedupRoots() {
|
||||
void ShenandoahConcurrentStringDedupRoots::epilogue() {
|
||||
if (ShenandoahStringDedup::is_enabled()) {
|
||||
StringDedup::gc_epilogue();
|
||||
StringDedupQueue_lock->unlock();
|
||||
@ -223,8 +226,13 @@ ShenandoahHeapIterationRootScanner::ShenandoahHeapIterationRootScanner() :
|
||||
_weak_roots(ShenandoahPhaseTimings::heap_iteration_roots),
|
||||
_dedup_roots(ShenandoahPhaseTimings::heap_iteration_roots),
|
||||
_code_roots(ShenandoahPhaseTimings::heap_iteration_roots) {
|
||||
_dedup_roots.prologue();
|
||||
}
|
||||
|
||||
ShenandoahHeapIterationRootScanner::~ShenandoahHeapIterationRootScanner() {
|
||||
_dedup_roots.epilogue();
|
||||
}
|
||||
|
||||
void ShenandoahHeapIterationRootScanner::roots_do(OopClosure* oops) {
|
||||
assert(Thread::current()->is_VM_thread(), "Only by VM thread");
|
||||
// Must use _claim_none to avoid interfering with concurrent CLDG iteration
|
||||
|
||||
@ -93,7 +93,9 @@ private:
|
||||
|
||||
public:
|
||||
ShenandoahConcurrentStringDedupRoots(ShenandoahPhaseTimings::Phase phase);
|
||||
~ShenandoahConcurrentStringDedupRoots();
|
||||
|
||||
void prologue();
|
||||
void epilogue();
|
||||
|
||||
void oops_do(BoolObjectClosure* is_alive, OopClosure* keep_alive, uint worker_id);
|
||||
};
|
||||
@ -191,6 +193,7 @@ private:
|
||||
|
||||
public:
|
||||
ShenandoahHeapIterationRootScanner();
|
||||
~ShenandoahHeapIterationRootScanner();
|
||||
|
||||
void roots_do(OopClosure* cl);
|
||||
};
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user