src/share/vm/oops/instanceKlass.cpp

changeset 5180
6c138b9851fb
parent 5178
b7fa10a3a69a
child 5307
e0c9a1d29eb4
     1.1 --- a/src/share/vm/oops/instanceKlass.cpp	Fri May 24 10:21:12 2013 -0700
     1.2 +++ b/src/share/vm/oops/instanceKlass.cpp	Fri May 24 17:36:12 2013 -0700
     1.3 @@ -2320,10 +2320,15 @@
     1.4      FreeHeap(jmeths);
     1.5    }
     1.6  
     1.7 -  MemberNameTable* mnt = member_names();
     1.8 -  if (mnt != NULL) {
     1.9 -    delete mnt;
    1.10 -    set_member_names(NULL);
    1.11 +  // Deallocate MemberNameTable
    1.12 +  {
    1.13 +    Mutex* lock_or_null = SafepointSynchronize::is_at_safepoint() ? NULL : MemberNameTable_lock;
    1.14 +    MutexLockerEx ml(lock_or_null, Mutex::_no_safepoint_check_flag);
    1.15 +    MemberNameTable* mnt = member_names();
    1.16 +    if (mnt != NULL) {
    1.17 +      delete mnt;
    1.18 +      set_member_names(NULL);
    1.19 +    }
    1.20    }
    1.21  
    1.22    int* indices = methods_cached_itable_indices_acquire();

mercurial