< 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 >