< prev index next >

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

Print this page

        

@@ -151,24 +151,24 @@
   return nm->set_gc_data<ZNMethodData>(data);
 }
 
 ZNMethodTableEntry* ZNMethodTable::_table = NULL;
 size_t ZNMethodTable::_size = 0;
-ZLock ZNMethodTable::_iter_lock;
 ZNMethodTableEntry* ZNMethodTable::_iter_table = NULL;
 size_t ZNMethodTable::_iter_table_size = 0;
 ZArray<void*> ZNMethodTable::_iter_deferred_deletes;
 size_t ZNMethodTable::_nregistered = 0;
 size_t ZNMethodTable::_nunregistered = 0;
 volatile size_t ZNMethodTable::_claimed = 0;
 
 void ZNMethodTable::safe_delete(void* data) {
+  assert(CodeCache_lock->owned_by_self(), "Lock must be held");
+
   if (data == NULL) {
     return;
   }
 
-  ZLocker<ZLock> locker(&_iter_lock);
   if (_iter_table != NULL) {
     // Iteration in progress, defer delete
     _iter_deferred_deletes.add(data);
   } else {
     // Iteration not in progress, delete now

@@ -288,11 +288,12 @@
     index = next_index(index, size);
   }
 }
 
 void ZNMethodTable::rebuild(size_t new_size) {
-  ZLocker<ZLock> locker(&_iter_lock);
+  assert(CodeCache_lock->owned_by_self(), "Lock must be held");
+
   assert(is_power_of_2(new_size), "Invalid size");
 
   log_debug(gc, nmethod)("Rebuilding NMethod Table: "
                          SIZE_FORMAT "->" SIZE_FORMAT " entries, "
                          SIZE_FORMAT "(%.0lf%%->%.0lf%%) registered, "

@@ -473,22 +474,20 @@
   }
 }
 
 void ZNMethodTable::nmethod_entries_do_begin() {
   MutexLockerEx mu(CodeCache_lock, Mutex::_no_safepoint_check_flag);
-  ZLocker<ZLock> locker(&_iter_lock);
 
   // Prepare iteration
   _iter_table = _table;
   _iter_table_size = _size;
   _claimed = 0;
   assert(_iter_deferred_deletes.is_empty(), "Should be emtpy");
 }
 
 void ZNMethodTable::nmethod_entries_do_end() {
   MutexLockerEx mu(CodeCache_lock, Mutex::_no_safepoint_check_flag);
-  ZLocker<ZLock> locker(&_iter_lock);
 
   // Finish iteration
   if (_iter_table != _table) {
     delete [] _iter_table;
   }
< prev index next >