< prev index next >

src/share/vm/jfr/recorder/storage/jfrMemorySpace.inline.hpp

Print this page
rev 9053 : 8220293: Deadlock in JFR string pool
Reviewed-by: rehn, egahlin

*** 344,366 **** } template <typename Mspace> inline bool ReleaseOp<Mspace>::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; } t->reinitialize(); assert(t->empty(), "invariant"); t->release(); // publish - } return true; } #ifdef ASSERT template <typename T> --- 344,366 ---- } template <typename Mspace> inline bool ReleaseOp<Mspace>::process(typename Mspace::Type* t) { assert(t != NULL, "invariant"); ! // 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); } return true; } t->reinitialize(); assert(t->empty(), "invariant"); + assert(!t->retired(), "invariant"); t->release(); // publish return true; } #ifdef ASSERT template <typename T>
< prev index next >