< prev index next >

src/hotspot/share/gc/z/zNMethodData.cpp

  * questions.
  */
 
 #include "precompiled.hpp"
 #include "gc/z/zLock.inline.hpp"
-#include "gc/z/zNMethodAllocator.hpp"
 #include "gc/z/zNMethodData.hpp"
 #include "memory/allocation.hpp"
 #include "runtime/atomic.hpp"
 #include "runtime/orderAccess.hpp"
 #include "utilities/align.hpp"
 #include "utilities/debug.hpp"
+#include "utilities/globalCounter.inline.hpp"
 #include "utilities/growableArray.hpp"
 
 size_t ZNMethodDataOops::header_size() {
   const size_t size = sizeof(ZNMethodDataOops);
   assert(is_aligned(size, sizeof(oop*)), "Header misaligned");

@@ -40,16 +40,16 ZNMethodDataOops* ZNMethodDataOops::create(const GrowableArray<oop*>& immediates, bool has_non_immediates) { // Allocate memory for the ZNMethodDataOops object // plus the immediate oop* array that follows right after. const size_t size = ZNMethodDataOops::header_size() + (sizeof(oop*) * immediates.length()); - void* const mem = ZNMethodAllocator::allocate(size); + void* const mem = NEW_C_HEAP_ARRAY(uint8_t, size, mtGC); return ::new (mem) ZNMethodDataOops(immediates, has_non_immediates); } void ZNMethodDataOops::destroy(ZNMethodDataOops* oops) { - ZNMethodAllocator::free(oops); + FREE_C_HEAP_ARRAY(uint8_t, oops); } ZNMethodDataOops::ZNMethodDataOops(const GrowableArray<oop*>& immediates, bool has_non_immediates) : _nimmediates(immediates.length()), _has_non_immediates(has_non_immediates) {
@@ -79,11 +79,11 ZNMethodData::ZNMethodData() : _lock(), _oops(NULL) {} ZNMethodData::~ZNMethodData() { - ZNMethodAllocator::free(_oops); + ZNMethodDataOops::destroy(_oops); } ZReentrantLock* ZNMethodData::lock() { return &_lock; }
@@ -91,7 +91,11 ZNMethodDataOops* ZNMethodData::oops() const { return OrderAccess::load_acquire(&_oops); } ZNMethodDataOops* ZNMethodData::swap_oops(ZNMethodDataOops* new_oops) { - return Atomic::xchg(new_oops, &_oops); + ZNMethodDataOops* const oops = Atomic::xchg(new_oops, &_oops); + if (oops != NULL) { + GlobalCounter::write_synchronize(); + } + return oops; }
< prev index next >