Mercurial > hg > graal-compiler
comparison src/share/vm/oops/instanceKlass.cpp @ 10347:6c138b9851fb
8013945: CMS fatal error: must own lock MemberNameTable_lock
Summary: The "delete mnt" needs to grab MemberNameTable_lock if !SafepointSynchronize::is_at_safepoint()
Reviewed-by: sla, mgerdin, dholmes, jmasa
Contributed-by: serguei.spitsyn@oracle.com
author | sspitsyn |
---|---|
date | Fri, 24 May 2013 17:36:12 -0700 |
parents | b7fa10a3a69a |
children | 836a62f43af9 e0c9a1d29eb4 |
comparison
equal
deleted
inserted
replaced
10346:cd83e1d98347 | 10347:6c138b9851fb |
---|---|
2318 if (jmeths != (jmethodID*)NULL) { | 2318 if (jmeths != (jmethodID*)NULL) { |
2319 release_set_methods_jmethod_ids(NULL); | 2319 release_set_methods_jmethod_ids(NULL); |
2320 FreeHeap(jmeths); | 2320 FreeHeap(jmeths); |
2321 } | 2321 } |
2322 | 2322 |
2323 MemberNameTable* mnt = member_names(); | 2323 // Deallocate MemberNameTable |
2324 if (mnt != NULL) { | 2324 { |
2325 delete mnt; | 2325 Mutex* lock_or_null = SafepointSynchronize::is_at_safepoint() ? NULL : MemberNameTable_lock; |
2326 set_member_names(NULL); | 2326 MutexLockerEx ml(lock_or_null, Mutex::_no_safepoint_check_flag); |
2327 MemberNameTable* mnt = member_names(); | |
2328 if (mnt != NULL) { | |
2329 delete mnt; | |
2330 set_member_names(NULL); | |
2331 } | |
2327 } | 2332 } |
2328 | 2333 |
2329 int* indices = methods_cached_itable_indices_acquire(); | 2334 int* indices = methods_cached_itable_indices_acquire(); |
2330 if (indices != (int*)NULL) { | 2335 if (indices != (int*)NULL) { |
2331 release_set_methods_cached_itable_indices(NULL); | 2336 release_set_methods_cached_itable_indices(NULL); |