# HG changeset patch # Parent 299756f23687c6e13ae6f23ce854ac344c831b64 diff -r 299756f23687 -r 14e68eaae990 src/hotspot/share/gc/shenandoah/shenandoahHeap.cpp --- a/src/hotspot/share/gc/shenandoah/shenandoahHeap.cpp Wed Oct 02 16:08:02 2019 +0200 +++ b/src/hotspot/share/gc/shenandoah/shenandoahHeap.cpp Thu Oct 17 10:02:42 2019 +0200 @@ -2123,14 +2123,18 @@ } oop ShenandoahHeap::pin_object(JavaThread* thr, oop o) { - ShenandoahHeapLocker locker(lock()); - heap_region_containing(o)->make_pinned(); + if (!heap_region_containing(o)->is_pinned()) { + ShenandoahHeapLocker locker(lock()); + heap_region_containing(o)->make_pinned(); + } return o; } void ShenandoahHeap::unpin_object(JavaThread* thr, oop o) { - ShenandoahHeapLocker locker(lock()); - heap_region_containing(o)->make_unpinned(); + if (heap_region_containing(o)->is_pinned()) { + ShenandoahHeapLocker locker(lock()); + heap_region_containing(o)->make_unpinned(); + } } GCTimer* ShenandoahHeap::gc_timer() const {