diff -r a5f5e680ea32 -r ec7d6d8effc7 src/hotspot/share/jfr/recorder/storage/jfrMemorySpace.inline.hpp --- a/src/hotspot/share/jfr/recorder/storage/jfrMemorySpace.inline.hpp Tue May 21 13:06:52 2019 -0400 +++ b/src/hotspot/share/jfr/recorder/storage/jfrMemorySpace.inline.hpp Tue May 21 20:53:27 2019 +0200 @@ -346,19 +346,19 @@ template inline bool ReleaseOp::process(typename Mspace::Type* t) { assert(t != NULL, "invariant"); - if (t->retired() || t->try_acquire(_thread)) { - if (t->transient()) { - if (_release_full) { - mspace_release_full_critical(t, _mspace); - } else { - mspace_release_free_critical(t, _mspace); - } - return true; + // assumes some means of exclusive access to t + if (t->transient()) { + if (_release_full) { + mspace_release_full_critical(t, _mspace); + } else { + mspace_release_free_critical(t, _mspace); } - t->reinitialize(); - assert(t->empty(), "invariant"); - t->release(); // publish + return true; } + t->reinitialize(); + assert(t->empty(), "invariant"); + assert(!t->retired(), "invariant"); + t->release(); // publish return true; }