< 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,23 +344,23 @@
 }
 
 template <typename Mspace>
 inline bool ReleaseOp<Mspace>::process(typename Mspace::Type* t) {
   assert(t != NULL, "invariant");
-  if (t->retired() || t->try_acquire(_thread)) {
+  // 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 >