OpenJDK / jdk / jdk
changeset 57547:f2dad2a448d0
8236732: Shenandoah: Stricter placement for oom-evac scopes
Reviewed-by: zgu
author | rkennke |
---|---|
date | Tue, 07 Jan 2020 21:53:52 +0100 |
parents | 33ce73818099 |
children | 1b28af1e2804 |
files | src/hotspot/share/gc/shenandoah/shenandoahBarrierSet.cpp src/hotspot/share/gc/shenandoah/shenandoahBarrierSetNMethod.cpp src/hotspot/share/gc/shenandoah/shenandoahCodeRoots.cpp src/hotspot/share/gc/shenandoah/shenandoahEvacOOMHandler.cpp src/hotspot/share/gc/shenandoah/shenandoahEvacOOMHandler.hpp src/hotspot/share/gc/shenandoah/shenandoahNMethod.cpp src/hotspot/share/gc/shenandoah/shenandoahParallelCleaning.cpp src/hotspot/share/gc/shenandoah/shenandoahTraversalGC.cpp src/hotspot/share/gc/shenandoah/shenandoahTraversalGC.inline.hpp |
diffstat | 9 files changed, 4 insertions(+), 33 deletions(-) [+] |
line wrap: on
line diff
--- a/src/hotspot/share/gc/shenandoah/shenandoahBarrierSet.cpp Tue Jan 07 19:57:11 2020 +0000 +++ b/src/hotspot/share/gc/shenandoah/shenandoahBarrierSet.cpp Tue Jan 07 21:53:52 2020 +0100 @@ -199,12 +199,8 @@ _heap->in_collection_set(obj) && obj == fwd) { Thread *t = Thread::current(); - if (t->is_GC_task_thread()) { - return _heap->evacuate_object(obj, t); - } else { - ShenandoahEvacOOMScope oom_evac_scope; - return _heap->evacuate_object(obj, t); - } + ShenandoahEvacOOMScope oom_evac_scope; + return _heap->evacuate_object(obj, t); } else { return fwd; }
--- a/src/hotspot/share/gc/shenandoah/shenandoahBarrierSetNMethod.cpp Tue Jan 07 19:57:11 2020 +0000 +++ b/src/hotspot/share/gc/shenandoah/shenandoahBarrierSetNMethod.cpp Tue Jan 07 21:53:52 2020 +0100 @@ -57,7 +57,6 @@ } // Heal oops and disarm - ShenandoahEvacOOMScope scope; ShenandoahNMethod::heal_nmethod(nm); ShenandoahNMethod::disarm_nmethod(nm); return true;
--- a/src/hotspot/share/gc/shenandoah/shenandoahCodeRoots.cpp Tue Jan 07 19:57:11 2020 +0000 +++ b/src/hotspot/share/gc/shenandoah/shenandoahCodeRoots.cpp Tue Jan 07 21:53:52 2020 +0100 @@ -215,7 +215,6 @@ if (nm->is_unloading()) { ShenandoahReentrantLocker locker(nm_data->lock()); - ShenandoahEvacOOMScope evac_scope; unlink(nm); return; } @@ -223,7 +222,6 @@ ShenandoahReentrantLocker locker(nm_data->lock()); // Heal oops and disarm - ShenandoahEvacOOMScope evac_scope; if (_heap->is_evacuation_in_progress()) { ShenandoahNMethod::heal_nmethod(nm); }
--- a/src/hotspot/share/gc/shenandoah/shenandoahEvacOOMHandler.cpp Tue Jan 07 19:57:11 2020 +0000 +++ b/src/hotspot/share/gc/shenandoah/shenandoahEvacOOMHandler.cpp Tue Jan 07 21:53:52 2020 +0100 @@ -123,11 +123,3 @@ ShenandoahEvacOOMScope::~ShenandoahEvacOOMScope() { ShenandoahHeap::heap()->leave_evacuation(); } - -ShenandoahEvacOOMScopeLeaver::ShenandoahEvacOOMScopeLeaver() { - ShenandoahHeap::heap()->leave_evacuation(); -} - -ShenandoahEvacOOMScopeLeaver::~ShenandoahEvacOOMScopeLeaver() { - ShenandoahHeap::heap()->enter_evacuation(); -}
--- a/src/hotspot/share/gc/shenandoah/shenandoahEvacOOMHandler.hpp Tue Jan 07 19:57:11 2020 +0000 +++ b/src/hotspot/share/gc/shenandoah/shenandoahEvacOOMHandler.hpp Tue Jan 07 21:53:52 2020 +0100 @@ -119,10 +119,4 @@ ~ShenandoahEvacOOMScope(); }; -class ShenandoahEvacOOMScopeLeaver : public StackObj { -public: - ShenandoahEvacOOMScopeLeaver(); - ~ShenandoahEvacOOMScopeLeaver(); -}; - #endif // SHARE_GC_SHENANDOAH_SHENANDOAHEVACOOMHANDLER_HPP
--- a/src/hotspot/share/gc/shenandoah/shenandoahNMethod.cpp Tue Jan 07 19:57:11 2020 +0000 +++ b/src/hotspot/share/gc/shenandoah/shenandoahNMethod.cpp Tue Jan 07 21:53:52 2020 +0100 @@ -174,6 +174,7 @@ assert(data != NULL, "Sanity"); assert(data->lock()->owned_by_self(), "Must hold the lock"); + ShenandoahEvacOOMScope evac_scope; ShenandoahEvacuateUpdateRootsClosure cl; data->oops_do(&cl, true /*fix relocation*/); }
--- a/src/hotspot/share/gc/shenandoah/shenandoahParallelCleaning.cpp Tue Jan 07 19:57:11 2020 +0000 +++ b/src/hotspot/share/gc/shenandoah/shenandoahParallelCleaning.cpp Tue Jan 07 21:53:52 2020 +0100 @@ -41,7 +41,6 @@ } void ShenandoahClassUnloadingTask::work(uint worker_id) { - ShenandoahEvacOOMScope scope; _code_cache_task.work(worker_id); // Clean all klasses that were not unloaded. // The weak metadata in klass doesn't need to be
--- a/src/hotspot/share/gc/shenandoah/shenandoahTraversalGC.cpp Tue Jan 07 19:57:11 2020 +0000 +++ b/src/hotspot/share/gc/shenandoah/shenandoahTraversalGC.cpp Tue Jan 07 21:53:52 2020 +0100 @@ -173,7 +173,6 @@ void work(uint worker_id) { ShenandoahParallelWorkerSession worker_session(worker_id); - ShenandoahEvacOOMScope oom_evac_scope; ShenandoahObjToScanQueueSet* queues = _heap->traversal_gc()->task_queues(); ShenandoahObjToScanQueue* q = queues->queue(worker_id); @@ -214,7 +213,6 @@ void work(uint worker_id) { ShenandoahConcurrentWorkerSession worker_session(worker_id); ShenandoahSuspendibleThreadSetJoiner stsj(ShenandoahSuspendibleWorkers); - ShenandoahEvacOOMScope oom_evac_scope; ShenandoahTraversalGC* traversal_gc = _heap->traversal_gc(); // Drain all outstanding work in queues. @@ -237,7 +235,6 @@ void work(uint worker_id) { ShenandoahParallelWorkerSession worker_session(worker_id); - ShenandoahEvacOOMScope oom_evac_scope; ShenandoahTraversalGC* traversal_gc = _heap->traversal_gc(); ShenandoahObjToScanQueueSet* queues = traversal_gc->task_queues(); @@ -542,7 +539,6 @@ if (work == 0) { // No more work, try to terminate - ShenandoahEvacOOMScopeLeaver oom_scope_leaver; ShenandoahSuspendibleThreadSetLeaver stsl(sts_yield && ShenandoahSuspendibleWorkers); ShenandoahTerminationTimingsTracker term_tracker(worker_id); ShenandoahTerminatorTerminator tt(_heap); @@ -811,7 +807,6 @@ template <class T> inline void do_oop_work(T* p) { - ShenandoahEvacOOMScope evac_scope; _traversal_gc->process_oop<T, false /* string dedup */, false /* degen */, true /* atomic update */>(p, _thread, _queue, _mark_context); } @@ -834,7 +829,6 @@ template <class T> inline void do_oop_work(T* p) { - ShenandoahEvacOOMScope evac_scope; _traversal_gc->process_oop<T, false /* string dedup */, true /* degen */, false /* atomic update */>(p, _thread, _queue, _mark_context); } @@ -861,7 +855,6 @@ assert(worker_id == 0, "The code below is single-threaded, only one worker is expected"); ShenandoahParallelWorkerSession worker_session(worker_id); ShenandoahSuspendibleThreadSetJoiner stsj(ShenandoahSuspendibleWorkers); - ShenandoahEvacOOMScope oom_evac_scope; ShenandoahHeap* sh = ShenandoahHeap::heap(); @@ -968,7 +961,6 @@ assert(sh->process_references(), "why else would we be here?"); shenandoah_assert_rp_isalive_installed(); - ShenandoahEvacOOMScope evac_scope; traversal_gc->main_loop(_worker_id, _terminator, false); if (_reset_terminator) { @@ -1010,7 +1002,6 @@ } void work(uint worker_id) { - ShenandoahEvacOOMScope oom_evac_scope; assert(ShenandoahSafepoint::is_at_shenandoah_safepoint(), "Must be at a safepoint"); ShenandoahHeap* heap = ShenandoahHeap::heap(); ShenandoahTraversalDrainMarkingStackClosure complete_gc(worker_id, _terminator);
--- a/src/hotspot/share/gc/shenandoah/shenandoahTraversalGC.inline.hpp Tue Jan 07 19:57:11 2020 +0000 +++ b/src/hotspot/share/gc/shenandoah/shenandoahTraversalGC.inline.hpp Tue Jan 07 21:53:52 2020 +0100 @@ -51,6 +51,7 @@ } else if (_heap->in_collection_set(obj)) { oop forw = ShenandoahBarrierSet::resolve_forwarded_not_null(obj); if (obj == forw) { + ShenandoahEvacOOMScope evac_scope; forw = _heap->evacuate_object(obj, thread); } shenandoah_assert_forwarded_except(p, obj, _heap->cancelled_gc());