hotspot/src/share/vm/oops/instanceKlass.cpp
changeset 17830 6bb6155c908a
parent 17828 17131ab4b3b5
child 18439 725ce18186b3
--- a/hotspot/src/share/vm/oops/instanceKlass.cpp	Fri May 24 10:21:12 2013 -0700
+++ b/hotspot/src/share/vm/oops/instanceKlass.cpp	Fri May 24 17:36:12 2013 -0700
@@ -2320,10 +2320,15 @@
     FreeHeap(jmeths);
   }
 
-  MemberNameTable* mnt = member_names();
-  if (mnt != NULL) {
-    delete mnt;
-    set_member_names(NULL);
+  // Deallocate MemberNameTable
+  {
+    Mutex* lock_or_null = SafepointSynchronize::is_at_safepoint() ? NULL : MemberNameTable_lock;
+    MutexLockerEx ml(lock_or_null, Mutex::_no_safepoint_check_flag);
+    MemberNameTable* mnt = member_names();
+    if (mnt != NULL) {
+      delete mnt;
+      set_member_names(NULL);
+    }
   }
 
   int* indices = methods_cached_itable_indices_acquire();