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

changeset 9928
d2c2cd90513e
parent 9858
b985cbb00e68
equal deleted inserted replaced
9927:b273df69fbfe 9928:d2c2cd90513e
344 } 344 }
345 345
346 template <typename Mspace> 346 template <typename Mspace>
347 inline bool ReleaseOp<Mspace>::process(typename Mspace::Type* t) { 347 inline bool ReleaseOp<Mspace>::process(typename Mspace::Type* t) {
348 assert(t != NULL, "invariant"); 348 assert(t != NULL, "invariant");
349 if (t->retired() || t->try_acquire(_thread)) { 349 // assumes some means of exclusive access to t
350 if (t->transient()) { 350 if (t->transient()) {
351 if (_release_full) { 351 if (_release_full) {
352 mspace_release_full_critical(t, _mspace); 352 mspace_release_full_critical(t, _mspace);
353 } else { 353 } else {
354 mspace_release_free_critical(t, _mspace); 354 mspace_release_free_critical(t, _mspace);
355 }
356 return true;
357 } 355 }
358 t->reinitialize(); 356 return true;
359 assert(t->empty(), "invariant"); 357 }
360 t->release(); // publish 358 t->reinitialize();
361 } 359 assert(t->empty(), "invariant");
360 assert(!t->retired(), "invariant");
361 t->release(); // publish
362 return true; 362 return true;
363 } 363 }
364 364
365 #ifdef ASSERT 365 #ifdef ASSERT
366 template <typename T> 366 template <typename T>

mercurial